Complete task002 through task016 across cache correctness, editor lifecycle, C boundaries, build and release governance, dictionary provenance, performance, interactive workflows, tests, documentation, and final cleanup.
1.8 KiB
A Report Is Not a Gate Until Failure Propagates
Context
The GUI matrix measured the correct display facts and printed PASS or FAIL, but batch callers always received success. The visible table and the process contract were separate, so release automation could ignore a real overflow.
Decision
Each case returns its measurement plist plus name. One reporting boundary
formats all rows, aggregates :pass, and exits batch Emacs with status 1
after printing the table when any case fails. Interactive use still displays
the report without terminating Emacs.
Keep the matrix under tests/ because it owns showcase fixtures and
developer-only display scenarios. User/developer documentation must load it
explicitly rather than imply that requiring the runtime package defines it.
Alternatives Rejected
Search the rendered table for FAIL
Text parsing duplicates the decision and can diverge from measurement data.
Signal before printing
Automation gets a failure but loses the row evidence needed to diagnose it.
Move the showcase matrix into the runtime package
That expands the installed surface and couples production code to a developer fixture without improving the assertion contract.
Consequences
- Batch success now means every GUI row passed.
- Failure retains a complete diagnostic table and exits exactly 1.
- The report formatter is testable without a graphical display.
- Real pixel correctness still requires a GUI matrix run.
Verification
The missing-boundary control failed 0/1 before implementation. The repaired failure/success controls pass 2/2, both full ERT orders pass 110/110, and the live seven-case matrix passes 7/7. The final screenshot was verified as one fullscreen target buffer with no split or stale client message.
Rollback
Restore string results and report-only behavior. No persisted data needs migration.