Repository navigation
docs(spec): component-member read points to the ledger, part 2 of 3 - #23590
Conversation
The read-point records in the doc comments of the second half of src/ui/component.zod.ts move into liveness/page.json, row regions, as one evidence list. Prose and ledger note only. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0121ooBYRmS8ziFXm9ai5YHm
📓 Docs Drift CheckThis PR changes 1 package(s): 2 hand-written doc(s) NAME something this change touched and may need an implementation-accuracy re-verification:
⛔ 5 release-owned page(s) also name something this change touched. These are read-only:
What this run could not see
Coarse fallback — 142 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): Which tree this was computed onThis run read A worktree cut from an older # while this PR is open — GitHub drops the merge commit once it closes
git fetch origin 873c77c7045d47c80aeb65465b96a3e11f8496e2 && git checkout 873c77c7045d47c80aeb65465b96a3e11f8496e2
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin c980d114d3bdde4b2b639650cb762687a8da41fa 3c7f4da05c3258c1427c4d8e4f5d314b947f9f3d && git checkout -B drift-repro c980d114d3bdde4b2b639650cb762687a8da41fa && git merge --no-ff 3c7f4da05c3258c1427c4d8e4f5d314b947f9f3d
node scripts/docs-audit/affected-docs.mjs --json c980d114d3bdde4b2b639650cb762687a8da41fa
|
席位核对
Verdict: ACCEPT. Not governed (
|
Contract reviewServed-tier: ① Derived judgmentsPost-hoc review of PR #23590 (part 2 of 3 of PR-2 for card #23434), judged as if it were still waiting to enter the queue. Inputs: the card body and every comment (rulings Accept set: unchanged (right). Published surface that does change, two things, both right:
No generated docs page changes (no Sentences that could now be false: none found. Checked:
Comment- and ledger-note-only on the published surface: yes. This part publishes changed docblock prose and one changed ledger note, and nothing else. The PR body's sentence "No objectui read point remains in this half" holds on the counts above: what remains in the file are the first half's records (removed by #23589) and objectui commit references that mark a change, which are not read points. Landing check (post-hoc): the squash ② Semver level
③ Boundary flagsEvery flag and
Check-runs on the head: 43, of which 37 Implemented-by: VERDICT: PASS |
Part of #23434
Clause-②: no
Part 2 of 3 of PR-2 for #23434. It executes ruling 6165388570 (letter C, items 1 and 4) and ruling 6181034096 (Q2 → A, Q1 → A), under claim 6181304005.
What this part changes
The read-point records in the doc comments of the second half of
packages/spec/src/ui/component.zod.ts(base lines 7228 to the end: the rest of object-kanban, object-calendar, object-form, object-master-detail-form, object-map, object-gantt, object-tree, object-timeline and the row registrations at the end of the file) move into the liveness ledger.liveness/page.json, rowregions". What the record claims about the renderer stays in the shorter comment. objectui commit references that mark a change, such as "since objectuice991bd70", stay; they are not read points.packages/spec/liveness/page.json, rowregions, gains one evidence list in itsnote: 120 entries in source order, eachCOMPONENT.member: objectui @SHA FILE#SYMBOL. Inside one entry, a letter defined at its head abbreviates a repeated file (P = objectui @SHA FILE, soP#areadsobjectui @SHA FILE#a). The list asserts no verdict: component-level liveness stays unclassified, and no row is added. Where a source line was first cited without a SHA, the entry records the tree it was re-read in on 2026-10-15..changeset/23434-component-read-points-part-2.md:@objectstack/specpatch.src/**/*.zod.tsandlivenessare both in the package'sfiles[], so the packed tarball changes.Changed lines: 2,931 (+533 / -2,398) across 3 files, under the 3,000-line review line. Head
3c7f4da05c.The three parts
PR-2 is over 3,000 changed lines, so it ships as three pull requests split by file range. Each part branches from
origin/main; none is stacked on another.claude/issue-23434-pin-citations-pr2-part1(the first half ofcomponent.zod.ts)claude/issue-23434-pin-citations-pr2-part2(the second half ofcomponent.zod.ts)claude/issue-23434-pin-citations-pr2(the component tests and the other group-C files, the two held-back moves, the other spellings and the regenerated doc). Part 3 carries the issue's closing line.Part 3's body carries the complete acceptance notes: what was left in place and why, the claim-wording conflict, and the census residue.
Census, base
7ffc57846a→ all three parts mergedGroup C = the
ComponentPropsMapmember read points (seat 3's 99). Group R = retirement history, which ruling 6181034096 (Q2 → A) keeps in place.--list, historical`.objectui-sha` pin SHAspelling: group Caction-declarative-update.ts(landed with #23494 after PR-1; item 3)component.zod.ts)b9814b334(re-read there 2026-10-14 …".objectui-shapin with SHA / sha-less /objectui SHAce991bd70", which are not read points)page.regionsnote: 120 entries, 62,138 characters. No schema or gate caps a note's length. Onlyevidenceandproducerare path-scanned bycheck:liveness, andnoteis free text that the lint layer never shows an author.How the three parts were measured
The three parts were built from one verified union branch,
claude/issue-23434-pin-citations-pr2at1646d39e53(all three parts' changes in one tree). The split was then checked mechanically:git merge-treeof part 1 + part 2 + part 3 ontoorigin/maingives a tree whosepackages/specandcontentmatch the union head exactly (empty diff). The three parts merge in any order without conflict. They share one changed line inpackages/spec/liveness/page.json(theregionsnote), and it is byte-identical in all three..tsfile was parsed with TypeScript and compared withorigin/mainon its code tokens, JSDoc and comments excluded. All published files are identical. In three test files, six string literals changed: two test names, onewhyreason string and one assertion-message string. No schema, type, export, default, accept or refuse change, and no.describe()text change.objectui @SHA FILE#SYMBOLin the new evidence list and in the edited ledger notes was resolved against an objectui clone at that SHA: the file exists and the symbol occurs in it. 656 references in the 120 entries and 32 in the other notes; 0 unresolved. A negative control (a bogus path and two bogus symbols) reported 3 of 3.Union head
1646d39e53, throughscripts/pm/os-verify-lock.sh:pnpm --filter @objectstack/spec build: VERDICT command-exit 0.check-generated.ts --fix: 1 of 14 artefacts stale (content/docs/references/ui/expression-bindable-text-keys.mdx, from part 3's shortened docblock), regenerated. The re-check afterwards: "All 14 generated artifacts are up to date".pnpm --filter @objectstack/spec typecheck(tsc, scripts and test typecheck): exit 0.vitest run --project local: Test Files 678 passed (678), Tests 20728 passed, 1 todo.vitest run --project repo: Test Files 61 passed (61), Tests 1033 passed.node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack, each exit code captured before any pipe, then--ran: "103 derived famil(ies) accounted for — 99 run, 4 NOT-MEASURED". The 4 recorded exit 3 (prerequisite not built): lintcheck:doc-formula-expressions,check:dual-build-cjs-loads,check:i18n,check:lean-entry-closure. One RED that comes from the base, not this diff:check:platform-checklistexits 1 with ABSENT SYMBOL findings indocs/qa/platform-checklist/areas/{access-security,attachments-storage,search}.json. They point atpackages/metadata-protocolandservice-storage, which no part touches; PR-1 reported the same findings. The other 98 exited 0, includingcheck:liveness,check:nul-bytes,check:issue-citationsandcheck-spec-docblock-symbol-anchors. On the anchors gate, "citations name no tracked file" went from 1965 on the base to 228.This part's own tree (
3c7f4da05c), through the lock: spec build exit 0;vitest run --project local src/ui/component: Test Files 27 passed (27), Tests 1466 passed. Thencheck:generated,check:liveness,check-spec-docblock-symbol-anchorsandcheck:nul-bytesall exited 0. The full derived battery ran on the union and on part 3's head, not on this part alone (a declared narrowing). CI runs the full set on this pull request.Acceptance notes
skip-changesetdoes not apply, because a published file changes and the patch changeset is present. The dispatch named no other label.view.zod.ts,stack.zod.ts,component.test.tsand similar), and one counting-method sentence, "that identifier in eachsrc/index.tsx". That sentence describes how the object-treeElementDataSourceGatecount was taken; the counted files and symbols are in that member's entry. No objectui read point remains in this half.Generated by Claude Code