Date: 2026-04-07
Scope: web/secure-landing/ plus the managed browser boundary that fronts the FastAPI portal/orchestrator surfaces
Track the managed frontdoor as its own roadmap lane now that the FastAPI
portal/orchestrator baseline is already re-baselined in
docs/architecture/PORTAL_ORCHESTRATOR_ROADMAP.md.
This roadmap is intentionally narrower than a full shell rewrite. The next
delivery horizon has already shipped; FastAPI, the root portal.html template,
and the web/secure-landing/portal-src/ source/deferred modules that produce
the bundled portal assets remain the operator-shell system of record. This
document now serves as a status and validation record rather than an active
feature-phase plan.
The following slices are already shipped and should remain closed:
- PR
#1328established the thin managed frontdoor, server-side backend secret injection, SQLite-backed sessions, CSRF protection, and browser-facing/v1/*proxying. - PR
#1330made managed access fail closed behind verified Cloudflare Access JWT validation and introducedmanaged_unavailablebehavior. - PR
#1333and PR#1337refined the branded login/media shell and wired the approved DNA brand assets into the managed entry path. - PR
#1335split the browser entry into/,/login, and/portalwhile keeping the FastAPI console contract intact. - PR
#1368, merged on April 7, 2026, replaced the inline homepage with the server-rendered verifier-backed Dynamic Neural Access landing page. - PR
#1369, merged on April 7, 2026, added the same-origin/portal/assets/*proxy as an interim availability bridge for the operator shell assets.
- SQLite-backed sessions remain intentionally single-instance for this roadmap
horizon. Deployments that explicitly declare
multi_instanceorephemeral_runtimesession scaling now fail readiness until a real external session store exists. - Managed browser validation still depends on live operator/browser smoke in addition to the now-normalized contract suite.
- Rebaselined against
mainon April 7, 2026. - Earlier roadmap drafts treated PR 3 as the next implementation target, but the repo now already contains the PR 1 through PR 4 deliverables listed below.
- Shipped on
main. - Public Make targets now cover frontdoor contract and browser validation.
- GitHub Actions change classification treats
web/secure-landing/**, frontdoor smoke scripts, and secure-frontdoor docs as runtime-affecting. - Frontdoor CI runs
npm ci,npm test, andnpm run buildwhen the managed frontdoor changes.
- Shipped on
main. GET /healthznow reports structured checks for backend connectivity, Access configuration, user-source availability, and session-store readiness.- The route returns
503when required production checks fail while preserving the top-levelokcontract. - Local bypass and
direct_debugbehavior remain confined to explicit development flows.
- Shipped on
main. - Managed frontdoor failures are normalized across
/portal,/portal/bootstrap,/portal/assets/*,/portal/video/*, and/v1/*through the sharedmanaged_surface_failureaudit taxonomy. - Operator-visible recovery now distinguishes:
- authentication failure
- access outage
- configuration failure
- upstream unavailability
/portal/bootstrapreturns additivereason,message, andretryablefields so the browser shell can keep privileged actions fail-closed while surfacing recovery guidance./v1/*preserves the existing error envelope shape while adding normalizederror.details.reasonand retryability metadata for auth/config/upstream failures.
- Shipped on
main. - The portal asset allowlist is now a checked-in manifest shared by the frontdoor proxy and contract tests.
- Drift detection fails when FastAPI portal-shell asset references are no longer covered by the checked-in managed manifest.
- FastAPI, the root
portal.htmltemplate, and theportal-src/source and deferred modules that produce the bundled portal assets remain the operator-shell system of record for this roadmap horizon.
- Implemented in PR
#1375. TP_FRONTDOOR_SESSION_SCALING_MODEnow makes the supported SQLite session posture explicit./healthzfails closed when operators declaremulti_instanceorephemeral_runtimescaling without a real external session store.- Local launcher and frontdoor quickstart now pin the supported
single_instanceposture.
- With PR
#1375implemented, no queued phases remain for this roadmap horizon. - The only UX-adjacent close-out lane was rerunning managed frontdoor
contract/build/browser validation under the enforced Node
22.xruntime. - That close-out lane was completed on April 9, 2026:
make test-frontdoor-contractpassed under Node22.22.2;make validate-frontdoor-browserpassed under the same Node22.22.2environment.
- Any local runtime outside the package contract
>=22 <23is an unsupported toolchain posture, not a frontdoor product regression.
make test-frontdoor-contractmake validate-frontdoor-browsermake test-orchestrator-contract- CI preflight classifies frontdoor changes as runtime-affecting
- FastAPI portal-shell asset references remain covered by the checked-in portal asset manifest
/healthzexposes the explicitsession_scalingreadiness check and fails when unsupported multi-instance or ephemeral-runtime modes are declared- Local
make test-frontdoor-contractverification must run under Node 22.x; the frontdoor package explicitly rejects unsupported runtimes outside>=22 <23.
- Replatforming the operator shell into Next.js
- Changing FastAPI
/v1/*semantics - Reopening the closed March 1, 2026 FastAPI/orchestrator roadmap
- Promoting a shared session backend before a real deployment requirement exists