Skip to content

fix(spec): repoint the query.searchFields liveness row at engine-find.ts#expandSearchOnAst - #30368

Merged
objectstack-fleet[bot] merged 10 commits into
mainfrom
claude/project-thread-7wiz8y
Nov 5, 2026
Merged

objectstack-fleet[bot] merged 10 commits into
mainfrom
claude/project-thread-7wiz8y

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Requested by Bill · project thread

Fixes #30367
Refs #30053

Clause-②: no
Metadata-protocol: none

维护者速读

What changes

  • packages/spec/liveness/query.json, row query.searchFields: the evidence's first leg cites packages/objectql/src/engine-find.ts#expandSearchOnAst (was engine.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: patch on @objectstack/spec, because liveness/ ships in the package's files.

Why

check:liveness requires every cited file to name the property it is evidence for. On main f672e0dc it fails: query/searchFields → packages/objectql/src/engine.ts. The first slice of the hand-series docblock move (#30341) moved the private docblock that named $searchFields out of engine.ts, and nothing else there names the key. The hand-off the row describes has lived in engine-find.ts (FindFacet.expandSearchOnAst) since the engine.ts codemod split, and that file names searchFields.

Verification

Human Minimum

  • 1. Schemas start as Zod; packages/spec holds no runtime logic. (a ledger row only)
  • 2. Every name I added uses the casing for its kind.
  • 3. No formatter ran.
  • 4. One issue, one branch off an up-to-date main, one pull request. (the designated thread branch with main merged in)
  • 5. A change that publishes carries a changeset, and both declaration lines are filled in here and in the changeset.
  • 6. packages/spec touched: its generated artifacts are regenerated and committed. (a liveness row; nothing generated reads it)
  • 7. No hand edits to content/docs/references/, packages/*/CHANGELOG.md or content/docs/releases/.
  • 8. Title, body and comments are in English.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Utp6CYHBS7P5hkUQrNHkHZ

…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
…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
@github-actions github-actions Bot added size/s documentation Improvements or additions to documentation tooling labels Nov 5, 2026
@github-actions

github-actions Bot commented Nov 5, 2026

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

⚠️ 1 changed file(s) yielded no anchor (packages/spec/liveness/query.json), so the pages documenting them are NOT COVERED by this run — this is not a clean bill of health for those files. Nothing else in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 1 changed package(s)).

What this run could not see
  • 1 changed file(s) yielded no anchor (packages/spec/liveness/query.json) — pages documenting those are invisible to this run
  • a page that states a rule by its inputs shares no identifier with the emitter that implements the rule, so an emitter-only diff cannot list it — not on this run and not on any run. Measured on fix(driver-sql): emit varchar(maxLength) for a text field a declared index keys on #11430: content/docs/protocol/objectql/types.mdx documents the text-family column mapping by the ObjectQL type names it maps FROM (text / textarea / html) while the diff changed createColumn; it went unlisted, and it was the page that diff falsified, in four places. No shared token exists to detect this on, so a rule your change carries has to be re-read by hand in the pages that restate it.
  • a key NAME is not a key, so the hand re-read the line above prescribes can land on the wrong schema. The same spelling is authorable on one governed type and a [REMOVED] tombstone on another for each of active, aria, joins, objects, template, tools and version (censused on [finding] tools is a key on BOTH AgentSchema (tombstoned, dead) and SkillSchema (live, cloud-attested), so a name-based search attributes skill examples to the agent key — it produced a false stop-the-line alarm on PR #19059 #19093 over the liveness ledger's governed types, top-level keys); nothing in a search result distinguishes the two, so a grep hit on a LIVE example reads as evidence about the DEAD key. Measured on fix(spec): the agent.tools liveness row says dead — it claimed live on a key the schema tombstoned #19059: content/docs/ai/agents.mdx was reported as contradicting the agent.tools tombstone over its tools: example at :161, which is inside the defineSkill({ block opened at :155 — the page was already correct. Settle ownership by PARSING the value against both schemas, never by the name: that literal PASSES SkillSchema, and as an AgentSchema it FAILS at tools with the tombstone prescription. ⛔ These names are not the whole class — a key retired through a .strict() guidance map leaves no tombstone in the walked shape and none of them here (tool.category, live as AIToolDefinition.category).

Coarse fallback — 170 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): node scripts/docs-audit/affected-docs.mjs --json fdad1786e892270ac3fcc161b3fd4d57c9c47748 → packageMentionDocs.

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:server#3 · os-bill · session_01Utp6CbPxYq1wQmUNWvMZkC

Guard note · 2026-11-05T08:13Z

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:server#3 · os-bill · session_01Utp6CbPxYq1wQmUNWvMZkC

席位核对

ACCEPT · head a53e8a8eb1c58168109d9afb16ba0ca4f2ef8ca9 · main-red card #30367 (claim 6653087744), Refs #30053 · 2026-11-05T08:47Z

  • Shape: draft PR to main, author objectstack-fleet[bot] (relay), attribution block then Fixes #30367 and Refs #30053. 2 files, +13 −2 against main. check-governed-merges.mjs --pr 30368: NOT governed, 15 changed lines ⇒ ordinary queue landing. Head is the dev's fix 078b4d5c plus a seat-relayed pr_update_branch merge of main (to re-read PR-body guards after the claim was posted, note 6653099160).
  • Declarations: Clause-②: no, Metadata-protocol: none; changeset @objectstack/spec patch (liveness/ ships in the package's files). Neither widening nor narrowing ⇒ the seat's own review of record.
  • Seat review: the query.searchFields row's first evidence leg moves from engine.ts#expandSearchOnAst to engine-find.ts#expandSearchOnAst, where the body lives and which names searchFields; the claim text, the second leg (search-filter.ts#resolveSearchFields) and the proofs are unchanged; the note gains a dated REPOINTED line. Dev reproduced check:liveness exit 1 on refactor(objectql): move 36 hand-series private docblocks out of engine.ts with the codemod's third pass (slice 1 of 2) #30341's head (this row only) and exit 0 on the fix, over every ledger (no other row cites a file that lost its key).
  • Gates (check-runs on this head): 64 runs, 55 success, 9 skipped, 0 failed; Test Core (incl. spec check-liveness.test.ts), Lint & Repo Gates, Lint UI, PR-body guards green. Dev's derived gates 55/55 exit 0 at 078b4d5c.
  • Landing: ready + auto-merge by the seat. This clears the main-red; refactor: move the private docblocks of the hand-series stubs into their hand modules — about 1,900 lines off engine.ts (86 stubs) and about 4,000 off protocol.ts (157 stubs) #30053 slice 2 opens after it.

Merged via the queue into main with commit 38717d3 Nov 5, 2026
65 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/project-thread-7wiz8y branch November 5, 2026 09:15
os-support-ai pushed a commit that referenced this pull request Nov 5, 2026
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>
os-bill pushed a commit that referenced this pull request Nov 5, 2026
…ect-thread-8y2k2m

Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Utp6CZ1rxZPzain2p5bv5x
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/s tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

main red: spec check:liveness — query/searchFields cites engine.ts, which no longer mentions searchFields after #30341

1 participant