Closes SPRINT_20260421_005 FE-ROUTES-003. Each surface from the 2026-04-21 traversal now carries a workspace-level h1, one-line summary, and a primary action that reflects the owning workflow (not generic shell copy). Surfaces updated: - / → Release Command Center → Review pending approvals - /environments/overview → Environments → Add environment - /ops/policy/packs → Release Policies → Create pack - /security/advisory-sources → Advisory Sources → Add advisory source - /triage/artifacts → Triage Artifacts → Triage next finding - /evidence/exports → Evidence Exports → Stella bundle export - /ops/operations/feeds-airgap → Feeds & Airgap → Import airgap bundle - /ops/operations/doctor → Platform Diagnostics → Run quick diagnostic - /setup/integrations → Integrations → Add Integration - /setup/tenant-branding → Tenant & Branding → editor Apply Changes CTA Copy + markup inline on each component (no new shared PageHeader component — identity pass, not a refactor). Tests: new src/Web/StellaOps.Web/src/app/features/_identity/ fe-routes-003-page-identity.spec.ts — 31 Vitest assertions, 31/31 pass. Existing integration-hub.component.spec.ts (9/9) confirms the renamed "Add Integration" primary action still holds. Traversal map (docs/qa/console-ui-traversal-map.md) flipped the 10 surfaces from "weak" to "resolved by FE-ROUTES-003" with 1-line evidence per surface. Unblocks SPRINT_20260421_006 and SPRINT_20260421_007 which gate their behavioral QA on this stable-identity contract. Sprint SPRINT_20260421_005 archived — all 4 tasks DONE (FE-ROUTES-001/002 criteria boxes also flipped to reflect their already-DONE execution-log state). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
9.4 KiB
Console UI Traversal Map
Purpose
- Translate the approved "release with confidence" product framing into the current Stella Ops Console surface.
- Give QA and implementers a route-by-route map of what must be traversed, what is only an alias, and what already looks weak or broken.
- Keep the next pass grounded in runtime truth, not in older navigation specs or planned-only screen inventories.
Evidence Base
- Product framing:
docs/product/release-with-confidence-product-card.md - Route ownership:
src/Web/StellaOps.Web/src/app/app.routes.ts - Sidebar ownership model:
src/Web/StellaOps.Web/src/app/core/navigation/navigation.config.ts - Runtime evidence: authenticated local-source sweep captured on 2026-04-21 in
src/Web/StellaOps.Web/output/playwright/console-surface-scan.json
Product Standard
- Stella is not a generic dashboard collection. The Console exists to answer: what is being released, why it is safe enough, what evidence backs that decision, and what action an operator should take next.
- A Console page is only acceptable when it preserves release/evidence context, makes ownership clear, and exposes truthful next actions.
- Hidden uncertainty, ambiguous aliases, and page shells with weak identity are product defects because they increase operator error under release pressure.
Canonical Surface
| Family | Canonical entry routes | Tabs or route variants observed | What the page family must prove |
|---|---|---|---|
| Home | / |
none captured in the sweep | Daily operating state and the first truthful next action. |
| Release Control | /environments/overview, /releases, /releases/deployments, /releases/bundles, /releases/promotions, /releases/approvals |
/releases/approvals tabs: Pending, Approved, Rejected, Expiring, My Team |
Release identity, promotion state, approval state, and bundle truth. |
| Release Policies | /ops/policy/packs, /ops/policy/governance, /ops/policy/vex, /ops/policy/simulation |
Shared policy tabs: Release Policies, Governance, VEX & Exceptions, Simulation, Audit. Additional VEX and Simulation local tabs are visible. | Policy gates, VEX conflict handling, simulation, and auditability of release decisions. |
| Security | /security/images, /security/risk, /security/advisory-sources, /triage/artifacts |
/security/images/* tabs: Summary, Findings, SBOM, Reachability, VEX, Evidence |
Security posture must stay attached to release truth and evidence, not float as disconnected findings. |
| Evidence | /evidence/overview, /evidence/audit-log, /evidence/verify-replay, /evidence/exports, /evidence/capsules |
Audit-style tabs observed on /evidence/overview and /evidence/capsules: All Events, Timeline, Correlations, Exports, Bundles. Replay tabs observed on /evidence/verify-replay. |
Evidence lookup, replay, export, and proof packaging for audit and re-verification. |
| Ops | /ops/operations/jobengine, /ops/operations/feeds-airgap, /ops/operations/doctor, /ops/scripts, /ops/operations/audit |
JobEngine tabs: Runs, Schedules, Workers. Audit tabs: All Events, Timeline, Correlations, Exports, Bundles | Operator workflows, execution health, feed freshness, and background control-plane truth. |
| Setup and Admin | /setup, /setup/integrations, /setup/trust-signing, /setup/identity-providers, /setup/tenant-branding, /console-admin/* |
Trust Signing tabs: Signing Keys, Trusted Issuers, Certificates, Audit | Identity, trust, integrations, branding, and admin controls that let the Console be safely operated. |
Current Route And Handoff Findings
Stable, route-backed surfaces from the 2026-04-21 pass
/releases,/releases/deployments,/releases/bundles,/releases/promotions, and/releases/approvalsall rendered with stable titles and page-specific headings./ops/policy/governance,/ops/policy/vex, and/ops/policy/simulationrendered as a coherent tab family and visibly cross-linked to sibling routes./security/images/summaryrendered with the expected security tabs and explicit empty-state guidance telling the operator to select a release./evidence/verify-replayrendered a distinct replay surface with headings for replay request and determinism verification./ops/operations/jobengine,/ops/operations/audit,/ops/scripts,/setup,/setup/trust-signing, and/setup/identity-providersrendered distinct route-backed surfaces with recognizable titles.
Alias and ownership behavior that QA must treat carefully
/security/imagescanonicalizes to/security/images/summary. That is acceptable if the page identity remains "Image Security" and the tabs preserve the security evidence context./setup/trust-signingcanonicalizes to/setup/trust-signing/keys. That is acceptable if the page identity remains trust and signing, not just "keys"./evidence/overviewcurrently lands on/ops/operations/audit./evidence/capsulescurrently lands on/ops/operations/audit?tab=all-events.- Those Evidence-to-Audit collapses may be intentional consolidation, but today they weaken the standalone Evidence surface and must be reviewed against product intent.
Weak identity surfaces — resolved by FE-ROUTES-003 (2026-04-22)
Every surface called out in the 2026-04-21 traversal as "weak identity" has been promoted to stable
page identity under SPRINT_20260421_005_FE_console_route_identity_and_redirect_truth.md
(task FE-ROUTES-003). Each page now carries a workspace heading, a one-line summary explaining what
the surface is for, and a primary action keyed to the owning workflow. Evidence lines below reference
the component that owns the new identity markup and the workflow the primary action triggers.
/->DashboardV3Component— h1 "Release Command Center" + release-oriented summary; primary action "Review pending approvals" links to/releases/approvals./environments/overview->EnvironmentsCommandComponent— h1 "Environments" + readiness summary; primary action "Add environment" links to/ops/platform-setup./ops/policy/packs->PolicyPackShellComponent— h1 "Release Policies" + author/test/activate summary; primary action "Create pack" on the pack list (hidden inside a specific pack)./security/advisory-sources->AdvisorySourcesComponent— h1 "Advisory Sources" + freshness / trust / impact summary; primary action "Add advisory source" links to/setup/integrationswith the advisory connector filter./triage/artifacts->TriageArtifactsComponent— h1 "Triage Artifacts" + lane-first summary; primary action "Triage next finding" opens the evidence-first triage workspace for the top row./evidence/exports->ExportCenterComponent— h1 "Evidence Exports" + export-bundle workflow summary; primary action is the Stella bundle export button underevidence-exports-primary-action./ops/operations/feeds-airgap->PlatformFeedsAirgapPageComponent— h1 "Feeds & Airgap" + airgap-sync summary; primary action "Import airgap bundle" jumps operators into the bundle import workflow./ops/operations/doctor->DoctorDashboardComponent— h1 "Platform Diagnostics" + drift / health summary; primary action renamed from "Quick" to "Run quick diagnostic" so the workflow is explicit./setup/integrations->IntegrationHubComponent— new h1 "Integrations" + connector-scope summary in the main panel header; primary action "Add Integration" links to the registry create flow./setup/tenant-branding->BrandingSettingsPageComponent— wrapper now exposes a dedicated h1 "Tenant & Branding" with a tenant-ownership summary above the reusedBrandingEditorComponent, which retains its "Apply Changes" primary workflow CTA.
Retained automation: each surface is covered by src/Web/StellaOps.Web/src/app/features/_identity/fe-routes-003-page-identity.spec.ts,
which asserts heading copy, summary tokens, and primary-action markers so downstream regressions
surface in focused Vitest runs.
Confirmed route defect
curl -k -I https://127.0.0.1:4400/console-admin/tenantsreturned302 Foundwithlocation: https://127.0.0.1/console-admin/tenants.- The redirect drops the dev-server port. Browser navigation then fails with
net::ERR_CONNECTION_REFUSED. - Treat
/console-admin/*and/console/admin/*as an active route defect in local-source verification until the redirect/base-url behavior is fixed.
Harness caveat that affects future QA
- The comment in
src/Web/StellaOps.Web/e2e/fixtures/auth.fixture.tssays the app readswindow.__stellaopsTestSessionduring bootstrap. - In the current app, the auth guard trusts
AuthSessionStore, which restores from the persisted session keysstellaops.auth.session.full,stellaops.auth.session.info, and thestellaops:wasEverAuthlatch. - Local-source QA should seed the real persisted session keys. Do not rely on the outdated fixture comment as the source of truth.
Stale spec caveat
- Older E2E navigation expectations still assume a standalone Evidence sidebar group.
- The current navigation config intentionally routes Evidence contextually and consolidates audit entry under Ops.
- Any future UI regression claims must be judged against the current navigation contract, not against the retired sidebar grouping.
Next-Pass Traversal Order
- Release Control and Release Policies
- Security
- Evidence
- Ops
- Setup and Admin
This order matches product risk. Release truth and policy truth come first, because those surfaces determine whether Stella can release with confidence at all.