scripts/check-public-doc-tables.py exits 1 on origin/main at b493f4981, and it runs in the agent-record CI job (ci.yml:160) and in scripts/agent-preflight.sh:68 and in the pre-push hook. So main is red and every branch inherits it, and every push is blocked.
ERROR: the public keyed-table docs are not valid:
- docs/BENCHMARKS.md has 36 prose paragraphs, over the 35 budget
- docs/FEATURES.md has 22 prose paragraphs, over the 21 budget
Measured on a clean detached worktree, not the shared checkout.
Which commit, and why it got through
Bisected over the last 12 commits on main, checking out only the two doc files against a fixed checker:
b493f4981 rc=1 fix(ENG-EXPERT-STREAM) (#1035)
0f8580e26 rc=1 feat(SPEC-MTP-K-GT-1) (#1043)
e34d71379 rc=1 fix(qwen3.5): drop redundant AppleClang capture (#1054) <- introduced
283c7e492 rc=0 record(ORACLE-LLAMACPP-REPIN-STOCK) (#1051)
#1054 added two prose paragraphs to docs/BENCHMARKS.md (:459) and one to docs/FEATURES.md. Its PR body lists its verification: check-doc-checkpoint.py, test_doc_checkpoint.py, check-agent-record.py, test_agent_record.py, git diff --check — check-public-doc-tables.py is not among them, and the contributor states the host had neither CMake nor Clang. It is an external contribution, where CI red is routinely dismissed as a fork artifact (#584 shape), so a real red had good cover to pass unnoticed.
This is NOT the shared-file-budget antipattern
Worth stating, because the reflex is to retire the budget. check-public-doc-tables.py:17 is explicit: "Nothing here budgets the WHOLE FILE. Adding a measurement row must never..." — table ROWS are unbudgeted, only PROSE paragraphs are capped, and :105 repeats that none of the limits bounds the whole file. Adding a measurement (the normal operation) is never blocked. So the gate is behaving as designed and AGENTS.md's "limit an entry, not a shared file" rule is already satisfied.
Do not raise the constants and do not retire the budget. That would be making a red gate green by widening its scope, which AGENTS.md forbids. The content is what is wrong: it was written as prose when the page's contract says content belongs in table ROWS and prose only explains them.
Fix
Move #1054's added content into table rows on both pages, preserving every fact:
docs/BENCHMARKS.md:459 — "Darwin Qwen3.5 build repair (2026-08-16) ... Benchmarking is NOT APPLICABLE ... the binding gate is the Apple Clang build" is a disposition, exactly what a BENCHMARKS row records. There is a keyed table immediately below (:470).
docs/FEATURES.md — "the Qwen3.5 MoE loader builds under Apple Clang with warnings promoted to errors; its layout-refusal path uses the same messages and behavior on every platform" is a platform/feature fact belonging in the feature table.
Do not delete the content and do not merge paragraphs together to slip under the count — that games the counter while leaving the page in the shape the contract rejects.
Also worth fixing
The pre-push hook reports this failure and then offers --no-verify, so the first person to hit an inherited red is invited to push past it. That is how a red like this stays alive across many branches.
scripts/check-public-doc-tables.pyexits 1 onorigin/mainatb493f4981, and it runs in theagent-recordCI job (ci.yml:160) and inscripts/agent-preflight.sh:68and in the pre-push hook. Somainis red and every branch inherits it, and every push is blocked.Measured on a clean detached worktree, not the shared checkout.
Which commit, and why it got through
Bisected over the last 12 commits on
main, checking out only the two doc files against a fixed checker:#1054 added two prose paragraphs to
docs/BENCHMARKS.md(:459) and one todocs/FEATURES.md. Its PR body lists its verification:check-doc-checkpoint.py,test_doc_checkpoint.py,check-agent-record.py,test_agent_record.py,git diff --check—check-public-doc-tables.pyis not among them, and the contributor states the host had neither CMake nor Clang. It is an external contribution, where CI red is routinely dismissed as a fork artifact (#584 shape), so a real red had good cover to pass unnoticed.This is NOT the shared-file-budget antipattern
Worth stating, because the reflex is to retire the budget.
check-public-doc-tables.py:17is explicit: "Nothing here budgets the WHOLE FILE. Adding a measurement row must never..." — table ROWS are unbudgeted, only PROSE paragraphs are capped, and:105repeats that none of the limits bounds the whole file. Adding a measurement (the normal operation) is never blocked. So the gate is behaving as designed and AGENTS.md's "limit an entry, not a shared file" rule is already satisfied.Do not raise the constants and do not retire the budget. That would be making a red gate green by widening its scope, which AGENTS.md forbids. The content is what is wrong: it was written as prose when the page's contract says content belongs in table ROWS and prose only explains them.
Fix
Move #1054's added content into table rows on both pages, preserving every fact:
docs/BENCHMARKS.md:459— "Darwin Qwen3.5 build repair (2026-08-16) ... Benchmarking is NOT APPLICABLE ... the binding gate is the Apple Clang build" is a disposition, exactly what a BENCHMARKS row records. There is a keyed table immediately below (:470).docs/FEATURES.md— "the Qwen3.5 MoE loader builds under Apple Clang with warnings promoted to errors; its layout-refusal path uses the same messages and behavior on every platform" is a platform/feature fact belonging in the feature table.Do not delete the content and do not merge paragraphs together to slip under the count — that games the counter while leaving the page in the shape the contract rejects.
Also worth fixing
The pre-push hook reports this failure and then offers
--no-verify, so the first person to hit an inherited red is invited to push past it. That is how a red like this stays alive across many branches.