Surfaced while fixing #9310 (packages/spec/liveness/doc.json's stale _note
claiming DocSchema declares no tags key). That card's file surface was
doc.json only; this finding records the same stale claim restated in two
more places in the liveness tree, found by grepping sibling liveness files
for the assertion.
Site 1: packages/spec/liveness/book.json:77, the include prop's
note:
"the derived-membership rule — the heart of the §6.2.1 design. CAVEAT,
recorded not hidden: only the GLOB form can match today. The { tag }
variant is declared and the resolver implements it (matchesInclude reads
doc.tags), but DocSchema declares no tags property, so the corpus always
carries tags: undefined and a tag rule matches nothing. Either add
doc.tags or retire the variant (enforce-or-remove)."
Site 2: packages/spec/liveness/README.md:808, the book row:
"Also recorded: the include: { tag } rule variant can never match
(DocSchema declares no tags)"
Why stale: DocSchema declares tags today —
packages/spec/src/system/doc.zod.ts:126,
tags: z.array(z.string()).optional(), declared in 17.0.0 (#4509, ADR-0049).
The { tag } include variant (matchesInclude in book.zod.ts) is live the
moment a doc carries a tag — doc.json's own props.tags entry (status
live, verifiedAt: 2026-08-02) and the README.mddoc row already say
so correctly; only the book.json/README.mdbook-side text lagged.
Scope for whoever picks this up: correct or delete both stale passages so
the ledger tells the truth about what include: { tag } does today. No
behaviour change, no verdict changes — same class of fix as #9310.
Filed unassigned per convention; observation-class (finding, no
pm:queue).
Surfaced while fixing #9310 (
packages/spec/liveness/doc.json's stale_noteclaiming
DocSchemadeclares notagskey). That card's file surface wasdoc.jsononly; this finding records the same stale claim restated in twomore places in the liveness tree, found by grepping sibling liveness files
for the assertion.
Site 1:
packages/spec/liveness/book.json:77, theincludeprop'snote:Site 2:
packages/spec/liveness/README.md:808, thebookrow:Why stale:
DocSchemadeclarestagstoday —packages/spec/src/system/doc.zod.ts:126,tags: z.array(z.string()).optional(), declared in 17.0.0 (#4509, ADR-0049).The
{ tag }include variant (matchesIncludeinbook.zod.ts) is live themoment a doc carries a tag —
doc.json's ownprops.tagsentry (statuslive,verifiedAt: 2026-08-02) and theREADME.mddocrow already sayso correctly; only the
book.json/README.mdbook-side text lagged.Scope for whoever picks this up: correct or delete both stale passages so
the ledger tells the truth about what
include: { tag }does today. Nobehaviour change, no verdict changes — same class of fix as #9310.
Filed unassigned per convention; observation-class (
finding, nopm:queue).