Found while burning packages/types/README.md out of check-doc-snippet-types.mjs's UNGATED_DOCS ledger (objectui#5174, batch 21). Filed unassigned and NOT repaired there: that batch's licence is the ledger entry plus whatever the ts/tsx blocks need to compile, and neither item below lives in a ts/tsx block, so no gate in that batch's family reads either one.
Measured on origin/main a9e6f04b4.
1. The architecture diagram names a protocol floor two majors behind the manifest
packages/types/README.md:32, inside the "Architecture: The Inheritance Chain" diagram:
@objectstack/spec (v15.x) ← The "Highest Law" - Universal protocol
packages/types/package.json:95 declares "@objectstack/spec": "^17.0.0", and the installed copy in this workspace answers 17.2.0. So the page tells a reader the highest law is v15.x while the package it documents refuses anything below 17.
Why no gate catches it: scripts/__tests__/doc-version-claims.test.ts does scan packages/*/README.md, but it parses version claims out of dependency lines in install blocks, and this claim sits in a plain unlabelled fenced diagram. check-doc-snippet-types.mjs never sees it either — the fence carries no ts/tsx language, so it is not a covered block even now that the page has left the ledger. git grep finds this spelling in exactly one file, so it is one line, not a population.
2. The page carries TWO ## Links sections that disagree with each other
packages/types/README.md:324 and :337 (line numbers on the batch-21 branch; :304 and :317 on a9e6f04b4). The second section repeats three of the first section's entries under different hosts:
| entry |
first section |
second section |
| Documentation |
https://www.objectui.org/docs/api/schema-reference |
https://objectui.org/docs/api/schema-reference |
| npm |
https://www.npmjs.com/package/@object-ui/types |
https://www.npmjs.com/package/@object-ui/types |
| GitHub |
(repo issue / contributing / roadmap links) |
https://github.com/objectstack-ai/objectui |
## License sits between them, so the duplicate is not adjacent and reads as an editing accident rather than a deliberate split. check-doc-links.mjs is green over both because every URL resolves — it judges reachability, not that a page states its canonical host once.
Reachability, honestly
Neither is runtime behaviour. Item 1 misinforms a reader about the peer floor: someone following it pins @objectstack/spec at v15 and the install fails against the ^17.0.0 this package demands, which is the same class of harm objectui#3645 recorded for the frozen ^3.3.0 / Node 18 claims. Item 2 is presentation.
Suggested handling
Both are one-line repairs in a single docs-only change, but they belong to two different gate families, so triage may want to split them. Item 1 additionally raises the question of whether doc-version-claims' scan surface should reach unlabelled fenced blocks — that is a scope decision for the gate's owner, not something to settle inside a docs fix.
Generated by Claude Code
Found while burning
packages/types/README.mdout ofcheck-doc-snippet-types.mjs'sUNGATED_DOCSledger (objectui#5174, batch 21). Filed unassigned and NOT repaired there: that batch's licence is the ledger entry plus whatever the ts/tsx blocks need to compile, and neither item below lives in a ts/tsx block, so no gate in that batch's family reads either one.Measured on
origin/maina9e6f04b4.1. The architecture diagram names a protocol floor two majors behind the manifest
packages/types/README.md:32, inside the "Architecture: The Inheritance Chain" diagram:packages/types/package.json:95declares"@objectstack/spec": "^17.0.0", and the installed copy in this workspace answers17.2.0. So the page tells a reader the highest law is v15.x while the package it documents refuses anything below 17.Why no gate catches it:
scripts/__tests__/doc-version-claims.test.tsdoes scanpackages/*/README.md, but it parses version claims out of dependency lines in install blocks, and this claim sits in a plain unlabelled fenced diagram.check-doc-snippet-types.mjsnever sees it either — the fence carries no ts/tsx language, so it is not a covered block even now that the page has left the ledger.git grepfinds this spelling in exactly one file, so it is one line, not a population.2. The page carries TWO
## Linkssections that disagree with each otherpackages/types/README.md:324and:337(line numbers on the batch-21 branch;:304and:317ona9e6f04b4). The second section repeats three of the first section's entries under different hosts:https://www.objectui.org/docs/api/schema-referencehttps://objectui.org/docs/api/schema-referencehttps://www.npmjs.com/package/@object-ui/typeshttps://www.npmjs.com/package/@object-ui/typeshttps://github.com/objectstack-ai/objectui## Licensesits between them, so the duplicate is not adjacent and reads as an editing accident rather than a deliberate split.check-doc-links.mjsis green over both because every URL resolves — it judges reachability, not that a page states its canonical host once.Reachability, honestly
Neither is runtime behaviour. Item 1 misinforms a reader about the peer floor: someone following it pins
@objectstack/specat v15 and the install fails against the^17.0.0this package demands, which is the same class of harm objectui#3645 recorded for the frozen^3.3.0/ Node 18 claims. Item 2 is presentation.Suggested handling
Both are one-line repairs in a single docs-only change, but they belong to two different gate families, so triage may want to split them. Item 1 additionally raises the question of whether
doc-version-claims' scan surface should reach unlabelled fenced blocks — that is a scope decision for the gate's owner, not something to settle inside a docs fix.Generated by Claude Code