feat(ui): ship triage explainability workspace
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
# Sprint 20260307-027 - Triage Explainability Workspace
|
||||
|
||||
## Topic & Scope
|
||||
- Merge the dropped triage workbench ideas into one canonical artifact workspace plus a sibling `Audit Bundles` page.
|
||||
- Ship a fully usable artifact workspace with lane segmentation, detail-side explainability panels, and a working `Audit Bundles` page.
|
||||
- Complete the missing triage functionality end to end so the operator can actually use quiet lane, explanation panels, and audit packaging from the active shell.
|
||||
- Working directory: `src/Web/StellaOps.Web/src/app/features/triage`.
|
||||
- Allowed coordination edits: `src/Web/StellaOps.Web/src/app/routes/security-risk.routes.ts`, `src/Web/StellaOps.Web/src/app/features/security-risk/`, `src/Web/StellaOps.Web/src/app/features/evidence/`, `docs/modules/ui/triage-explainability-workspace`, and `docs/modules/ui/TASKS.md`.
|
||||
- Expected evidence: working lane tabs, working detail-side explainability panels, working audit-bundle flows, migrated supporting components, tests, and updated docs.
|
||||
|
||||
## Dependencies & Concurrency
|
||||
- Depends on:
|
||||
- `docs/modules/ui/triage-explainability-workspace/README.md`
|
||||
- `docs/UI_GUIDE.md`
|
||||
- `docs/ui-analysis/03_TRIAGE_POLICY_OPS_SCREENS.md`
|
||||
- `docs/ui-analysis/05_ROUTE_SUMMARY_AND_OBSERVATIONS.md`
|
||||
- `src/Web/StellaOps.Web/src/app/features/triage/triage-artifacts.component.ts`
|
||||
- `src/Web/StellaOps.Web/src/app/features/triage/triage-workspace.component.ts`
|
||||
- `src/Web/StellaOps.Web/src/app/features/triage/triage-audit-bundles.component.ts`
|
||||
- Safe parallelism:
|
||||
- route, lane, and panel contracts should freeze before FE implementation begins
|
||||
- list-lane work and detail-panel work can proceed in parallel after the contract is stable
|
||||
- audit-bundle page work can proceed in parallel with supporting component absorption
|
||||
|
||||
## Documentation Prerequisites
|
||||
- `docs/modules/ui/triage-explainability-workspace/README.md`
|
||||
- `docs/modules/ui/contextual-actions-patterns/README.md`
|
||||
- `docs/modules/ui/restoration-topics/triage-explainability-workbench.md`
|
||||
- `docs/modules/ui/component-preservation-map/RESTORATION_PRIORITIES.md`
|
||||
|
||||
## Delivery Tracker
|
||||
|
||||
### FE-TX-001 - Wire the canonical artifact workspace and route state
|
||||
Status: DONE
|
||||
Dependency: none
|
||||
Owners: Product Manager, FE Architect
|
||||
Task description:
|
||||
- Implement the canonical artifact workspace route family, lane query params, panel query params, and sibling `Audit Bundles` page ownership.
|
||||
- Ensure the active shell exposes the triage workspace operators should actually use.
|
||||
|
||||
Completion criteria:
|
||||
- [x] Canonical artifact and audit-bundle routes are active in the router.
|
||||
- [x] Lane and panel query params work in the shipped UI.
|
||||
- [x] Separate workbench brands are no longer required for triage access.
|
||||
|
||||
### FE-TX-002 - Ship the list-lane workflows
|
||||
Status: DONE
|
||||
Dependency: FE-TX-001
|
||||
Owners: Developer, FE Architect
|
||||
Task description:
|
||||
- Implement the list-layer experience for `Active`, `Quiet Lane`, and `Needs Review`.
|
||||
- Ensure row actions, bulk actions, and lane transitions are usable from the active artifact list.
|
||||
|
||||
Completion criteria:
|
||||
- [x] Lane tabs or segmented controls are working in the shipped UI.
|
||||
- [x] Row and bulk actions work from the artifact list.
|
||||
- [x] Quiet-lane behavior is usable as queue state, not a detached page.
|
||||
|
||||
### FE-TX-003 - Ship the detail-side explainability workspace
|
||||
Status: DONE
|
||||
Dependency: FE-TX-001
|
||||
Owners: Developer, Product Manager
|
||||
Task description:
|
||||
- Implement artifact detail panels for AI recommendations, reason capsule, provenance, and decision history.
|
||||
- Make them usable beside the central artifact summary and evidence trail instead of leaving them as unmounted workbench ideas.
|
||||
|
||||
Completion criteria:
|
||||
- [x] Detail-side panels render and open via the active workspace route state.
|
||||
- [x] Panel actions and return-to-context behavior work in the shipped UI.
|
||||
- [x] AI remains advisory and evidence-first in the shipped detail experience.
|
||||
|
||||
### FE-TX-004 - Ship the Audit Bundles page and create flow
|
||||
Status: DONE
|
||||
Dependency: FE-TX-001
|
||||
Owners: Developer, Documentation author
|
||||
Task description:
|
||||
- Implement the `Audit Bundles` list, create flow, and download/verify behavior as a real sibling page.
|
||||
- Ensure operators can build and retrieve audit bundles from the active triage and evidence flows.
|
||||
|
||||
Completion criteria:
|
||||
- [x] Bundle list and create flow are usable in the shipped UI.
|
||||
- [x] Cross-links from artifact detail and evidence open the working page.
|
||||
- [x] Audit bundles remain a visible sibling page, not a hidden modal flow.
|
||||
|
||||
### FE-TX-005 - Migrate supporting components and retire workbench wrappers
|
||||
Status: DONE
|
||||
Dependency: FE-TX-003
|
||||
Owners: Developer, Documentation author
|
||||
Task description:
|
||||
- Migrate dropped triage components such as quiet lane workbench, AI recommendation workbench, reason capsule, snapshot viewer, unknowns list, and AI badge into the target workspace.
|
||||
- Retire wrapper shells only after their preserved behavior is working in the active artifact workspace.
|
||||
|
||||
Completion criteria:
|
||||
- [x] Supporting components are visible in the working list or detail surfaces.
|
||||
- [x] Wrapper shells slated for retirement are no longer needed for preserved behavior.
|
||||
- [x] No preserved triage functionality depends on an orphan workbench route.
|
||||
|
||||
### FE-TX-006 - Verify, document, and cut over the workspace
|
||||
Status: DONE
|
||||
Dependency: FE-TX-004
|
||||
Owners: QA, Documentation author
|
||||
Task description:
|
||||
- Add Playwright scenarios for list-lane navigation, detail panels, cross-links to reachability and evidence, and audit-bundle creation.
|
||||
- Update triage and UI docs so the artifact workspace ships as the usable owner of these workflows.
|
||||
|
||||
Completion criteria:
|
||||
- [x] Verification covers lane changes, detail panels, and audit bundles.
|
||||
- [x] Cross-shell deep links are included in testing.
|
||||
- [x] Docs reflect the shipped artifact workspace and audit-bundle flows.
|
||||
|
||||
## Execution Log
|
||||
| Date (UTC) | Update | Owner |
|
||||
| --- | --- | --- |
|
||||
| 2026-03-07 | Sprint created to ship one artifact workspace with lane segmentation, detail-side explainability, and a sibling Audit Bundles page instead of keeping those capabilities in dropped workbench shells. | Project Manager |
|
||||
| 2026-03-07 | Implementation started. The current workspace already contains usable artifact and evidence surfaces, but route ownership, lane segmentation, explainability panels, and audit-bundle routing are split between `/security/*`, `/triage/*`, and orphan workbench ideas. This sprint absorbs the audit-bundle route/client prerequisite while wiring the canonical triage owner shell. | Developer |
|
||||
| 2026-03-07 | Shipped the canonical `/triage/artifacts` and `/triage/audit-bundles` route family, list-lane state, merged explainability rail, audit-bundle create flow, and sidebar cutover. Security artifact aliases now canonicalize into `/triage/*` without dropping `artifactId`. | Developer |
|
||||
| 2026-03-07 | Verified delivery with `npx ng test --watch=false --include src/tests/triage/triage-artifacts.component.spec.ts --include src/tests/triage/triage-workspace-with-proof-tree.behavior.spec.ts --include src/tests/audit_bundle/triage-routes.spec.ts --include src/tests/security-risk/security-risk-routes.spec.ts --include src/tests/navigation/legacy-redirects.spec.ts --include src/tests/routes/legacy-route-migration-framework.component.spec.ts --include src/tests/audit_bundle/audit-bundles.client.contract.spec.ts --include src/tests/audit_bundle/triage-audit-bundle-new.component.spec.ts --include src/tests/audit_bundle/triage-audit-bundles.component.spec.ts` (68 passing tests) and `npx playwright test tests/e2e/triage-explainability-workspace.spec.ts --workers=1` (2 passing scenarios). | QA |
|
||||
|
||||
## Decisions & Risks
|
||||
- Decision: triage stays one workspace with contextual explainability, not multiple workbench brands.
|
||||
- Decision: audit bundles remain a real page because they carry lifecycle, export, and audit semantics.
|
||||
- Risk: AI recommendation UI may expand beyond advisory use and obscure evidence-first operator decisions.
|
||||
- Mitigation: require explicit advisory-only copy and evidence panels in the detail contract.
|
||||
- Risk: quiet-lane behavior may get over-specialized into another shell.
|
||||
- Mitigation: freeze it as list segmentation plus row or bulk actions only.
|
||||
- Decision: the in-flight audit-bundle route/client repair is absorbed into this sprint so the canonical `/triage/*` workspace can ship without depending on an uncommitted prerequisite slice.
|
||||
- Delivery rule: this sprint is only complete when the active triage workspace provides the preserved explainability and audit workflows without depending on orphan workbench pages.
|
||||
- Decision: `/security/artifacts*` now acts strictly as an alias into `/triage/artifacts*`; the alias must preserve `artifactId`, query state, and fragments.
|
||||
- Decision: TTFS telemetry timers run outside Angular and are cleaned up on destroy so the shipped workspace remains stable under unit and browser test harnesses.
|
||||
- Reference design note: `docs/modules/ui/triage-explainability-workspace/README.md`.
|
||||
|
||||
## Next Checkpoints
|
||||
- Archive sprint after commit and keep follow-on work in `SPRINT_20260307_028_FE_workflow_visualization_replay.md` and `SPRINT_20260307_029_FE_contextual_actions_and_stray_surfaces.md`.
|
||||
Reference in New Issue
Block a user