You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The record-anchor ratchet's own public figures are gated by nothing: restoring the wrong pre-#851 numbers into docs/BENCHMARKS.md leaves check-public-doc-tables AND check-agent-record both green #1324
ENG-RECORD-ANCHOR-RATCHET (#632) landed in #851 as 678fc672c. The row's own figures are published in two public projections, and no gate reads either of them. The ratchet reads only the code and tests cells of matrix rows; docs/ prose is outside RECORD_ANCHOR_FIELDS by construction, and check-public-doc-tables.py measures shape (sections, paragraph length, cell length) and never a value.
Measured, not predicted
At af87251c5, restoring the WRONG pre-#851 figures into docs/BENCHMARKS.md:14:
-Rot **38** (32 stale, 6 broken) over **844** OK, **32 in range**+Rot **39** (32 stale, 7 broken) over **828** OK, **32 in range**
Both green. The rot the checker actually derived in that same run was stale=32, broken=6, and the page said 7 broken beside it. The tree was restored byte-for-byte afterwards (sha256 7f63ca97141e9bffc025d728c95c2bf8254e7fbf71679fa8ab24d94d23a6fad0 before and after).
Instance 3 also shows why chasing the number is not the fix: ok moves on every merge that adds or removes a citation, so any pinned value is false again after the next one. record-anchor-baseline.json already refuses to store the OK count for exactly this reason, in its own _comment. The follow-up branch row/RECORD-ANCHOR-DOC-DRIFT drops the count from all four surfaces that carried it and leaves only the ratcheted rot and the SHA-anchored population figures at 8daa67b39. That repairs the three instances. It does not close the gap, because nothing stops the fourth.
Any repair is a semantic checker change and owes a spec, a red-before mutation, and green-after evidence per AGENTS.md §Changing the rules or a checker. It also has a design decision to make first: whether the derived figures are asserted against the page (a new lock on docs/, which #364 is the standing argument against) or whether the page stops stating derived values at all and the derivation stays in --report. The second shape is what the baseline JSON already chose for itself.
Owning row: ENG-RECORD-ANCHOR-RATCHET, listed under ## Owed in .agents/specs/record-anchor-ratchet.md.
ENG-RECORD-ANCHOR-RATCHET(#632) landed in #851 as678fc672c. The row's own figures are published in two public projections, and no gate reads either of them. The ratchet reads only thecodeandtestscells of matrix rows;docs/prose is outsideRECORD_ANCHOR_FIELDSby construction, andcheck-public-doc-tables.pymeasures shape (sections, paragraph length, cell length) and never a value.Measured, not predicted
At
af87251c5, restoring the WRONG pre-#851 figures intodocs/BENCHMARKS.md:14:Both green. The rot the checker actually derived in that same run was
stale=32, broken=6, and the page said7 brokenbeside it. The tree was restored byte-for-byte afterwards (sha2567f63ca97141e9bffc025d728c95c2bf8254e7fbf71679fa8ab24d94d23a6fad0before and after).Three instances, none caught by a gate
main. feat(ENG-RECORD-ANCHOR-RATCHET): the record checker range-checks its own citations and reports nothing (#632) #851 landedover **844** OKindocs/BENCHMARKS.md:14andover 844 correctindocs/STATUS.md:100. At its own merge commit678fc672cthe tree readsok=847— three good citations landed onmainbetween verification and merge. The figure was false the moment it landed, and every gate stayed green.Instance 3 also shows why chasing the number is not the fix:
okmoves on every merge that adds or removes a citation, so any pinned value is false again after the next one.record-anchor-baseline.jsonalready refuses to store theOKcount for exactly this reason, in its own_comment. The follow-up branchrow/RECORD-ANCHOR-DOC-DRIFTdrops the count from all four surfaces that carried it and leaves only the ratcheted rot and the SHA-anchored population figures at8daa67b39. That repairs the three instances. It does not close the gap, because nothing stops the fourth.What this is not
file:lineanchors. Different surface (.agents/specs/), different content: anchors, not derived counts.OK. That is about what the checker measures. This is about a figure the checker does not read at all..agents/model-matrix.mdprose counters are ungated while the rollup table beside them is gated bycheck-model-checklist.py. Same class, different file, different owning checker. Whoever takes either should read the other first.Why this is filed rather than fixed
Any repair is a semantic checker change and owes a spec, a red-before mutation, and green-after evidence per AGENTS.md §Changing the rules or a checker. It also has a design decision to make first: whether the derived figures are asserted against the page (a new lock on
docs/, which #364 is the standing argument against) or whether the page stops stating derived values at all and the derivation stays in--report. The second shape is what the baseline JSON already chose for itself.Owning row:
ENG-RECORD-ANCHOR-RATCHET, listed under## Owedin.agents/specs/record-anchor-ratchet.md.