Repository navigation
feat(spec)!: retire the unserved Virtual ObjectQL request protocol (#27028) - #27324
Conversation
Claude-Session: https://claude.ai/code/session_01WGufziUAPh2YojDuNQpVXp Co-authored-by: Claude <noreply@anthropic.com>
…retirement (#27028) Claude-Session: https://claude.ai/code/session_01WGufziUAPh2YojDuNQpVXp Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WGufziUAPh2YojDuNQpVXp Co-authored-by: Claude <noreply@anthropic.com>
…#27028) Claude-Session: https://claude.ai/code/session_01WGufziUAPh2YojDuNQpVXp Co-authored-by: Claude <noreply@anthropic.com>
席位核对 · review owed ·
|
📓 Docs Drift CheckThis PR changes 2 package(s): 27 hand-written doc(s) name something this change touched — list omitted above 15 rows. Re-derive on the tree named below: ⛔ 7 release-owned page(s) also affected — read-only, see AGENTS.md Documentation Guardrails. What this run could not see
Coarse fallback — 167 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 c2e0c8571a319893ea5e65dc877e01ee5a58f828 && git checkout c2e0c8571a319893ea5e65dc877e01ee5a58f828
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 74801d190f5f528712ae3ebd9e4cbef81d3f13fe 609a2715b06aac84ac1709d7b8144c8b92f010e9 && git checkout -B drift-repro 74801d190f5f528712ae3ebd9e4cbef81d3f13fe && git merge --no-ff 609a2715b06aac84ac1709d7b8144c8b92f010e9
node scripts/docs-audit/affected-docs.mjs --json 74801d190f5f528712ae3ebd9e4cbef81d3f13fe
|
…bol anchor (#27028) `check:adr-symbol-anchors` reds once `DataEngineRequest` leaves `data/data-engine.zod.ts`: ADR-0119's "Rot found on the way" anchored it as `data-engine.zod.ts#DataEngineRequest`. The gate's remedy is to fix the anchor, so the sentence keeps the name, points at the file, and an editorial note (the record's own 2026-08-05 precedent) says the protocol has since been retired and where it is registered. The finding itself is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WGufziUAPh2YojDuNQpVXp
|
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U Contract-review-claim: Triage seat, taking Generated by Claude Code |
Contract reviewServed-tier: Inputs read in full: card #27028 (body, triage ① Derived judgmentsEvery accept-set and public-surface change the diff implies, each judged against the head tree:
② Semver level
③ Boundary flagsDev flags (report
④ Design judgmentEach
Must-fix findings: none. Should-fix: ④.1 (one stale "RPC / Virtual Data Engine boundary" sentence at Implemented-by: VERDICT: PASS Generated by Claude Code |
席位核对 · ACCEPT ·
|
Conflicts: type-alias-convention.pin.test.ts (census 799 -> 798 from #27182 stacks with this branch's -3: 795, both history lines kept), vitest.repo-tests.json (both new pins, sorted). Generated references index and strictness-ledger counts take main's side and are regenerated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WGufziUAPh2YojDuNQpVXp
os-regen-merge step 4. The driver took main's side of the five data shards both sides moved; the hand-kept json-schema.manifest and authorable-surface deletions are re-applied from this branch, and check:generated --fix regenerates api-surface, export-origins, declaration-map, the references index (1559 -> 1549) and the strictness-ledger counts on top of main. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WGufziUAPh2YojDuNQpVXp
席位核对 · ACCEPT ·
|
|
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U Contract-review-claim: Triage seat, under gap rule (b) (#27062): this head is over 60 minutes old with no record and no claim; a delta re-review from triage's PASS on Generated by Claude Code |
Contract reviewServed-tier: Re-review on a moved head. Triage's prior record ( Inputs read in full: card #27028 (body, triage The delta, commit by commit (
① Derived judgmentsEvery accept-set and public-surface change the diff implies, each judged against the head tree:
② Semver level
③ Boundary flagsDev flags (report
④ Design judgmentEach
Must-fix findings: none. Should-fix (all carried from the prior record, none resolved on this head, all on open follow-up #27346): ④.1 (stale "RPC / Virtual Data Engine boundary" at Implemented-by: VERDICT: PASS Generated by Claude Code |
Requested by Yibo Wang · project thread
Fixes #27028
Ruling-ref: 6472013580
Claim: 6472028553
Clause-②: no (narrowing)
Metadata-protocol: narrowed
Skills-docs: none — REASON:
skills/**names none of the retired exports (git grepfor the 16 names on base: 0 hits; the_index.mdfiles point atdata-engine.zod.tsby its header line, which stays, andcheck:generated --fixleft them unchanged). The one hand-written docs page that taught the protocol,content/docs/kernel/contracts/data-engine.mdx, is corrected in this diff.维护者速读
data-engine.zod.ts里没人用的「Virtual ObjectQL」远程请求协议,包括DataEngineRequestSchema和它的 9 个分支、DataEngineContractSchema、5 个类型和 5 个私有辅助。同时登记 10 条RETIRED_DEFS_BY_MAJOR[18]和一条 D3 条目data-engine-rpc-protocol-retired,并修好文档页里还在教已退役engine.batch?.()的段落。isSystem,execute分支能直传原始 SQL,留着就是一个假入口。json-schema/data/DataEngine*Request.json文件。回滚就是 revert 本 PR,没有存量数据和 conversion 要处理。packages/spec/src/migrations/entries/semantic/18.data-engine-rpc-protocol-retired.ts、packages/spec/src/data/data-engine.zod.ts(第 8 节和第 9 节末尾的说明)、packages/spec/src/data/data-engine-rpc-protocol-retirement.test.ts。git grep -nE 'DataEngine(Find|FindOne|Insert|Update|Delete|Count|Aggregate|Execute|VectorFind)?Request(Schema|Parsed)?\b|DataEngineContractSchema' -- packages ui skills content ':!**/CHANGELOG.md',应该只剩退役登记、退役 pin 和说明性注释。docs/adr/0119第 61 行锚定的DataEngineRequest被本 PR 删除,check:adr-symbol-anchors要求修锚。1a50dca1e保留名字,把锚改成文件级锚,并按该 ADR 自己 2026-08-05 的写法补一条带日期的编辑注。ADR 的决定本身没有改动。skills/*/references/_index.md没有变化。What changes
Spec (
@objectstack/spec, minor, BREAKING for TypeScript imports and the published JSON Schema files only).packages/spec/src/data/data-engine.zod.tsloses:DataEngineRequestSchemaand its armsDataEngine{Find,FindOne,Insert,Update,Delete,Count,Aggregate,Execute,VectorFind}RequestSchema;DataEngineContractSchema;DataEngineRequest,DataEngineRequestParsed,DataEngineExecuteRequest,DataEngineInsertRequestandDataEngineVectorFindRequest;RpcQueryOptionsSchema,foldRpcQueryOptions,RpcLegacyFilterMixin,foldRpcLegacyFilterandRPC_WHERE_SLOT.Two in-file notes stand where the block stood: section 8, and the end of section 9 beside the older
DataEngineBatchRequestSchemanote, which they absorb.RPC_QUERY_ALIAS_SLOTS,foldQueryAliasSlots,aliasConflictIssue, every*OptionsSchemaand the query-transport schemas stay. Route 3 of thespec-property-retirementkit (the spec(field): retire the@deprecatedCurrencyValueSchema(still exported atfield.zod.ts:581) — ADR-0104 D1 says deleted; prerequisite of the multi-currency epic #8345 #27182 and chore(spec): retire IDataEngine.batch? per ADR-0119 D3 — declared-but-unimplemented, zero callers #4618 precedent): no metadata source authors these shapes, so there is noretiredKey()tombstone and no D2 conversion.ADR-0087: registered. Ten
retired-defs/18.data__DataEngine*Request.tsfiles, plus the D3 semantic entrysemantic/18.data-engine-rpc-protocol-retired.ts, which names the doors that exist:IDataEnginein process,ctx.api.object(name)in a hook or action body, the REST data routes andPOST {basePath}/batchon the wire. The changeset carries the FROM → TO table and theregistered data-engine-rpc-protocol-retiredmarker.Generated and ledgers.
json-schema.manifest/data.jsonloses 10 defs andauthorable-surface/data.json35 rows. The build required both deletions, deliberately;authorable-surface.base.jsonis untouched. Further moves:authorable-defaults/data.json−1,dropped-refinements.baseline.json−8 entries (measuredtotals 252 → 244 schemas, 900 → 892 sites),unemitted-schemas.baseline.json−1 (DataEngineContractSchema),docs-import-surface.baseline.json−6 andvariant-docs.json−1 (themethod:union).api-surface,export-origins,declaration-map, the reference page and index (1560 → 1550 schemas), the strictness-ledger counts andtest-typecheck-debt.jsonwere regenerated.Pins that move.
data-engine.test.tsdrops the ten request suites, the two integration cases that parsed request literals, and the request rows of the spec: RpcQueryOptionsSchema.select and EngineQueryOptionsSchema.fields still admit an empty projection — decide ADR-0049 enforce-or-remove, then align with the shared projection rule (found reviewing #26909) #26954 projection-parity table.type-alias-convention.pin.test.tsdrops threeIso_data_dataEngine__*RequestSchemarows, and its census goes 799 → 796 (header, title,toHaveLengthwith the history line).New pin.
packages/spec/src/data/data-engine-rpc-protocol-retirement.test.ts, listed invitest.repo-tests.json, asserts five things:/dataand from the root entry;RPC_QUERY_ALIAS_SLOTSsurvive (the lit control);Docs and prose.
content/docs/kernel/contracts/data-engine.mdx:DataEngineRequestimport and the retiredbatch?member from itsIDataEnginelisting;engine.batch?.([...])example with the real alternatives (IObjectQLEngine.transaction(cb),batchDatawithoptions.atomic,POST {basePath}/batch);Comment-only rewords where the retired names were cited:
contracts/data-engine.ts,ui/view-grouping-query.ts,data-engine.zod.tsandpackages/objectql/src/engine.ts(@objectstack/objectqlpatch). The twoDEVELOPMENT_PLAN.mdrows are struck through.Why
The maintainer's ruling A on #27274 (record 6472013580): retire the block rather than keep it as a planned contract. The phase-1 measurement is on the decision card. It found zero readers in this repo outside
packages/spec/src/data/and zero in hotcrm353dace, objectuib2c0adeand docs.objectos.aicab35fd, against controls of 311, 2095 and 74 files that import@objectstack/spec. The one real cross-VM engine boundary (the QuickJS sandbox) uses a different shape, and the published JSON Schema admitted a caller-suppliedcontext.isSystemand a raw-SQLexecutearm.Tests
data-engine-rpc-protocol-retirement.test.ts, 16 cases.data-engine.test.ts(request suites removed; the option-bag and transport suites are unchanged) andtype-alias-convention.pin.test.ts(census 796).Acceptance notes
scripts/def-key-collisions.test.ts(--project repo) fails locally withMODULE_NOT_FOUNDbefore reaching its guard. Its fixture symlinkspackages/spec/node_modulesinto a tmp clone, and the pnpm.bin/tsxshim resolves a relative path that does not exist there. The failure sits in the fixture'stsxresolution, before the guard runs, and this diff touches neither the fixture,build-schemas.tsnorhttp.zod.ts. NOT MEASURED locally;Test Coreruns it.IDataEngine's doc comments still mention "remote/virtual engines" as hypothetical implementers that may omit optional members. That is about the TypeScript contract, not the retired protocol, so it is left as is.Verification
Base
origin/maina0aa8a1f3(merged in); head644adb1e7.Build and generated artifacts (merged head)
pnpm --filter @objectstack/spec build→ exit 0. Before that, the build refused three times as designed: the manifest lines, theunemitted-schemasentry and the 8dropped-refinementsentries.pnpm --filter @objectstack/spec check:generated→ exit 0, 14 of 14 fresh. Noskills/*/references/_index.mdmoved.Typecheck and tests
pnpm --filter @objectstack/spec typecheck→ exit 0 (merged head).pnpm --filter @objectstack/spec test→ Test Files 748 passed (748), Tests 22293 passed | 1 todo (merged head).pnpm --filter @objectstack/spec test:repo→ 82 of 83 files passed, 1370 of 1371 tests. The one failure isdef-key-collisions.test.ts(MODULE_NOT_FOUND, see Acceptance notes). The new pin passes: 32 of 33 in the targeted re-run on the merged head, the one failure againdef-key-collisions.pnpm --filter @objectstack/objectql typecheck→ exit 0, afterpnpm --filter '@objectstack/objectql^...' build.pnpm --filter @objectstack/dogfood test, final head644adb1e7, afterpnpm --filter '@objectstack/dogfood^...' build): Test Files 348 passed | 3 skipped (351), Tests 2806 passed | 20 skipped (2826). Lock verdictcommand-exit 0.Derived gates (dispatch-gates --commands, 111 families)
check:generated(stale dist, plus the test-typecheck ledger re-record) were re-run after a rebuild, and all exit 0.check-adr-0087-registration --base origin/main→ ✓registered data-engine-rpc-protocol-retired (new here).check-changeset-no-major --base origin/main→ ✓ nomajor; the narrowing shipsminor.check:spec-parsed-alias,check:cross-package-test-inputs,check:variant-docs,check:doc-authoring,check:role-word,check:liveness,check:exported-any,check:dual-source-exports→ exit 0.Human Minimum
packages/specholds no runtime logic.pnpm lintpasses (CI-owned run).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_01WGufziUAPh2YojDuNQpVXp
Generated by Claude Code