Implemented the final operator workflow for the Governance Inbox. This includes refactoring the inbox page, updating finding resources, adding UI enforcement policies, updating related blade views, and adding comprehensive tests for operator workflow and scope contracts. Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #418
44 lines
2.4 KiB
Markdown
44 lines
2.4 KiB
Markdown
# Spec 346 Lane Classification
|
|
|
|
Status: implemented
|
|
Created: 2026-06-02
|
|
Scope: page-local, derived lane mapping for `/admin/governance/inbox`
|
|
|
|
## Rule
|
|
|
|
Spec 346 does not add a new persisted inbox-item state machine. Lane assignment is derived from existing source-family entries returned by `GovernanceInboxSectionBuilder`.
|
|
|
|
Each visible item appears in exactly one primary lane on the inbox first screen.
|
|
|
|
## Active Lane Mapping
|
|
|
|
| Source family / state | Lane | Why |
|
|
| --- | --- | --- |
|
|
| `intake_findings` | `Needs triage` | These findings are still unassigned and need a first operator path. |
|
|
| `assigned_findings` with `evidence_state = missing` | `Evidence required` | The operator already owns the item, but linked proof is still missing. |
|
|
| `assigned_findings` with linked evidence | `Requires decision` | The item still needs operator follow-through and is no longer blocked on missing proof. |
|
|
| `finding_exceptions` | `Risk / exception review` | Accepted-risk and exception records already have their own review semantics and should not be diluted into generic evidence or decision lanes. |
|
|
| `review_follow_up` | `Requires decision` | The existing repo truth signals follow-up or changed-since-review state, not a clean review-ready state. |
|
|
| `stale_operations` | `Blocked` | Existing operation truth already represents stale or terminal technical follow-up. |
|
|
| `alert_delivery_failures` | `Blocked` | Delivery failures are technical blockers that need operational follow-through. |
|
|
|
|
## Secondary / Supporting States
|
|
|
|
| Topic | Treatment |
|
|
| --- | --- |
|
|
| Recently resolved | Derived from `GovernanceDecisionRegisterBuilder` and rendered as a secondary collapsed disclosure, not as a primary active lane. |
|
|
| Diagnostics | Kept collapsed and source-owned. |
|
|
| Source-family context | Kept available in the secondary `Source detail` disclosure. |
|
|
|
|
## Intentionally Omitted Lanes
|
|
|
|
| Suggested lane | Why omitted |
|
|
| --- | --- |
|
|
| `Review-ready` | No honest repo-backed inbox-ready state is currently derivable on this page without inventing new workflow truth. |
|
|
|
|
## Why Page-Local Mapping Was Enough
|
|
|
|
- The source builder already returns repo-backed entries with status, reason, impact, evidence, and action URLs.
|
|
- The lane transform is presentational and does not need to spread into models, enums, migrations, or shared infrastructure.
|
|
- Keeping the mapper local to `GovernanceInbox` avoids creating a new governance engine or taxonomy layer.
|