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
4.9 KiB
4.9 KiB
Spec 346 Repo Truth Map
Status: implemented
Created: 2026-06-02
Purpose: record the repo-backed inputs, scope contracts, and current gaps that shaped the final Governance Inbox operator workflow.
Runtime Surfaces
| Area | Repo source | Current truth |
|---|---|---|
| Governance Inbox page | apps/platform/app/Filament/Pages/Governance/GovernanceInbox.php |
Workspace-owned Filament page at /admin/governance/inbox with visible optional environment_id filter. |
| Governance Inbox view | apps/platform/resources/views/filament/pages/governance/governance-inbox.blade.php |
Operator summary first, lane groups second, source-family context and diagnostics secondary. |
| Derived source families | apps/platform/app/Support/GovernanceInbox/GovernanceInboxSectionBuilder.php |
Existing read-only source families remain: assigned findings, intake findings, finding exceptions, stale operations, alert delivery failures, review follow-up. |
| Decision history / proof | apps/platform/app/Filament/Pages/Governance/DecisionRegister.php, apps/platform/app/Support/GovernanceDecisions/GovernanceDecisionRegisterBuilder.php |
Existing read-only decision ledger with open and recently_closed states. Reused, not rebuilt. |
Repo-Backed Inputs
| Signal | Repo-backed source | Inbox use |
|---|---|---|
| Assigned findings | Finding, FindingResource, section builder assigned query |
Requires decision or Evidence required depending on linked evidence state. |
| Intake findings | Finding, intake query |
Needs triage. |
| Accepted-risk / exception records | FindingException, FindingExceptionDecision, FindingExceptionsQueue |
Risk / exception review. |
| Failed / stale operations | OperationRun, OperationRunLinks |
Blocked. |
| Failed alert deliveries | AlertDelivery, AlertDeliveryResource |
Blocked. |
| Review follow-up | ManagedEnvironmentTriageReview, EnvironmentReviewRegisterService, CustomerReviewWorkspace |
Requires decision with customer-review linkage. |
| Recently closed governance decisions | GovernanceDecisionRegisterBuilder |
Secondary Recently resolved disclosure only. |
Current Item Fields
Current source entries already expose the fields needed for a derived operator card without new persistence:
headlinestatus_labelreason_labelimpact_labeltenant_labelowner_labeldue_labelevidence_labelexception_labelprimary_action_labelprimary_action_urldestination_urlevidence_path_urlurgency_rank
Spec 346 keeps these fields derived and page-local.
Link Targets
| Link type | Current truth |
|---|---|
| Finding detail | Existing tenant-owned FindingResource view route. |
| Finding exceptions queue | Existing workspace hub route with canonical environment_id and exception. |
| Decision Register | Existing workspace hub route with optional environment_id and register_state. |
| Evidence overview | Existing workspace hub route route('admin.evidence.overview', ['environment_id' => ...]). |
| Customer Review Workspace | Existing workspace hub route CustomerReviewWorkspace::environmentFilterUrl($environment). |
| Operation proof | Existing OperationRunLinks::tenantlessView(...). |
| Environment detail | Existing ManagedEnvironmentLinks::viewUrl(...). |
Scope Contract
- Governance Inbox remains workspace-owned.
- The only visible local environment scope contract is
?environment_id={id}. - Clean entry must stay tenantless/workspace-wide even when the shell remembers an environment.
- No Governance Inbox first-party link may emit retired public query aliases:
tenanttenant_idmanaged_environment_idenvironmenttenant_scopetableFilters
Gaps And Conservative Decisions
| Topic | Repo truth | Spec 346 decision |
|---|---|---|
| Review-ready lane | No bounded repo-backed governance-inbox-ready state exists on this page today. | Omitted instead of invented. |
| Persisted inbox items | No new truth table or workflow engine exists. | Not added. |
| New mutating actions | Existing page is read-first and current source surfaces own mutations. | Not added. |
| Recently resolved lane | Repo truth exists only in the Decision Register, not in current inbox source-family entries. | Shown as a secondary disclosure backed by the existing register builder. |
| Provider-readiness blocker classification | Repo truth exists on adjacent readiness/required-permissions surfaces, but not as a generalized inbox state. | Existing operation / alert / environment links reused; no new readiness engine introduced. |
Filament / Runtime Guardrails
- Livewire v4-only patterns retained.
- No panel registration changes; Laravel 12 panel providers remain in
apps/platform/bootstrap/providers.php. - No global-search posture changed.
- No new assets registered.
- No migration, queue, scheduler, env-var, or deployment contract change was required.