Repository navigation
fix(spec): repoint the query.searchFields liveness row at engine-find.ts#expandSearchOnAst - #30368
Conversation
…ne.ts with the codemod's third pass (slice 1 of 2) scripts/codemod-split-engine.mjs gains --hand-docs: a private hand-series stub's docblock moves onto the function in its hand module (replacing the placeholder, one level out), the stub's marker says so, the module header gains one note; public and protected docblocks stay on the class. The proof undoes every move and rebuilds the base engine.ts and hand modules byte for byte. This slice runs it on 8 hand modules (929 docblock lines). Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Utp6CYHBS7P5hkUQrNHkHZ
…n earlier slice landed in The proof now undoes every move in the head and in the base and compares the two, so the second slice's in-run proof holds on the first slice's output and against the unsliced base alike. One self-test case pins it. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Utp6CYHBS7P5hkUQrNHkHZ
…ed, and prove the prune
noUnusedLocals counts a JSDoc {@link X} as a read, so five engine.ts
import bindings went unused once their docblocks moved. --hand-docs now
prunes them (and the // lines directly above a declaration that goes
whole); the proof recomputes the prune from the head and requires every
pruned name to be linked by a moved docblock. Re-run on main a26abbc:
the tree equals a fresh --write there.
Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Utp6CYHBS7P5hkUQrNHkHZ
…cs proof An ablation of the per-module comparison stayed green: every case so far edited a moved docblock, which the engine.ts half catches. One case now edits a body byte in a hand module. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Utp6CYHBS7P5hkUQrNHkHZ
Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Utp6CYHBS7P5hkUQrNHkHZ
…agged marker as a hand stub Its marker is 'The body lives in' with no tag, so the pass saw 85 of the 86 hand stubs. The fixture's beta stub now carries the untagged form. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Utp6CYHBS7P5hkUQrNHkHZ
….ts#expandSearchOnAst The cited engine.ts no longer names searchFields: the private docblock that did moved into its hand module with the first hand-docs slice. The body has lived in engine-find.ts since the codemod split. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Utp6CYHBS7P5hkUQrNHkHZ
📓 Docs Drift Check
What this run could not see
Coarse fallback — 170 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
|
domain:server#3 · os-bill · session_01Utp6CbPxYq1wQmUNWvMZkC Guard note · 2026-11-05T08:13Z
|
|
domain:server#3 · os-bill · session_01Utp6CbPxYq1wQmUNWvMZkC 席位核对ACCEPT · head
|
Brings in #30368 (the query.searchFields liveness repoint), which clears main's red on Spec property liveness and Test Core. Claude-Session: https://claude.ai/code/session_01WGufzfqCqBH59yrHmuqXH3 Co-authored-by: Claude <noreply@anthropic.com>
…ect-thread-8y2k2m Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Utp6CZ1rxZPzain2p5bv5x
Requested by Bill · project thread
Fixes #30367
Refs #30053
Clause-②: no
Metadata-protocol: none
维护者速读
packages/spec/liveness/query.json里searchFields一行的证据第一段从engine.ts#expandSearchOnAst改指engine-find.ts#expandSearchOnAst,note 补一句为什么改;加一个@objectstack/specpatch changeset(liveness 目录随包发布)。engine.ts里最后一处提到searchFields的私有 docblock 搬进了手写模块,check:liveness要求被引文件提到键名,于是 main 红了(Spec Liveness Check 不是必需检查,所以 refactor(objectql): move 36 hand-series private docblocks out of engine.ts with the codemod's third pass (slice 1 of 2) #30341 照样合并了;Lint UI 会跑它)。函数体从 codemod 拆分起就在engine-find.ts,那里提到searchFields。没有在engine.ts里硬加一处提及。pnpm --filter @objectstack/spec check:liveness,退出码 0。What changes
packages/spec/liveness/query.json, rowquery.searchFields: the evidence's first leg citespackages/objectql/src/engine-find.ts#expandSearchOnAst(wasengine.ts#expandSearchOnAst). The note gains one sentence dated 2026-11-05 on why. The other two legs are unchanged..changeset/30053-liveness-search-fields-repoint.md:patchon@objectstack/spec, becauseliveness/ships in the package'sfiles.Why
check:livenessrequires every cited file to name the property it is evidence for. Onmainf672e0dcit fails:query/searchFields → packages/objectql/src/engine.ts. The first slice of the hand-series docblock move (#30341) moved the private docblock that named$searchFieldsout ofengine.ts, and nothing else there names the key. The hand-off the row describes has lived inengine-find.ts(FindFacet.expandSearchOnAst) since theengine.tscodemod split, and that file namessearchFields.Verification
pnpm --filter @objectstack/spec check:livenesson the refactor(objectql): move 36 hand-series private docblocks out of engine.ts with the codemod's third pass (slice 1 of 2) #30341 head exits 1 with exactly that one citation.field.jsonincluded): no other row cites a file that no longer names its key.mainis these 2 files (+13 / −2). The branch is the designated thread branch, which carried refactor(objectql): move 36 hand-series private docblocks out of engine.ts with the codemod's third pass (slice 1 of 2) #30341;mainis merged in, so no earlier commit's content is in the diff.dispatch-gates --commandsderives 55 for this diff; 43 had run when this PR opened, all exit 0. The rest go to the seat with the hand-back.Human Minimum
packages/specholds no runtime logic. (a ledger row only)main, one pull request. (the designated thread branch withmainmerged in)packages/spectouched: its generated artifacts are regenerated and committed. (a liveness row; nothing generated reads it)content/docs/references/,packages/*/CHANGELOG.mdorcontent/docs/releases/.🤖 Generated with Claude Code
https://claude.ai/code/session_01Utp6CYHBS7P5hkUQrNHkHZ