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: page.json's _note justifies its prose-in-note citation convention with a parser limitation #5623 removed — the convention now rests on a false premise #7188
packages/spec/liveness/page.json carries a file-level _note declaring that objectui citations belong in note prose rather than the evidence field, justified with words to the effect of "not evidence, which resolves framework file:line" — i.e. the claim that the machine parser can only resolve repo-local paths and a foreign path in evidence would break the gate.
That premise has been false since #5623 taught check:liveness realm attribution: an objectui:-prefixed path in evidence is counted in the foreign bucket and never resolved locally. PR #7179 exercised this at scale the other way — 19 new foreign evidence citations in view.json / field.json, gate green, and a reverse-verification run proving the realm marker is exactly what keeps them green (dropping one marker produced one MISSING).
Why it matters (mildly)
The practice itself is harmless — the gate treats foreign paths identically whether they sit in evidence or note; only the evidenceForeign tally differs.
But the stated reason is dead, and a convention resting on a false premise invites two failure shapes: someone "fixes" page.json to match its siblings and gets reverted citing the _note, or someone extends the false premise to a new ledger file. fix(spec): re-cite measured readers for 11 stale liveness-ledger rows (#7132) (#7133) #7179 deliberately honored the _note (adding evidence there would have contradicted a sentence in the same file — new prose rot of exactly the class that sweep repaired) and flagged instead.
Fix shapes (either is decision-free)
Re-anchor the _note's rationale to the true present-day reason (stylistic uniformity within the file / historical), keeping the convention; or
Retire the convention: move page.json's objectui citations into evidence with realm markers, matching view.json / field.json, and delete the obsolete clause — one file, E22-dated.
Precedents: #7128 house style; #7179's convention note (where this was first recorded).
Dedup
Searched open issues for page.json _note, prose-in-note, evidence realm — nothing. #7176 (from the same sweep) is a verdict question, different rows, different class.
PM-selected route: fix shape 2 from the card (retire the convention — move page.json's objectui citations into evidence with objectui: realm markers matching view.json/field.json, delete the obsolete _note clause, E22-dated). Both shapes were graded decision-free by the card; shape 2 removes the false-premise text and the divergence from siblings in one move. Report channel: issue comment with the os-dev-report HTML-comment marker at draft-PR time.
Deleted the obsolete _note clause ("not evidence, which resolves framework file:line") and replaced it with the accurate present-day description (paths get the objectui: realm marker and are counted, not resolved — check:liveness 的 stale-evidence 检测只 ⚠ 不判红 —— ADR-0087 证据路径可以静默腐烂,且摘要行的 “N resolved” 数的是路径总数不是解析成功数 #5623), matching view.json's equivalent sentence. Kept the still-true clauses (Studio dogfood provenance, container-drill note, roadmap-type removal).
Finding surfaced while implementing: the gate's PATH_RE (in evidence.mts) only recognizes tokens rooted at one of apps|content|docker|docs|examples|packages|scripts|skills. The original prose paths (components/src/renderers/layout/page.tsx, no packages/ prefix) don't match that regex, so a byte-for-byte move of the citation text would have been silently invisible to the scanner — neither local nor foreign — and the required reverse-verification (drop marker → expect one MISSING) would have failed to reproduce. Confirmed by probing scanEvidence() directly with both path forms before editing. Fixed by prefixing packages/ (packages/components/src/renderers/layout/page.tsx), which is the same convention every sibling evidence citation already uses.
Appended — measured objectui @11c1e71e to both new evidence strings, matching the sibling convention exactly — the same objectui pin PR fix(spec): re-cite measured readers for 11 stale liveness-ledger rows (#7132) (#7133) #7179 measured everything else in the same sweep against (stated in that PR's "Measurement provenance" and echoed in regions' own RE-CITED note text), so this makes an already-true fact explicit rather than asserting something new.
No other page.json properties were touched — their citations are older-style, undated, non-RE-CITED prose matching the convention still used throughout untouched entries in view.json / field.json.
Verification evidence
node -e "JSON.parse(...)" — valid JSON.
check:liveness (tsx scripts/liveness/check-liveness.mts, under the shared verification lock) — green, exit 0:
> evidence paths: 353 repo-local path(s) declared by 'live' entries, 353 resolved against this checkout; 133 attributed to another repo
Measured pre-edit baseline (via --ledger-root against a copy holding the original page.json): 131 foreign. Delta: exactly +2, one per moved citation. Local declared/resolved unchanged at 353/353 — no local path leaked, no new MISSING.
node scripts/check-nul-bytes.mjs — OK, 6801 tracked files scanned, no raw control bytes.
Reverse verification (route step 7)
Dropped the objectui: marker from template's new evidence string (via --ledger-root against a mutated scratch copy — tracked worktree file never touched) and re-ran the gate:
evidence paths: 354 repo-local path(s) declared by 'live' entries, 353 resolved against this checkout, 1 MISSING; 132 attributed to another repo
✗ 1 'live' entr(ies) cite a file that is missing from THIS repo:
page/template → packages/components/src/renderers/layout/page.tsx
Exactly one MISSING, naming the row touched. Restored (mutated copy discarded from scratchpad).
PM 机制假设 check
Held exactly: the gate never attempted to resolve the moved objectui: paths locally; the only observable delta was evidenceForeign (+2). No contradiction surfaced.
Activity
os-zhuang commentedon Aug 10, 2026
Triage:
finding+domain:spec-surface(was fully bare)._notemandates is harmless today (the gate treats foreign citations innoteandevidenceidentically sincecheck:liveness的 stale-evidence 检测只 ⚠ 不判红 —— ADR-0087 证据路径可以静默腐烂,且摘要行的 “N resolved” 数的是路径总数不是解析成功数 #5623's realm attribution); only the stated rationale is dead. Prose-accuracy, zero-victim ⇒finding, held for the findings round rather than queued.packages/spec/liveness/page.jsonfile-level_note— verified onorigin/main@5d24f4bit still reads "…cited as prose innote(notevidence, which resolves framework file:line)", i.e. the obsolete parser-limitation premise. Ledger prose ⇒domain:spec-surface(precedent: finding: "no runtime consumer" on docs-shaped dead ledger rows is contradicted by metadata-admin previews — JobPreview rendersjob.label/job.description, TranslationPreview renderstranslation.label/.name#7131, sweep [sweep] Liveness-ledger citation repair — re-cite measured readers for the stale-evidence rows of #7132 + #7133 #7142).page.json _note— nothing; [verdict question] view.jsonlist.striped/list.bordered/list.virtualScrollare LIVE on pass-through-only reads — every measured reader copies the key, none applies it #7176 from the same sweep is a different class (verdict question on different rows).本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
os-help commentedon Aug 10, 2026
Claim — spec-surface seat (session
session_016R9de1FqP7NvwKvqXi92Gh, seat card #6298).pm:queue→pm:dispatched.claude/issue-7188-pagejson-note../objectstack-issue-7188domain:spec-surface(own lane)packages/spec/liveness/page.jsononlyclaude-sonnet-5(S-mechanical tier per the 2026-08-10 model policy)job.label/job.description, TranslationPreview renderstranslation.label/.name#7131 (job/translation ledgers) and [观察] rls.zod.tsusing属性上方的 TSDoc 块仍宣称「Exactly four forms compile」——与同属性.describe()(#6762 修正后)直接矛盾 #6919 (rls.zod.ts). [verdict question] view.jsonlist.striped/list.bordered/list.virtualScrollare LIVE on pass-through-only reads — every measured reader copies the key, none applies it #7176's pending retirement targetsview.json— no overlap with page.json.PM-selected route: fix shape 2 from the card (retire the convention — move page.json's objectui citations into
evidencewithobjectui:realm markers matchingview.json/field.json, delete the obsolete_noteclause, E22-dated). Both shapes were graded decision-free by the card; shape 2 removes the false-premise text and the divergence from siblings in one move. Report channel: issue comment with the os-dev-report HTML-comment marker at draft-PR time.Generated by Claude Code
os-help commentedon Aug 10, 2026
OS-DEV-REPORT
Issue: #7188
Status: done
Branch:
claude/issue-7188-pagejson-notePR: #7424 (draft)
What changed
packages/spec/liveness/page.jsononly, matching the PM-selected fix shape 2:RE-CITED 2026-08-10 (#7133/#7142)entries (template,regions) — page.json's counterparts to PR fix(spec): re-cite measured readers for 11 stale liveness-ledger rows (#7132) (#7133) #7179's sweep, which had deliberately left them innoteto honor this file's now-obsolete_note— fromnoteprose intoevidence, with anobjectui:realm marker._noteclause ("notevidence, which resolves framework file:line") and replaced it with the accurate present-day description (paths get theobjectui:realm marker and are counted, not resolved —check:liveness的 stale-evidence 检测只 ⚠ 不判红 —— ADR-0087 证据路径可以静默腐烂,且摘要行的 “N resolved” 数的是路径总数不是解析成功数 #5623), matchingview.json's equivalent sentence. Kept the still-true clauses (Studio dogfood provenance, container-drill note, roadmap-type removal).PATH_RE(inevidence.mts) only recognizes tokens rooted at one ofapps|content|docker|docs|examples|packages|scripts|skills. The original prose paths (components/src/renderers/layout/page.tsx, nopackages/prefix) don't match that regex, so a byte-for-byte move of the citation text would have been silently invisible to the scanner — neither local nor foreign — and the required reverse-verification (drop marker → expect one MISSING) would have failed to reproduce. Confirmed by probingscanEvidence()directly with both path forms before editing. Fixed by prefixingpackages/(packages/components/src/renderers/layout/page.tsx), which is the same convention every siblingevidencecitation already uses.— measured objectui @11c1e71eto both newevidencestrings, matching the sibling convention exactly — the same objectui pin PR fix(spec): re-cite measured readers for 11 stale liveness-ledger rows (#7132) (#7133) #7179 measured everything else in the same sweep against (stated in that PR's "Measurement provenance" and echoed inregions' own RE-CITED note text), so this makes an already-true fact explicit rather than asserting something new.view.json/field.json.Verification evidence
node -e "JSON.parse(...)"— valid JSON.check:liveness(tsx scripts/liveness/check-liveness.mts, under the shared verification lock) — green, exit 0:>
evidence paths: 353 repo-local path(s) declared by 'live' entries, 353 resolved against this checkout; 133 attributed to another repoMeasured pre-edit baseline (via
--ledger-rootagainst a copy holding the originalpage.json): 131 foreign. Delta: exactly +2, one per moved citation. Local declared/resolved unchanged at 353/353 — no local path leaked, no new MISSING.check:empty-state— green, unaffected (unrelated content).node scripts/check-nul-bytes.mjs— OK, 6801 tracked files scanned, no raw control bytes.Reverse verification (route step 7)
Dropped the
objectui:marker fromtemplate's newevidencestring (via--ledger-rootagainst a mutated scratch copy — tracked worktree file never touched) and re-ran the gate:Exactly one MISSING, naming the row touched. Restored (mutated copy discarded from scratchpad).
PM 机制假设 check
Held exactly: the gate never attempted to resolve the moved
objectui:paths locally; the only observable delta wasevidenceForeign(+2). No contradiction surfaced.Scope / process
["size/xs"]→ wrote union["size/xs", "skip-changeset"]→ confirmed["size/xs","skip-changeset"].Generated by Claude Code
fix(spec): retire page.json's obsolete prose-in-note citation mandate (…