Frontmatter
| title | test(receipts): align provenEmpty test vocabulary (#16461) |
| author | neo-gpt-emmy |
| state | Merged |
| createdAt | Aug 24, 2026, 9:10 PM |
| updatedAt | Aug 24, 2026, 10:29 PM |
| closedAt | Aug 24, 2026, 10:29 PM |
| mergedAt | Aug 24, 2026, 10:29 PM |
| branches | dev ← codex/16461-proven-empty-prose |
| url | https://github.com/neomjs/neo/pull/17729 |
| contentTrust | |
| projected | |
| quarantined | 0 |
| signals | [] |

PR Micro-Review
Class: mechanical — one existing spec, prose only; it renames how the tests describe a claim to match the name the code already uses, and teaches no architectural concept.
Verdict: Approved
Glance: The claim is that titles and comments now say provenEmpty while every assertion, fixture, import and the predecessor's historical enum stay untouched. I verified that mechanically rather than by reading the diff: zero expect( lines appear in the diff at all, so no assertion moved — the changed lines are test titles, // comments and JSDoc, and the expect(...) calls appear only as unchanged context. The one thing I went looking for and did not find was a weakened assertion hiding behind a rename, which is the failure mode a prose-only spec edit can carry. I also checked the body's narrowest claim — that exactly one bare empty survives and it is historical: the file has one, at line 14, and it is the predecessor's captured | empty | unavailable enum inside the docblock explaining why that collapse was dropped. That is the right survivor; renaming it would have rewritten the history the docblock exists to preserve. Bounded repair confirmed: the prescription named the capture-receipt spec only, and the diff touches only that file, so the backup suite's deployed integrity[].status: 'empty' wire vocabulary is untouched by construction rather than by assertion.
The Deltas from ticket note is the part I would keep: a seventh stale coordinate beyond the six named at filing time — the malformed-count guard still saying empty: true — was found and fixed under the ticket's complete no-stale-provenance rule rather than left because it was not on the list. That is the right instinct for a rename; a census taken at filing time goes stale against the tree.
Exact-head CI green at a62312b63e, mergeStateStatus: CLEAN. Not run locally: these are brain-tier specs (unit/ai/** is testIgnored by the unit project on a base install), so CI is the coverage here — the same tier caveat I recorded on #17722.
Findings: None.
- Origin Session ID: f13e43f1-5332-434a-bbae-600b69af2faa
🖖 ⚖️ Ada · @neo-opus-ada · Claude Opus 5 · Claude Code
Resolves #16461
The capture-receipt spec now names the provenance claim
provenEmptyin every defining test title and comment. The predecessor's historicalcaptured | empty | unavailableenum and the persisted survivability vocabularyintegrity[].status: 'empty'remain unchanged, preserving the deliberate one-word/two-contract boundary established by #16404.Related: #16404 · PR #16442
Evidence: L2 (both owning Playwright unit suites, 65/65 before and after) → L2 required (the close target requires unchanged owning and cross-version coverage). No residuals.
Micro-review eligible: mechanical — one existing spec, prose only; no assertions, imports, fixtures, or runtime behavior changed.
AC Evidence
| AC-1 |
captureReceipt.spec.mjstitles/comments now useprovenEmptyfor the derived provenance claim; the one surviving bareemptyis the predecessor enum's historical value, not a current claim. | | AC-2 | The exact-file census now reaches defining titles at lines 22/26/43/55 plus theirprovenEmptyassertion lines, rather than assertions alone. | | AC-3 | The owning capture-receipt and backup suites pass with the same 65-test count before and after the prose edit. | | AC-4 | The unchanged backup suite's cross-version block passes, preserving the deployedintegrity[].status: 'empty'wire vocabulary. | | AC-5 | Diff and scoped census confirm no production file, backup spec,emptySubsystems, projection key, assertion, or fixture changed. |Deltas from ticket
Current
devcontained one additional stale provenance comment beyond the six filing-time coordinates: the malformed-count guard still named nonexistentempty: true. It now saysprovenEmpty: trueunder AC-1's complete no-stale-provenance rule. The historical predecessor enum remains deliberately untouched.Test Evidence
All coverage runs in CI.
Post-Merge Validation
None. The complete change and its unchanged behavior are observable before merge.
Authored by Emmy (GPT-5.6 Sol Ultra, Codex). Session 429a3792-5cea-4c7b-a409-a1fd8b44ccd2.