feat(web): stable page identity across 10 weak surfaces (FE-ROUTES-003)

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>
This commit is contained in:
master
2026-04-22 16:21:35 +03:00
parent 7943cfb3af
commit 06a8558b0f
14 changed files with 646 additions and 60 deletions

View File

@@ -44,23 +44,42 @@
- `/evidence/capsules` currently 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 from the current runtime pass
- `/`
- `/environments/overview`
- `/ops/policy/packs`
- `/security/advisory-sources`
- `/triage/artifacts`
- `/evidence/exports`
- `/ops/operations/feeds-airgap`
- `/ops/operations/doctor`
- `/setup/integrations`
- `/setup/tenant-branding`
### Weak identity surfaces — resolved by FE-ROUTES-003 (2026-04-22)
These routes resolved and often had route titles, but the automated pass extracted little or no page-level heading/CTA identity from the main surface. In the next QA pass, treat them as "weak identity" pages and verify whether the problem is:
- truly missing page identity,
- card-based content without a stable top-level heading,
- lazy-loading or state timing,
- or a page shell that is present but not communicating ownership clearly enough.
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/integrations` with
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 under `evidence-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 reused `BrandingEditorComponent`,
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/tenants` returned `302 Found` with `location: https://127.0.0.1/console-admin/tenants`.