Repository navigation
docs(spec): TOP_LEVEL_COLLECTIONS_NEVER_RESIDUAL names the readers of top-level datasets the tree has - #29514
Conversation
…e tree has The docblock said top-level datasets are consumed by AppPlugin straight off the bundle. AppPlugin reads no datasets; a package body's datasets are read by the engine's registerApp METADATA_ARRAY_KEYS loop, and nothing reads a top-level datasets item no body declares. Claude-Session: https://claude.ai/code/session_01JQwxbad6xiDCcLYXcBsEa6 Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JQwxbad6xiDCcLYXcBsEa6 Co-authored-by: Claude <noreply@anthropic.com>
📓 Docs Drift Check
What this run could not see
Coarse fallback — 168 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
|
domain:spec#3 · os-warren · session_01JQwxbahe4v7GBD94QeSnir Contract reviewServed-tier: Inputs read: card #29335 (body, triage 6577799350, claim 6582652162, dev report 6583541780), PR #29514 (body, 2 files, net diff against ① Derived judgments
② Semver level
③ Boundary flags
④ Design judgment
Remainder of the diff (the changeset file): the lane seat's ACCEPT at Implemented-by: VERDICT: PASS Generated by Claude Code |
|
domain:spec#3 · os-warren · session_01JQwxbahe4v7GBD94QeSnir 维护者速读
席位核对ACCEPT ·
Generated by Claude Code |
⛔ merge queue 构建失败 — 先分诊,再决定要不要重排队列构建 41494474291 红了。队列跑的是全量套件(PR 侧 CI 只跑 affected 子集), 分类: 失败的 job(日志抽取,best effort):
跨 PR 相同签名(24h,按失败测试文件聚合):
历史信号:
分诊清单:
Generated by Claude Code · merge-queue-triage workflow (#4859) |
⛔ merge queue 构建失败 — 先分诊,再决定要不要重排队列构建 41495594461 红了。队列跑的是全量套件(PR 侧 CI 只跑 affected 子集), 分类: 失败的 job(日志抽取,best effort):
跨 PR 相同签名(24h,按失败测试文件聚合):
历史信号:
分诊清单:
Generated by Claude Code · merge-queue-triage workflow (#4859) |
|
domain:spec#3 · os-warren · session_01JQwxbahe4v7GBD94QeSnir Landed · 2026-11-02T18:46Z
State change: Generated by Claude Code |
Requested by Warren · project thread
Fixes #29335
Clause-②: no
Metadata-protocol: none
维护者速读
packages/spec/src/stack.zod.ts里TOP_LEVEL_COLLECTIONS_NEVER_RESIDUAL的注释,外加一个 patch changeset。datasets由AppPlugin直接从 bundle 读取,树上没有这个读者;包体的datasets实际由引擎registerApp的METADATA_ARRAY_KEYS循环读取。packages/spec/src/stack.zod.ts的那段注释(约 360 行)。git grep -n "No boot reader takes a top-level" packages/spec/src/stack.zod.ts,预期命中 1 行。What changes
TOP_LEVEL_COLLECTIONS_NEVER_RESIDUALdocblock now names the readers the tree has. Seeddataandjobsare read off the stack whole, top level merged with every body (resolveArtifactCollections,@objectstack/runtime):AppPluginhands the seeddatato the seed loader and schedules thejobs.datasetsare read off the package bodies only, by the engine'sregisterApp(METADATA_ARRAY_KEYS,@objectstack/objectql), and no boot reader takes a top-leveldatasetsitem that no body declares..changeset/29335-residual-datasets-docblock.md:@objectstack/specpatch. The package shipssrc/**/*.zod.tsas source (files[]), so the comment publishes even thoughdist/carries none of it (measured: the new sentence has 0 hits indist/; the constant's name, the positive control, has hits indist/).Readers measured on the tree at
94d3e254(the branch's base before the merge oforigin/main):packages/runtime/src/app-plugin.ts: no read ofdatasetsoff the bundle or its collections. Eachdatasetsword there is the seeddatacollector (seedDatasets,readSeedDatasets,mergeSeedDatasets).packages/objectql/src/engine.ts:METADATA_ARRAY_KEYSlistsdatasets;registerApprunspackageBodyCollectionRefusaland thenregisterMetadataCollectionsover the body's keys.packages/metadata/src/plugin.ts:ARTIFACT_FIELD_TO_TYPEhas nodatasetsrow, sounclaimedTopLevelnever lists one.Tests
pnpm --filter @objectstack/metadata exec vitest run --maxWorkers=2 src/owner-stamp-residual-build-boot.test.ts(the test that pins the constant equal to the boot's rule): 1 file, 27 tests passed, at head061f69c58.pnpm --filter @objectstack/spec typecheck: exit 0, at head061f69c58.Acceptance notes
packages[]stack's top-leveldatasetsitem that no body declares) is not fixed here, per triage's scope. It was measured on a kernel boot and is handed to the spec seat to file as adomain:servercard: the item is dropped with no refusal and no warning.scripts/check-stack-collection-maps.mjs, theARTIFACT_FIELD_TO_TYPErow fordatasets,jobs,datasourcesandtranslations, says all four are consumed functionally by AppPlugin straight off the bundle. Fordatasetsthat is not so. Outside this card's file surface; reported to the seat, not edited.Verification
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackon this diff derived 74 families at061f69c5. All 74 were run; 73 exit 0.pnpm check:dual-build-cjs-loadsexits 3 (PREREQUISITE NOT MET: it needs every workspace package built), so it is NOT MEASURED locally and left to CI.--ranreconciliation: "74 derived famil(ies) accounted for — 73 run, 1 NOT-MEASURED (1 DERIVED from a recorded exit 3)".Human Minimum
packages/specholds no runtime logic.pnpm lintpasses. (No formatter ran.pnpm lintis the repo-wide scan CI owns; not run locally.)main, one pull request.packages/spectouched: its generated artifacts are regenerated and committed.content/docs/references/,packages/*/CHANGELOG.mdorcontent/docs/releases/.🤖 Generated with Claude Code
https://claude.ai/code/session_01JQwxbad6xiDCcLYXcBsEa6
Generated by Claude Code