PR Gates / CI image pin matches docker/ci (pull_request) Successful in 11s
PR Gates / Docs update reminder (pull_request) Successful in 15s
PR Gates / decisions lifecycle (pull_request) Successful in 20s
PR Gates / Fix proofs (Proves trailers) (pull_request) Successful in 12s
Build ErsatzTV Image / Delimiter ban (release path) (pull_request) Successful in 27s
review-verdict/h10 Awaiting review verdict for 0395567
Review verdict / Set review-verdict status (pull_request_target) Successful in 11s
PR Gates / Script lint and tests (ruff + pytest) (pull_request) Successful in 5m51s
Build ErsatzTV Image / Build & test (.NET) (pull_request) Successful in 8m21s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (pull_request) Successful in 5m58s
Build ErsatzTV Image / Build & push image (amd64) (pull_request) Skipped
Build ErsatzTV Image / Functional E2E (curl + UI contracts) (pull_request) Canceled after 5m47s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (pull_request) Canceled after 0s
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (pull_request) Canceled after 0s
Two findings from the cold review of the pushed head, one of them the more interesting kind: a defect in a file the issue did not list. `test_pr_changed_files.py` DERIVED A WORKFLOW POPULATION FROM `Path.glob`, and it carries two completeness claims over it — "no OTHER workflow writes the review-verdict status", and the delimiter ban over every workflow. Cold review demonstrated it in a disposable clone: one untracked `.yaml` dropped in `.gitea/workflows/` reddens both guards while absent from `git ls-files`. That is the developer-red/CI-green shape #806 exists to remove, in a guard that was never assessed. It was never assessed because #806's body names four files to check and I took that list as the population — which is this issue's own defect, one altitude up, in the work implementing it. My first sweep printed this file among the filesystem-derived populations and I narrowed to the issue's list without saying so. Both call sites now come from the index, `_workflow_files` is registered in `DERIVATIONS` so both proofs cover it, and the audit table in `docs/guard-inventory.md` says plainly that the issue's list was a starting point rather than the population. THREE COUNTS IN `mutation-claims-are-executed.md` WERE INVALIDATED BY THIS CHANGE and not updated: it said thirteen manifest entries, ten behavioural reds, and twelve of thirteen clause-provable. Adding a fourteenth entry makes those fourteen, eleven, and thirteen of fourteen. The record is where `test_mutation_harness.py`'s own docstring sends a reader for that measurement, and the same commit corrected the identical sentence in `docs/guard-inventory.md` — so the tree shipped two same-dated documents contradicting each other on one number. Swept by subject this time rather than by the phrase I had been shown; no other record is stale. Also: * `docs/guard-inventory.md` still said "what falls outside that window" one sentence after arguing the boundary is not a window. * the same file's "one implementation rather than five" read as contradicting the commit message's "rather than two"; both are true at different scopes and the sentence now says which it means. refs #806 Decisions-Edit: yes Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>