31 KiB
Implementation Plan: Governance Operator Outcome Compression
Branch: 214-governance-outcome-compression | Date: 2026-04-19 | Spec: /Users/ahmeddarrazi/Documents/projects/wt-plattform/specs/214-governance-outcome-compression/spec.md
Input: Feature specification from /Users/ahmeddarrazi/Documents/projects/wt-plattform/specs/214-governance-outcome-compression/spec.md
Note: This plan keeps the work inside the existing governance truth and explanation seams. The intended implementation is a bounded compression layer for operator prominence and surface hierarchy, not a new persistence model, not a new domain-state family, and not a second explanation framework.
Summary
Apply an operator-first compression layer to the existing governance artifact truth and explanation stack so covered baseline snapshot, evidence snapshot, tenant review, review pack, review-register, evidence-overview, and artifact-oriented operation-run surfaces answer one primary workflow question first. The implementation will reuse ArtifactTruthPresenter, ArtifactTruthEnvelope, OperatorExplanationBuilder, BadgeCatalog, existing Filament resources/pages, and current detail layouts; add a bounded SurfaceCompressionContext plus CompressedGovernanceOutcome seam at the shared UI layer; preserve current routes, actions, RBAC, and diagnostics; and expand focused Pest coverage so list, detail, register, and run-detail surfaces stay aligned.
Key approach: derive once, compress late, and keep the full truth envelope intact. The implementation will absorb into the current truth-presenter and shared-detail family rather than layering new persistence, new enums, or page-local status vocabularies.
Technical Context
Language/Version: PHP 8.4.15, Laravel 12, Filament v5, Livewire v4, Blade
Primary Dependencies: Filament v5, Livewire v4, Pest v4, Laravel Sail, ArtifactTruthPresenter, ArtifactTruthEnvelope, OperatorExplanationBuilder, BaselineSnapshotPresenter, BadgeCatalog, BadgeRenderer, existing governance Filament resources/pages, and current Enterprise Detail builders
Storage: PostgreSQL via existing baseline_snapshots, evidence_snapshots, evidence_snapshot_items, tenant_reviews, review_packs, and operation_runs tables; no schema change planned
Testing: Pest unit and feature tests, existing Filament page/resource coverage, and shared fixture concerns under apps/platform/tests/Feature/Concerns
Validation Lanes: fast-feedback, confidence
Target Platform: Laravel web application in Sail locally and containerized Linux deployment in staging/production
Project Type: Laravel monolith web application inside the wt-plattform monorepo
Performance Goals: Preserve DB-only rendering on covered pages, avoid render-time external calls, keep per-row truth derivation lightweight enough for canonical table scans, and keep the first operator read within a 5-10 second scan window on list/register surfaces
Constraints: No new tables, no new domain-state families, no route changes, no new destructive actions, no new panel/provider/assets, no page-local badge taxonomy, no contradiction between list/detail/run-detail surfaces, and no drift away from existing RBAC or Action Surface rules
Scale/Scope: Seven operator-facing surface families, one shared governance truth seam, one shared explanation seam, one existing truth partial, and focused regression coverage across trustworthy, stale, partial, blocked, internal-only, and follow-up-needed scenarios
UI / Surface Guardrail Plan
- Guardrail scope: changed surfaces
- Native vs custom classification summary: native Filament + shared detail primitives
- Shared-family relevance: governance artifact truth family, operator explanation family, shared detail family
- State layers in scope: page, detail, URL-query
- Handling modes by drift class or surface: review-mandatory on all touched surfaces; exception-required only if a surface cannot keep one dominant operator statement without breaking existing action contracts
- Repository-signal treatment: review-mandatory
- Special surface test profiles: standard-native-filament, shared-detail-family
- Required tests or manual smoke: functional-core, state-contract, manual-smoke
- Exception path and spread control: none planned; any exception must stay local to the touched surface and may not create a new shared semantics layer
- Active feature PR close-out entry: Guardrail
Constitution Check
GATE: Passed before Phase 0 research. Re-checked after Phase 1 design and still passing.
| Principle | Pre-Research | Post-Design | Notes |
|---|---|---|---|
| Inventory-first / snapshots-second | PASS | PASS | The feature changes presentation of existing governance artifacts only; snapshot and evidence ownership stay unchanged |
| Read/write separation | PASS | PASS | No new writes, preview flows, or dangerous operations are introduced |
| Graph contract path | PASS | PASS | No new Graph calls or contract-registry changes |
| Deterministic capabilities | PASS | PASS | No new capability family or resolver drift is planned |
| Workspace + tenant isolation | PASS | PASS | Canonical /admin pages remain tenant-safe and tenant-scoped surfaces keep current workspace + tenant entitlement behavior |
| RBAC-UX 404 vs 403 semantics | PASS | PASS | Non-members remain 404; in-scope capability denials remain 403; no new raw capability checks are introduced |
| Global search hard rule | PASS | PASS | No new searchable resource is added; existing resources already have detail surfaces or unchanged search posture |
| Destructive confirmation | PASS | PASS | No new destructive action is introduced; existing destructive actions keep confirmation and authorization |
| Run observability / Ops-UX | PASS | PASS | Existing OperationRun types and lifecycle rules stay unchanged; run-detail work is presentation-only |
| Ops-UX lifecycle ownership | PASS | PASS | No OperationRun.status or outcome transition path changes are needed |
| Ops-UX summary counts / guards | PASS | PASS | No summary_counts contract changes and no new operation guard exceptions |
| Data minimization | PASS | PASS | Diagnostics remain secondary and no new payload exposure is planned |
| Test governance (TEST-GOV-001) | PASS | PASS | Proof stays in targeted unit/feature coverage over existing surfaces and fixture helpers |
| Proportionality / anti-bloat | PASS | PASS | The implementation stays inside the current presenter/explanation seam and does not add persistence or a second semantic framework |
| No premature abstraction | PASS | PASS | At most one bounded compression helper/strategy is justified because the same prominence problem spans multiple real surfaces now |
| Persisted truth / behavioral state | PASS | PASS | No new table, persisted helper, or lifecycle state is required |
| UI semantics / few layers | PASS | PASS | Compression remains a thin prominence adapter over the existing envelope, not a replacement truth source |
| Badge semantics (BADGE-001) | PASS | PASS | Existing BadgeCatalog/BadgeRenderer domains remain canonical |
| Filament-native UI (UI-FIL-001) | PASS | PASS | Existing Filament tables, infolists, sections, and shared detail builders remain the primary implementation path |
| UI surface taxonomy / inspect model | PASS | PASS | Existing row-click inspect patterns, register/list/detail classifications, and action topology remain unchanged |
| Decision-first operating model (DECIDE-001) | PASS | PASS | The plan explicitly makes review/review-pack/register primary decision surfaces, baseline/evidence secondary context, and run detail tertiary evidence |
| Action-surface discipline / placeholders | PASS | PASS | No new header, row, or bulk actions are planned; redundant View actions remain absent |
| Operator-surface truth ordering (OPSURF-001) | PASS | PASS | Primary outcome, short reason, and next action move ahead of diagnostics across touched surfaces |
| Filament UX-001 | PASS | PASS | Existing tables and infolists remain; detail-page hierarchy is tightened without layout drift |
| Filament v5 / Livewire v4 compliance | PASS | PASS | The work remains entirely within the current Filament v5 + Livewire v4 stack |
| Provider registration location | PASS | PASS | No panel/provider work; Laravel 11+ provider registration remains in bootstrap/providers.php |
| Asset strategy | PASS | PASS | No new global or on-demand assets are required; existing filament:assets deployment step remains unchanged |
Test Governance Check
- Test purpose / classification by changed surface:
Featurefor list/detail/register/run-detail surfaces plus narrowUnitcoverage for the shared compression value object and surface-context mapping - Affected validation lanes:
fast-feedback,confidence - Why this lane mix is the narrowest sufficient proof: The feature is proven by operator-visible hierarchy and cross-surface agreement on existing pages. That requires focused surface and presenter tests, not browser or heavy-governance breadth.
- Narrowest proving command(s):
cd /Users/ahmeddarrazi/Documents/projects/wt-plattform/apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Evidence/EvidenceSnapshotResourceTest.php tests/Feature/TenantReview/TenantReviewRegisterTest.php tests/Feature/ReviewPack/ReviewPackResourceTest.php tests/Feature/Evidence/EvidenceOverviewPageTest.php tests/Feature/Filament/OperationRunBaselineTruthSurfaceTest.php;cd /Users/ahmeddarrazi/Documents/projects/wt-plattform/apps/platform && ./vendor/bin/sail artisan test --compact --filter=GovernanceOutcomeCompression - Fixture / helper / factory / seed / context cost risks: Moderate reuse of
BuildsGovernanceArtifactTruthFixturesand existing seeded truth states; risk is overloading shared helpers with too many surface-specific defaults - Expensive defaults or shared helper growth introduced?: no; any new fixture helper must stay opt-in by artifact state and surface family
- Heavy-family additions, promotions, or visibility changes: none
- Surface-class relief / special coverage rule:
shared-detail-familycoverage is required for detail pages and run detail; list/register surfaces keep ordinary native Filament coverage - Closing validation and reviewer handoff: Reviewers must confirm one dominant operator statement per artifact, secondary diagnostics only, and no new page-local badge language. Re-run the focused command above plus the new/updated compression-focused suite.
- Budget / baseline / trend follow-up: Low-to-moderate assertion growth inside existing suites; no separate follow-up spec needed unless shared fixture cost starts to spread beyond governance artifact tests
- Review-stop questions: Does the change stay in the presenter/shared-detail seam? Did helper growth stay opt-in? Did any touched surface add a second primary outcome or new action furniture? Did any new abstraction become broader than current-release need?
- Escalation path: document-in-feature unless a second shared semantic layer or new persistent helper is proposed, in which case reject-or-split
- Active feature PR close-out entry: Guardrail
- Why no dedicated follow-up spec is needed: The suite cost and architectural surface remain bounded to the already-covered governance artifact family and do not create a new recurring test family or platform framework
Phase 0 Research
Research outcomes are captured in /Users/ahmeddarrazi/Documents/projects/wt-plattform/specs/214-governance-outcome-compression/research.md.
Key decisions:
- Keep
ArtifactTruthPresenterandArtifactTruthEnvelopeas the single canonical truth seam and add compression only as a derived prominence layer. - Make surface-family context explicit so baseline/evidence surfaces prioritize usability while review/review-pack surfaces prioritize publication/shareability.
- Reuse
OperatorExplanationBuilder,BadgeCatalog, and the existing governance truth partial instead of inventing page-local summary systems. - Preserve diagnostics, raw reason structures, and audit-visible truth by moving them into secondary or diagnostics tiers instead of deleting them.
- Align artifact-oriented run detail with the same compressed decision direction used on the linked artifact surfaces.
- Reuse current fixture concerns and surface suites rather than creating a new UI harness.
Phase 1 Design
Design artifacts are created under /Users/ahmeddarrazi/Documents/projects/wt-plattform/specs/214-governance-outcome-compression/:
research.md: implementation-seam decisions and rejected alternatives for bounded outcome compressiondata-model.md: logical model for derived compression context, compressed outcomes, secondary facts, and diagnostics tieringcontracts/governance-outcome-compression.logical.openapi.yaml: internal logical contract for rendered HTML surfaces and their structured compressed-outcome payloadsquickstart.md: focused verification workflow for manual and automated validation
Design decisions:
- No schema migration is required; all compressed operator outcomes remain derived from existing persisted artifact truth and existing relationships.
- The primary implementation seam is the current governance truth presenter and shared detail/rendering layer, optionally with one bounded compression strategy/value object keyed by surface family.
- Existing Filament action topology, route shape, authorization behavior, and destructive-action semantics remain unchanged.
- The existing
resources/views/filament/infolists/entries/governance-artifact-truth.blade.phppartial and current detail builders remain the rendering family to extend instead of introducing a second surface family. - Canonical summary pages and run detail must reuse the same decision direction as tenant detail pages rather than inventing row-local or run-local status dialects.
Project Structure
Documentation (this feature)
specs/214-governance-outcome-compression/
├── spec.md
├── plan.md
├── research.md
├── data-model.md
├── quickstart.md
├── contracts/
│ └── governance-outcome-compression.logical.openapi.yaml
├── checklists/
│ └── requirements.md
└── tasks.md
Source Code (repository root)
apps/platform/
├── app/
│ ├── Filament/
│ │ ├── Pages/
│ │ │ ├── Monitoring/
│ │ │ │ └── EvidenceOverview.php
│ │ │ ├── Operations/
│ │ │ │ └── TenantlessOperationRunViewer.php
│ │ │ └── Reviews/
│ │ │ └── ReviewRegister.php
│ │ └── Resources/
│ │ ├── BaselineSnapshotResource.php
│ │ ├── EvidenceSnapshotResource.php
│ │ ├── OperationRunResource.php
│ │ ├── ReviewPackResource.php
│ │ └── TenantReviewResource.php
│ ├── Services/
│ │ └── Baselines/
│ │ └── SnapshotRendering/
│ │ └── BaselineSnapshotPresenter.php
│ └── Support/
│ ├── Badges/
│ │ ├── BadgeCatalog.php
│ │ └── BadgeRenderer.php
│ └── Ui/
│ ├── GovernanceArtifactTruth/
│ │ ├── CompressedGovernanceOutcome.php
│ │ ├── ArtifactTruthEnvelope.php
│ │ ├── ArtifactTruthPresenter.php
│ │ ├── ArtifactTruthDimension.php
│ │ └── SurfaceCompressionContext.php
│ └── OperatorExplanation/
│ └── OperatorExplanationBuilder.php
├── resources/
│ └── views/
│ └── filament/
│ └── infolists/
│ └── entries/
│ └── governance-artifact-truth.blade.php
└── tests/
├── Unit/
│ └── Support/
│ └── Ui/
│ └── GovernanceArtifactTruth/
│ └── CompressedGovernanceOutcomeTest.php
└── Feature/
├── Concerns/
│ └── BuildsGovernanceArtifactTruthFixtures.php
├── Evidence/
│ ├── EvidenceOverviewPageTest.php
│ └── EvidenceSnapshotResourceTest.php
├── Filament/
│ ├── EvidenceOverviewDerivedStateMemoizationTest.php
│ ├── OperationRunBaselineTruthSurfaceTest.php
│ └── ReviewRegisterDerivedStateMemoizationTest.php
├── ReviewPack/
│ ├── ReviewPackResourceTest.php
│ └── TenantReviewDerivedReviewPackTest.php
└── TenantReview/
├── TenantReviewExplanationSurfaceTest.php
├── TenantReviewLifecycleTest.php
├── TenantReviewRegisterTest.php
└── TenantReviewUiContractTest.php
Structure Decision: Standard Laravel monolith. The work stays concentrated in the current governance truth presenter, explanation builder, touched Filament resources/pages, one shared truth partial, and focused Pest suites. No new base directory, no new domain package, and no new panel surface are required.
Implementation Strategy
Phase A — Introduce One Bounded Compression Seam
Goal: Add a thin derived seam that classifies existing artifact truth into primary, secondary, and diagnostics tiers by surface family.
| Step | File | Change |
|---|---|---|
| A.1 | apps/platform/app/Support/Ui/GovernanceArtifactTruth/SurfaceCompressionContext.php and apps/platform/app/Support/Ui/GovernanceArtifactTruth/CompressedGovernanceOutcome.php |
Introduce the bounded surface-aware types that choose a dominant operator outcome, centralized badge, short reason, and next step without persisting new truth |
| A.2 | apps/platform/app/Support/Ui/GovernanceArtifactTruth/ArtifactTruthPresenter.php |
Keep the full envelope intact while deriving one dominant compressed outcome and BadgeCatalog-backed primary badge from existing truth dimensions |
| A.3 | apps/platform/app/Support/Ui/OperatorExplanation/OperatorExplanationBuilder.php and apps/platform/app/Support/Ui/GovernanceArtifactTruth/ArtifactTruthEnvelope.php |
Expose translated operator-first summary inputs and serialize them without leaking architecture-first wording |
Phase B — Simplify List and Register Surfaces
Goal: Make covered list and register rows answer the primary workflow question first without expanding action furniture or route structure.
| Step | File | Change |
|---|---|---|
| B.1 | apps/platform/app/Filament/Resources/BaselineSnapshotResource.php |
Reduce equal-weight scan noise so snapshot lists foreground one usability outcome, one short reason, and one next step |
| B.2 | apps/platform/app/Filament/Resources/EvidenceSnapshotResource.php |
Foreground evidence usability rather than parallel semantic columns |
| B.3 | apps/platform/app/Filament/Resources/TenantReviewResource.php and apps/platform/app/Filament/Resources/ReviewPackResource.php |
Make publication/shareability the primary row-level decision while keeping secondary facts available |
| B.4 | apps/platform/app/Filament/Pages/Reviews/ReviewRegister.php and apps/platform/app/Filament/Pages/Monitoring/EvidenceOverview.php |
Align canonical rows with the same compressed decision direction used by tenant detail surfaces while preserving tenant-prefilter continuity and entitlement-safe rendering |
Phase C — Reorder Detail Surfaces Around The First Decision
Goal: Ensure detail screens lead with outcome, short explanation, and next step before diagnostics.
| Step | File | Change |
|---|---|---|
| C.1 | apps/platform/app/Services/Baselines/SnapshotRendering/BaselineSnapshotPresenter.php |
Move baseline snapshot detail emphasis toward compressed usability summary while preserving technical sections |
| C.2 | apps/platform/resources/views/filament/infolists/entries/governance-artifact-truth.blade.php |
Render primary/secondary/diagnostics tiers instead of treating every semantic axis as equal default-visible content |
| C.3 | apps/platform/app/Filament/Resources/TenantReviewResource.php and apps/platform/app/Filament/Resources/ReviewPackResource.php |
Keep existing detail actions and route behavior but strengthen summary-first hierarchy for review and pack detail |
Phase D — Keep Run Detail Directionally Consistent
Goal: Make artifact-oriented Monitoring run detail explain the dominant artifact impact without contradicting the linked artifact surfaces.
| Step | File | Change |
|---|---|---|
| D.1 | apps/platform/app/Support/Ui/GovernanceArtifactTruth/ArtifactTruthPresenter.php |
Reuse the same compressed decision direction for OperationRun envelopes that explain artifact outcomes |
| D.2 | apps/platform/app/Filament/Resources/OperationRunResource.php and apps/platform/app/Filament/Pages/Operations/TenantlessOperationRunViewer.php |
Lead with dominant artifact impact and next step while keeping raw diagnostics secondary |
| D.3 | Related navigation helpers in the current run-detail family | Preserve existing routes and action hierarchy; no new run action is introduced |
Phase E — Regression Protection And Verification
Goal: Add the smallest valuable test set that protects cross-surface agreement, prominence rules, and diagnostics demotion.
| Step | File | Change |
|---|---|---|
| E.1 | apps/platform/tests/Feature/Concerns/BuildsGovernanceArtifactTruthFixtures.php |
Add or extend opt-in helpers for trustworthy, stale, partial, blocked, internal-only, and follow-up-needed artifact states |
| E.2 | apps/platform/tests/Unit/Support/Ui/GovernanceArtifactTruth/CompressedGovernanceOutcomeTest.php |
Assert surface-context mapping, centralized badge reuse, and operator-facing summary vocabulary |
| E.3 | apps/platform/tests/Feature/Evidence/EvidenceSnapshotResourceTest.php and apps/platform/tests/Feature/Evidence/EvidenceOverviewPageTest.php |
Assert one dominant operator outcome on snapshot and overview surfaces, plus canonical-view prefilter continuity and deny-as-not-found behavior |
Close-out Proof
- Implementation status: shared compression seam, summary-tier rendering, list/detail/register/run-detail wiring, fixture support, and derived-state memoization coverage completed
- Guardrail status: PASS The touched list and registry surfaces preserve one inspect model, bounded row actions, session-persisted table state where required, badge-backed status columns, and deny-as-not-found semantics for non-members
- Focused automated verification: PASS on 2026-04-19
cd /Users/ahmeddarrazi/Documents/projects/wt-plattform/apps/platform && ./vendor/bin/sail artisan test --compact tests/Unit/Support/Ui/GovernanceArtifactTruth/CompressedGovernanceOutcomeTest.php tests/Feature/Filament/ReviewRegisterDerivedStateMemoizationTest.php tests/Feature/Filament/EvidenceOverviewDerivedStateMemoizationTest.php tests/Feature/Filament/BaselineSnapshotListFiltersTest.php tests/Feature/Filament/BaselineSnapshotTruthSurfaceTest.php tests/Feature/Filament/BaselineSnapshotDegradedStateTest.php tests/Feature/Evidence/EvidenceSnapshotResourceTest.php tests/Feature/Evidence/EvidenceOverviewPageTest.php tests/Feature/TenantReview/TenantReviewRegisterTest.php tests/Feature/TenantReview/TenantReviewExplanationSurfaceTest.php tests/Feature/TenantReview/TenantReviewUiContractTest.php tests/Feature/ReviewPack/ReviewPackResourceTest.php tests/Feature/ReviewPack/TenantReviewDerivedReviewPackTest.php tests/Feature/Filament/OperationRunBaselineTruthSurfaceTest.php tests/Unit/Baselines/SnapshotRendering/BaselineSnapshotPresenterTest.php - Focused suite result:
68tests passed,445assertions - Formatting: PASS
cd /Users/ahmeddarrazi/Documents/projects/wt-plattform/apps/platform && ./vendor/bin/sail bin pint --dirty --format agent - Validation lanes:
fast-feedbackPASS,confidencePASS - Filament / platform checks:
Livewire v4.0+ compliant, no provider registration changes were required, no global-search posture changed beyond existing disabled resources with retained view pages, destructive actions kept
->action(...)plus->requiresConfirmation(), and no new asset registration or deployment asset step was introduced - Test-governance disposition:
document-in-feature - Manual smoke note: browser-based ten-second scan signoff is still recommended for a human reviewer, but architecture-first label leakage and summary-order regressions are covered by the focused suite above
| E.4 |
apps/platform/tests/Feature/TenantReview/TenantReviewRegisterTest.php,TenantReviewExplanationSurfaceTest.php, andTenantReviewUiContractTest.php| Assert compressed review/register hierarchy, combined-limiters, and agreement between list and detail | | E.5 |apps/platform/tests/Feature/ReviewPack/ReviewPackResourceTest.phpandTenantReviewDerivedReviewPackTest.php| Assert pack shareability compression, combined-limiters, and no architecture-first primary labels | | E.6 |apps/platform/tests/Feature/Filament/OperationRunBaselineTruthSurfaceTest.php| Assert run-detail outcome direction stays consistent with linked artifact truth | | E.7 |cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agentplus focused Pest runs and the quickstart smoke pass | Required formatting, targeted validation, and manual 10-second scan verification before task completion |
Key Design Decisions
D-001 — The full truth envelope remains canonical
ArtifactTruthEnvelope stays the full semantic source for existence, content, freshness, publication readiness, support, actionability, reason, and diagnostics. Compression decides prominence, not truth.
D-002 — Surface-family context decides primacy
Baseline and evidence surfaces primarily answer usability and trustworthiness. Review and review-pack surfaces primarily answer publishability or shareability. Canonical registers and run detail must reflect the same decision direction rather than inventing independent local priorities.
D-003 — Diagnostics are demoted, not deleted
Raw reason structures, fidelity sub-axes, JSON context, and supporting badge families remain available in secondary or technical sections. The feature reduces default-visible noise without throwing away operator-grade proof.
D-004 — Existing Filament actions and routes are part of the guardrail
This slice is intentionally not an action-topology change. It keeps row-click inspect, current resource/page routes, current dangerous-action placement, and current capability gating while making the visible explanation calmer.
D-005 — Shared caching must stay context-safe
The current request-scoped derived-state path already caches truth envelopes. If a new compression helper is memoized, its cache key must include the surface-family context so review-pack or register views do not accidentally reuse baseline-specific prominence rules.
Risk Assessment
| Risk | Impact | Likelihood | Mitigation |
|---|---|---|---|
| Compression becomes a second truth layer instead of a thin prominence adapter | High | Medium | Keep the implementation downstream of ArtifactTruthEnvelope and prohibit new persisted or page-local semantic helpers |
| Review and pack surfaces choose different dominant outcomes for the same artifact burden | High | Medium | Centralize context rules and add explicit review-vs-pack alignment tests |
| List simplification hides information operators still need for decisions | Medium | Medium | Keep secondary facts visible in bounded slots and validate with list-surface review checklist plus manual smoke |
| Run detail diverges from artifact detail after drill-through | Medium | Medium | Reuse the same compressed direction on OperationRun truth and add parity assertions in OperationRunBaselineTruthSurfaceTest |
| Shared fixture helpers become too broad and expensive | Medium | Low | Keep new state builders opt-in and scope them to governance artifact tests only |
Test Strategy
- Extend existing governance artifact truth fixtures instead of creating a new harness.
- Add explicit canonical-view authorization and tenant-prefilter regressions for
/admin/reviewsand/admin/evidence/overviewinstead of relying on implicit coverage. - Add compression-focused assertions to current evidence, review, review-pack, review-register, evidence-overview, and run-detail suites.
- Add explicit combined-limiter and operator-vocabulary assertions so dominant-outcome ranking and architecture-first label suppression are protected.
- Add narrow unit coverage for the shared compression value object and surface-context mapping while keeping the primary proof in feature-level surface tests.
- Preserve current authorization semantics: non-entitled users remain
404, in-scope capability denials remain403, and view-only users can still inspect truth without gaining new actions. - Keep existing Action Surface and badge guards green so the feature cannot regress into ad-hoc status language or redundant inspect actions.
- Manual validation must confirm the 10-second scan goal, operator-first wording, and no architecture-first label leakage on one list/register surface, one detail surface, and one artifact-oriented run detail page per artifact family.
Complexity Tracking
| Violation | Why Needed | Simpler Alternative Rejected Because |
|---|---|---|
| One bounded compression strategy or value object over the existing truth envelope | The same prominence problem now spans multiple real surfaces with different operator questions, so one shared derived rule is cheaper and safer than copy-paste prominence logic in each page/resource | Pure page-local copy cleanup would drift into inconsistent decision language and duplicate cross-surface mapping logic |
Proportionality Review
- Current operator problem: Governance artifact truth is correct but too decomposed on first read, forcing operators to synthesize basic decisions across several equal-weight semantic cues.
- Existing structure is insufficient because: The current presenter and explanation stack expose the right truth but do not yet decide which message is primary for each surface family, so list/detail/run surfaces can still over-explain or emphasize the wrong dimension first.
- Narrowest correct implementation: Add one thin derived compression seam downstream of the existing truth envelope and use it across the already-covered artifact surfaces.
- Ownership cost created: A small amount of new mapping logic, cache-context care, and regression coverage to keep list/detail/register/run-detail alignment stable.
- Alternative intentionally rejected: Page-local column or copy cleanup on each touched surface. That is cheaper initially but reintroduces dialect drift and makes cross-surface parity harder to maintain.
- Release truth: Current-release truth. This is the adoption layer that makes already-shipped governance truth operable now, not speculative future infrastructure.