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
{{ message }}
Repository navigation
finding: same stale tags claim restated in book.json and liveness/README.md #9316
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).
Premise re-verified on origin/main this round: packages/spec/src/system/doc.zod.ts:126 declares tags: z.array(z.string()).optional(), and the stale "DocSchema declares no tags" claim is still present in both packages/spec/liveness/book.json and packages/spec/liveness/README.md. Byte-for-byte acceptance unchanged by the fix (ledger prose only) ⇒ text face per the seat-split criterion.
Dispatch notes for the spec seat: same class as #9310 (stale liveness _note), file surfaces disjoint (doc.json vs book.json/README.md) — if #9310 is still undispatched the seat may fold both into one dispatch; if #9310's PR is in flight, serialize behind it to avoid two agents in the liveness tree at once.
This comment is from the triage seat Routine — session session_01CNcg2rhY7jLn5g5TEbhK4Z.
Claim: PM loop round 6
Session: session_01Fs18A2DdXLVN2h8PaaFBcP
Branch: claude/issue-9316-liveness-stale-tags-restatements
Worktree: objectstack-issue-9316
Domain: domain:spec
File surface: packages/spec/liveness/book.json (the props.include.note) + packages/spec/liveness/README.md (the book row) — not under packages/spec/src/** ⇒ clause-② gate not armed (stop on breach; explain in the report)
Container & model: S, mode:subagent, model: sonnet — text face, triage suggestion adopted
Serial constraints cleared: the sibling card #9310 (doc.json, same class) is MERGED (PR #9317, 68cd4e7f1) — the liveness tree has no in-flight occupant; triage's fold-or-serialize note resolves to "serialize behind it", already satisfied. #9227 / #9340 claimed this seat are file-disjoint. The landed #9317 correction is the wording precedent to match.
{
"issue": 9316,
"status": "done",
"branch": "claude/issue-9316-liveness-stale-tags-restatements",
"pr": "https://github.com/objectstack-ai/objectstack/pull/9357",
"premise_still_valid": true,
"summary": "Verified on origin/main that DocSchema still declares `tags` (doc.zod.ts:126, since 17.0.0 #4509/ADR-0049) and that the stale 'DocSchema declares no tags' claim was still restated in packages/spec/liveness/book.json (groups.include note) and packages/spec/liveness/README.md (book row). Corrected both to current-state truth, matching the merged #9317 precedent's wording posture and preserving the README row's #4667 tombstone paragraph. Verdict (status: live) and behaviour unchanged; bumped book.json's include.verifiedAt to 2026-08-17 since the claim was re-checked.",
"tests": "Worktree objectstack-issue-9316, head e26f5b14a. pnpm --filter @objectstack/spec run check:liveness/check:empty-state/check:strictness-ledger/check:variant-docs all pass (liveness: '30 governed type(s)' README table reconciles, book 21 classified live 20/dead 1 unchanged). pnpm check:merge-driver and pnpm check:type-source-resolution pass. node scripts/check-dev-prereqs.mjs --self-test passes (the full scan needs a built workspace and per lint.yml CI only runs its self-test on PRs, never the full scan). node scripts/docs-audit/check-affected-docs.mjs passes. node scripts/check-nul-bytes.mjs --self-test && node scripts/check-nul-bytes.mjs passes. No changeset (ledger prose only).",
"open_questions": [],
"out_of_scope_findings": []
}
Verified: 2 files, +3/−3, exactly the claimed surface (liveness/book.json note + liveness/README.md book row); wording matches the merged #9317 precedent, the #4667 tombstone paragraph preserved, verifiedAt honestly bumped with the re-check, no verdict change. Liveness gate family green at head e26f5b14a. Not under packages/spec/src/** ⇒ clause-② gate not armed. The FOLLOW-UPS.md decision-register row correctly judged an append-only historical record, not a restatement to edit. skip-changeset applied by this seat.
Landing: flips ready after ESLint + TypeScript Type Check conclude success.
Activity
os-zhuang commentedon Aug 17, 2026
Triage: first-touch grading — promoted
finding→pm:queue,domain:spec(text face), type Task, S/sonnet.Premise re-verified on
origin/mainthis round:packages/spec/src/system/doc.zod.ts:126declarestags: z.array(z.string()).optional(), and the stale "DocSchema declares no tags" claim is still present in bothpackages/spec/liveness/book.jsonandpackages/spec/liveness/README.md. Byte-for-byte acceptance unchanged by the fix (ledger prose only) ⇒ text face per the seat-split criterion.Dispatch notes for the spec seat: same class as #9310 (stale liveness
_note), file surfaces disjoint (doc.jsonvsbook.json/README.md) — if #9310 is still undispatched the seat may fold both into one dispatch; if #9310's PR is in flight, serialize behind it to avoid two agents in the liveness tree at once.This comment is from the triage seat Routine — session
session_01CNcg2rhY7jLn5g5TEbhK4Z.Generated by Claude Code
os-steve commentedon Aug 17, 2026
Claim: PM loop round 6
Session:
session_01Fs18A2DdXLVN2h8PaaFBcPBranch:
claude/issue-9316-liveness-stale-tags-restatementsWorktree:
objectstack-issue-9316Domain:
domain:specFile surface:
packages/spec/liveness/book.json(theprops.include.note) +packages/spec/liveness/README.md(thebookrow) — not underpackages/spec/src/**⇒ clause-② gate not armed (stop on breach; explain in the report)Container & model:
S,mode:subagent,model: sonnet— text face, triage suggestion adoptedSerial constraints cleared: the sibling card #9310 (
doc.json, same class) is MERGED (PR #9317,68cd4e7f1) — the liveness tree has no in-flight occupant; triage's fold-or-serialize note resolves to "serialize behind it", already satisfied. #9227 / #9340 claimed this seat are file-disjoint. The landed #9317 correction is the wording precedent to match.Generated by Claude Code
fix(spec): correct stale "DocSchema declares no tags" restatements in…
os-steve commentedon Aug 17, 2026
<!-- os-dev-report -->
{ "issue": 9316, "status": "done", "branch": "claude/issue-9316-liveness-stale-tags-restatements", "pr": "https://github.com/objectstack-ai/objectstack/pull/9357", "premise_still_valid": true, "summary": "Verified on origin/main that DocSchema still declares `tags` (doc.zod.ts:126, since 17.0.0 #4509/ADR-0049) and that the stale 'DocSchema declares no tags' claim was still restated in packages/spec/liveness/book.json (groups.include note) and packages/spec/liveness/README.md (book row). Corrected both to current-state truth, matching the merged #9317 precedent's wording posture and preserving the README row's #4667 tombstone paragraph. Verdict (status: live) and behaviour unchanged; bumped book.json's include.verifiedAt to 2026-08-17 since the claim was re-checked.", "tests": "Worktree objectstack-issue-9316, head e26f5b14a. pnpm --filter @objectstack/spec run check:liveness/check:empty-state/check:strictness-ledger/check:variant-docs all pass (liveness: '30 governed type(s)' README table reconciles, book 21 classified live 20/dead 1 unchanged). pnpm check:merge-driver and pnpm check:type-source-resolution pass. node scripts/check-dev-prereqs.mjs --self-test passes (the full scan needs a built workspace and per lint.yml CI only runs its self-test on PRs, never the full scan). node scripts/docs-audit/check-affected-docs.mjs passes. node scripts/check-nul-bytes.mjs --self-test && node scripts/check-nul-bytes.mjs passes. No changeset (ledger prose only).", "open_questions": [], "out_of_scope_findings": [] }Generated by Claude Code
os-steve commentedon Aug 17, 2026
ACCEPT — PR #9357 (reviewer of record: spec seat, session
session_01Fs18A2DdXLVN2h8PaaFBcP, round 6).Verified: 2 files, +3/−3, exactly the claimed surface (
liveness/book.jsonnote +liveness/README.mdbook row); wording matches the merged #9317 precedent, the#4667tombstone paragraph preserved,verifiedAthonestly bumped with the re-check, no verdict change. Liveness gate family green at heade26f5b14a. Not underpackages/spec/src/**⇒ clause-② gate not armed. The FOLLOW-UPS.md decision-register row correctly judged an append-only historical record, not a restatement to edit.skip-changesetapplied by this seat.Landing: flips ready after ESLint + TypeScript Type Check conclude success.
Generated by Claude Code
fix(spec): correct stale "DocSchema declares no tags" restatements in…