205 lines
11 KiB
Markdown
205 lines
11 KiB
Markdown
# Implementation Report: Spec 397 - Receipt Page Reduction Pass v1
|
|
|
|
**Date**: 2026-06-22
|
|
**Branch**: `397-receipt-page-reduction`
|
|
**Implementation slice**: Existing `/admin` receipt-style detail surfaces only: Evidence Snapshot detail, Baseline Snapshot detail, Restore Run detail, Review Pack detail receipt sections, and Stored Report detail receipt metadata.
|
|
|
|
## Product Surface Close-Out
|
|
|
|
- **No-legacy posture**: canonical replacement. No duplicate legacy/new receipt surfaces, no compatibility toggle, no new receipt framework.
|
|
- **Product Surface Impact**: default receipt pages now emphasize outcome, scope, timing, trust/readiness, and next action before internal support detail.
|
|
- **UI Surface Impact**: rendered Filament detail pages changed; no navigation architecture, dashboard, wizard, or report-content redesign.
|
|
- **Page archetype**: Receipt Page. Review Pack and Stored Report retain Report Page behavior for actual report/output content; this pass changes receipt metadata/detail sections.
|
|
- **Surface budgets**: default long lists are capped at eight rows/items where changed; technical links and proof panels are collapsed or demoted.
|
|
- **Technical Annex / deep-link demotion**: OperationRun proof, evidence snapshot link detail, raw artifact descriptors, raw payload JSON, detector/source metadata, and long governed-subject/item lists are secondary/internal.
|
|
- **Canonical status vocabulary**: Restore Run detail now maps to `Not configured`, `Running`, `Ready`, `Needs attention`, `Failed`, and `Blocked`.
|
|
- **Product Surface exceptions**: none.
|
|
- **Visible complexity outcome**: reduced. No new visible section family was added; internal depth remains available through collapsed/detail sections.
|
|
|
|
## Runtime Changes
|
|
|
|
- Evidence Snapshot: renamed `Evidence dimensions` to `Internal evidence dimensions`, collapsed it by default, removed default artifact-source summary rendering.
|
|
- Baseline Snapshot: capped default governed-subject summary and grouped detail output to eight rows/items; collapsed detailed captured-policy inventory.
|
|
- Restore Run: simplified top-level decision labels/actions, capped default item/foundation outcome rows, completed missing summary counts from recorded item outcomes, moved readiness/proof detail under closed `View technical run details`, kept running OperationRun links out of the primary action, and added explicit post-run evidence operator guidance for completed-vs-running proof gaps.
|
|
- Review Pack: renamed receipt evidence fields to `Evidence basis` / `Evidence completeness`; moved the evidence snapshot link into internal technical detail.
|
|
- Stored Report: renamed technical sections to `Internal report artifact` and `Internal payload details` with support-oriented descriptions.
|
|
|
|
## Safety / Governance
|
|
|
|
- **Persisted truth**: no migrations, tables, columns, enums, or new persisted state.
|
|
- **Graph / remote calls**: no Graph or remote render calls added.
|
|
- **Queues / cron / storage**: no queue, cron, or storage behavior changes.
|
|
- **RBAC**: existing resource policies/scopes retained; customer-safe and entitlement tests passed.
|
|
- **Destructive/high-impact actions**: no destructive actions were materially changed. Existing confirmed/audited actions remain in place for Evidence Snapshot expiry, Review Pack expiry, Restore Run archive/restore/force-delete/bulk/rerun flows.
|
|
- **Global search**: all touched resources remain globally unsearchable: Evidence Snapshot, Baseline Snapshot, Restore Run, Review Pack, Stored Report.
|
|
- **Livewire v4 compliance**: Filament v5 / Livewire v4.1.4 project baseline preserved; no Livewire v3 APIs introduced.
|
|
- **Provider registration**: unchanged; Laravel providers remain in `apps/platform/bootstrap/providers.php`.
|
|
- **Asset strategy**: no new assets registered. No `filament:assets` deployment step is newly required by this pass.
|
|
- **Deployment impact**: no env vars, migrations, queues, storage volumes, or Dokploy runtime changes.
|
|
|
|
## Browser Proof
|
|
|
|
Focused browser proof is textual, not durable screenshot-based. Pest Browser removes successful screenshots from the host test directory, and the copy helper did not leave stable PNG artifacts under `specs/397-receipt-page-reduction/artifacts/`.
|
|
|
|
Command:
|
|
|
|
```bash
|
|
cd apps/platform && ./vendor/bin/sail artisan test tests/Browser/Spec397ReceiptPageReductionSmokeTest.php
|
|
```
|
|
|
|
Result: passed, 1 test / 70 assertions.
|
|
|
|
Covered routes/surfaces:
|
|
|
|
- Evidence Snapshot detail: `Outcome summary`, `Evidence basis and readiness`, `Evidence coverage summary`, `Internal evidence dimensions`; no default `Artifact source`.
|
|
- Baseline Snapshot detail: `Coverage summary`, capped governed subjects, first eight visible, additional rows demoted.
|
|
- Restore Run detail: completed and running paths cover `Needs attention`, `Running`, `View technical run details`, `Monitor restore progress`, capped item outcomes, no default OperationRun proof/link or raw restore payload, Next Action opens the demoted technical detail target, completed-without-evidence links to existing Evidence snapshots capture, and running proof gaps do not expose an evidence-capture CTA.
|
|
- Review Pack detail: output guidance and pack readiness visible; internal evidence detail remains hidden by default in technical detail.
|
|
- Stored Report detail: report scope/summary precede `Internal report artifact` and `Internal payload details`; no default `Raw payload`.
|
|
|
|
## Human Product Sanity
|
|
|
|
- **Five-second scan**: pass. Each touched receipt now exposes outcome/scope/readiness before raw proof detail.
|
|
- **Customer-safe boundary**: pass. Customer/default paths do not lead with raw evidence IDs, OperationRun proof, raw payload labels, source keys, or detector metadata.
|
|
- **Visible complexity**: reduced. Long tables and proof panels are capped/collapsed; no new visible navigation or page family added.
|
|
|
|
## Validation
|
|
|
|
Feature / Filament receipt tests:
|
|
|
|
```bash
|
|
cd apps/platform && ./vendor/bin/sail artisan test \
|
|
tests/Feature/Evidence/EvidenceSnapshotResourceTest.php \
|
|
tests/Feature/Filament/BaselineSnapshotStructuredRenderingTest.php \
|
|
tests/Feature/Filament/Spec335RestoreRunDetailProductizationTest.php \
|
|
tests/Feature/ReviewPack/ReviewPackResourceTest.php \
|
|
tests/Feature/StoredReports/StoredReportDetailPresentationTest.php \
|
|
tests/Feature/Filament/Spec372CustomerAuditorSurfaceSafetyTest.php \
|
|
tests/Feature/Filament/Artifacts/ArtifactSourceTaxonomySurfaceTest.php
|
|
```
|
|
|
|
Result: direct receipt files passed; initial run exposed one stale taxonomy assertion, fixed and rerun:
|
|
|
|
```bash
|
|
cd apps/platform && ./vendor/bin/sail artisan test tests/Feature/Filament/Artifacts/ArtifactSourceTaxonomySurfaceTest.php
|
|
```
|
|
|
|
Result: passed, 2 tests / 24 assertions.
|
|
|
|
Review-fix focused rerun:
|
|
|
|
```bash
|
|
cd apps/platform && ./vendor/bin/sail artisan test \
|
|
tests/Feature/Filament/Spec335RestoreRunDetailProductizationTest.php \
|
|
tests/Feature/Filament/Spec390RestoreReadinessGuidanceTest.php \
|
|
tests/Feature/Filament/RestoreResultAttentionSurfaceTest.php
|
|
```
|
|
|
|
Result: passed, 22 tests / 127 assertions.
|
|
|
|
Safety and boundary tests:
|
|
|
|
```bash
|
|
cd apps/platform && ./vendor/bin/sail artisan test \
|
|
tests/Feature/BulkDeleteRestoreRunsTest.php \
|
|
tests/Feature/BulkRestoreRestoreRunsTest.php \
|
|
tests/Feature/RestoreRunArchiveGuardTest.php \
|
|
tests/Feature/Reviews/CustomerReviewWorkspaceLaunchLinksTest.php \
|
|
tests/Feature/ReviewPack/Spec392CustomerOutputRouteGateTest.php \
|
|
tests/Feature/ReviewPack/ReviewPackRbacTest.php \
|
|
tests/Feature/StoredReports/StoredReportEntitlementEnforcementTest.php \
|
|
tests/Feature/Filament/BaselineSnapshotAuthorizationTest.php \
|
|
tests/Feature/Filament/BaselineSnapshotRelatedContextTest.php
|
|
```
|
|
|
|
Result: passed, 34 tests / 126 assertions.
|
|
|
|
Browser regression tests:
|
|
|
|
```bash
|
|
cd apps/platform && ./vendor/bin/sail artisan test \
|
|
tests/Browser/Spec277StoredReportsSurfaceSmokeTest.php \
|
|
tests/Browser/Spec282GovernanceArtifactRetargetingSmokeTest.php \
|
|
tests/Browser/Spec284ArtifactSourceTaxonomySmokeTest.php \
|
|
tests/Browser/Spec335RestoreRunDetailProductizationSmokeTest.php \
|
|
tests/Browser/Spec372CustomerAuditorSurfaceSafetySmokeTest.php \
|
|
tests/Browser/Spec376BrowserAuditFixtureCoverageSmokeTest.php
|
|
```
|
|
|
|
Result: Spec277, Spec335, Spec372, and Spec376 passed; initial Spec282/Spec284 failures were stale visible-text expectations after receipt reduction. Fixed and reran:
|
|
|
|
```bash
|
|
cd apps/platform && ./vendor/bin/sail artisan test \
|
|
tests/Browser/Spec282GovernanceArtifactRetargetingSmokeTest.php \
|
|
tests/Browser/Spec284ArtifactSourceTaxonomySmokeTest.php
|
|
```
|
|
|
|
Result: passed, 2 tests / 59 assertions.
|
|
|
|
Review-fix browser reruns:
|
|
|
|
```bash
|
|
cd apps/platform && ./vendor/bin/sail artisan test tests/Browser/Spec397ReceiptPageReductionSmokeTest.php
|
|
```
|
|
|
|
Result: passed, 1 test / 70 assertions.
|
|
|
|
```bash
|
|
cd apps/platform && ./vendor/bin/sail artisan test tests/Browser/Spec335RestoreRunDetailProductizationSmokeTest.php
|
|
```
|
|
|
|
Result: passed, 1 test / 48 assertions.
|
|
|
|
Latest combined browser rerun:
|
|
|
|
```bash
|
|
cd apps/platform && ./vendor/bin/sail artisan test \
|
|
tests/Browser/Spec397ReceiptPageReductionSmokeTest.php \
|
|
tests/Browser/Spec335RestoreRunDetailProductizationSmokeTest.php
|
|
```
|
|
|
|
Result: passed, 2 tests / 118 assertions.
|
|
|
|
Formatting / hygiene:
|
|
|
|
```bash
|
|
cd apps/platform && ./vendor/bin/sail pint --test
|
|
```
|
|
|
|
Result: attempted twice. The full unscoped scan continued emitting broad repo-wide style findings for several minutes and was interrupted to avoid leaving a long-running process.
|
|
|
|
Changed-file Pint:
|
|
|
|
```bash
|
|
cd apps/platform && ./vendor/bin/sail pint --test <changed PHP files>
|
|
```
|
|
|
|
Result: failed once with one touched-file style issue in `BaselineSnapshotPresenter.php`; fixed with Pint and reran successfully: 19 files passed.
|
|
|
|
Review-fix changed-file Pint:
|
|
|
|
```bash
|
|
cd apps/platform && ./vendor/bin/sail pint --test \
|
|
app/Filament/Resources/RestoreRunResource/Presenters/RestoreRunDetailPresenter.php \
|
|
resources/views/filament/infolists/entries/restore-results.blade.php \
|
|
tests/Feature/Filament/Spec335RestoreRunDetailProductizationTest.php \
|
|
tests/Browser/Spec335RestoreRunDetailProductizationSmokeTest.php \
|
|
tests/Browser/Spec397ReceiptPageReductionSmokeTest.php
|
|
```
|
|
|
|
Result: passed, 5 files.
|
|
|
|
Diff whitespace:
|
|
|
|
```bash
|
|
git diff --check
|
|
```
|
|
|
|
Result: passed.
|
|
|
|
## Post-Implementation Analysis
|
|
|
|
- Confirmed no new persisted entity, abstraction framework, enum/status family, Graph call, queue behavior, or compatibility toggle was introduced.
|
|
- Confirmed Product Surface docs were updated for route inventory, design coverage matrix, unresolved restore caveat, and the three existing receipt page reports.
|
|
- Confirmed broader restore create/failure/conflict workflow remains follow-up; this pass verifies completed and running Restore Run detail receipt reduction.
|