Architecture
jhf-lantern is the route-aware mixed human-facing control surface for Helpifyr stack operators.
Canonical Doc Chain
Read the live shell truth in this order:
docs/ARCHITECTURE.mddocs/LANTERN_MVP.mddocs/HUMAN_INTERFACE_MODEL.mddocs/NAVIGATION_REGISTRY.mddocs/MODULE_FEATURES.mdPLAN_LANTERN_PLAN_STUDIO_PHASE0_5.mdfor the bounded Plan Studio exception
PLAN_LANTERN_GUI.md remains a historical Phase-0 baseline and migration record. It is not the sole live shell Source of Truth after the route-aware mixed cutover.
v0 Import Normalization
Import source:
https://github.com/JaddaHelpifyr/v0-lantern-implementation-plan- source commit:
82bdad3e50f87607df36ce5154e323c160e2e880(GitHub PR #1 head)
Adopted from v0:
- Vite + TanStack + React structure patterns
- fixture/live adapter split pattern
- shell/state decomposition pattern
Not adopted:
- Next.js and App Router artifacts
- non-canonical top-level routes
- uncontrolled write/action surfaces outside admitted owner truth
Route-Aware Boundaries
- Lantern owns no truth.
- Lantern owns no direct policy decisions.
- Browser traffic must flow only through the Lantern BFF under
/api/v1/lantern/*. - Lantern may consume bounded admitted initiator or HITL lanes, but only when owner truth explicitly publishes them.
- Lantern owns no direct execution, approval, or materialization truth.
- Browser traffic must flow only through the Lantern BFF under
/api/v1/lantern/*. - Pattern owns Mission Control truth.
- Lantern renders Mission Control UX but does not replace Pattern truth.
Current live posture on July 16, 2026:
- shell phase:
route_aware_mixed - shell copy and fallback posture must not collapse
route_aware_mixedback into a coarse globalread_onlyclaim - Plan Studio: admitted Phase 0.5 lane surface
- Inbox / approvals: admitted HITL or readback-only owner-decision posture depending on published owner packet truth
- other routes remain a mix of admitted readback, restricted, preview, and future-contract posture
Runtime Shape
lantern-ui: static frontend containerlantern-bff: read-only API aggregator and view-model adapter- live target:
https://<internal-runtime-redacted> - live host: owner-supplied runtime host
Upstream Owners
- Fabric: truth, contracts, events, gates
- Pattern: work graph, mission control truth
- Dobby: learning and recommendation posture
- Heddle: identity, session, claims, OIDC
- Spindle: business context
- Warp/OpenClaw: execution and run state
- Tenter: voice runtime
Voice / Telephony / WebRTC Addendum
Ownership
jhf-tenterowns voice and conversation runtime.- Asterisk/FreePBX/SIP/WebRTC connectors are telephony runtime surfaces.
jhf-lanternis only the human-facing control surface.- Lantern owns no voice truth and stores no raw audio unless an explicit Fabric retention contract exists.
Phase 0
Lantern may expose admitted readback or future_contract voice surfaces only:
- Asterisk/FreePBX status
- SIP/WebRTC gateway status
- registered extensions/agents
- active calls/sessions
- failed calls
- Tenter voice pipeline status
- STT/TTS provider status
- transcript/evidence links
- recording/retention policy
- permission state
- source marker (
fixture/live/future_contract)
No uncontrolled call start, call answer, recording control, or push-to-talk is allowed on the current shell.
Phase 1+
Voice actions require:
- Heddle-authenticated user/session
- Fabric admission
- Pattern work item when workflow-related
- Tenter execution contract
- Keystore
secret_reffor SIP/provider credentials - explicit consent when audio/recording is involved
- audit event and evidence link
Canonical Runtime Routes
//quality/work/agents/evidence/operations/settings
Release Eligibility Posture
- Public release-surface admission is bounded by
contracts/admission/release_surface_inventory_v1.json. - Current repository history posture remains
pending_history_scanincontracts/admission/repository_publication_history_posture_v1.json. - Active owner blocker:
JaddaHelpifyr/jhf-lantern#382. - Repo-owned history evidence now runs through
python scripts/verify_repository_history_posture.pyand currently provesfiltered_publication_required. - Live host coordinates stay in operator-only runtime runbooks and are excluded from public release-surface admission.
License: AGPLv3 Project: https://helpifyr.com