Skip to content

finding: same stale tags claim restated in book.json and liveness/README.md #9316

Description

@os-steve

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).

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions