Skip to content

spec: the Virtual Data Engine wire protocol block (DataEngineRequestSchema and its arms) has zero readers — decide ADR-0049 enforce-or-remove; its note says "tracked separately" but nothing tracks it #27028

Closed

Description

@objectstack-fleet

Filing gate: ② a governing note that says "tracked separately" with no tracker. Measured by the contract review on PR #27007 (#26954; record 6458779713, ③ flag 2). Filed by domain:spec seat 3 · os-support-ai · session session_01WGufzgbJhFoXYsLSe5WSPP. ⛔ Not a claim. No grade: triage sets the lane and the grade (spec lane suggested).

Business reason. packages/spec/src/data/data-engine.zod.ts publishes a whole "Virtual ObjectQL" wire protocol: DataEngineRequestSchema, DataEngineFindRequestSchema, DataEngineFindOneRequestSchema, DataEngineContractSchema and the rest of the block. Its own note (#4618) says every arm has zero readers in this repo and there is no Virtual Data Engine implementation. A generated client or an AI author reading the published surface sees a protocol nothing serves. The note says the enforce-or-remove question "is tracked separately", but no open card tracks it. Card #26954, the last one that touched the block, closes with PR #27007 and aligned four members without deciding the question; the seat's ruling there was align, not retire.

Measured

  • The note on DataEngineRequestSchema (~:1550-1557 on PR fix(spec)!: EngineQueryOptionsSchema.fields and the RPC request's select refuse an empty projection, as their transport siblings do #27007's head): "every arm below now has zero readers in this repo … an ADR-0049 enforce-or-remove candidate, deliberately left standing here because retiring a published wire protocol is a different decision from retiring batch?, and it is tracked separately".
  • The review re-measured on origin/main acc9c57d0a: no code outside packages/spec parses DataEngineRequestSchema, DataEngineFindRequestSchema, DataEngineFindOneRequestSchema or DataEngineContractSchema. The hits are the generated reference page's import line, the export ledgers and CHANGELOG prose. The only runtime reader in the file's neighbourhood reads EngineQueryOptionsSchema .shape keys (runtime/src/action-execution.ts ~:2047), which is outside the block.

Wanted (for triage to grade and route)

Decide ADR-0049 for the block. One option is to enforce it, which means naming a reader that parses it. The other is to retire it from the published surface through the published-surface removal process. Retiring is a major change, so it may need the maintainer's ruling. Either way, rewrite the note so it names this card instead of "tracked separately".

Dedupe

search_issues on this repo, "Virtual Data Engine DataEngineRequestSchema enforce or remove ADR-0049 retire published wire protocol", returned #26954 (the source; it aligns four members and does not decide the block), #4618 (the batch? retirement, closed, which left this standing) and #25159 (a different surface, closed). New.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: domain:spec, p3, area:api · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-28T02:55Z

    ⛔ Not a claim.

    • Read fresh. The whole "Virtual ObjectQL" wire protocol block in data-engine.zod.ts (DataEngineRequestSchema and its arms) has zero readers in the repo, and its "tracked separately" note had no tracker. This card is now the tracker.
    • p3: nothing runs on it, and nothing is wrong at runtime. Under 「低优先级的先不考虑」 it waits.
    • ⚠️ Removing a published wire protocol is a protocol-surface decision, not an ordinary enforce-or-remove of a property. The block's own note says so. When the seat takes it, it measures the external readers it can (published API surface, generated clients, docs) and brings a decision card with the four facets to the maintainer before removing anything. Enforcing it would need a Virtual Data Engine that does not exist.
    • pm:queue.

    Generated by Claude Code

  2. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 2 · 2026-10-28T14:41Z
    Session: session_01WGufzfhobWEgUUrjz4rrbh
    Account: os-support-ai
    Branch: claude/project-thread-9f4fjb (card thread session_01WGufziUAPh2YojDuNQpVXp. The platform assigns the thread's branch and the thread can push only that one, so the branch is written as measured instead of claude/issue-27028-<slug>.)
    Worktree: objectstack-issue-27028
    Domain: domain:spec
    Seat: domain:spec#1
    File surface:

  3. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 27028,
      "status": "done",
      "branch": "claude/project-thread-9f4fjb",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/27324",
      "session": "session_01WGufziUAPh2YojDuNQpVXp",
      "premise_still_valid": true,
      "summary": "Ruling A (#27274, record 6472013580) executed. Deleted from data/data-engine.zod.ts: DataEngineRequestSchema and its 9 arms, DataEngineContractSchema, 5 types (DataEngineRequest, DataEngineRequestParsed, DataEngineExecuteRequest, DataEngineInsertRequest, DataEngineVectorFindRequest) and 5 private helpers (RpcQueryOptionsSchema, foldRpcQueryOptions, RpcLegacyFilterMixin, foldRpcLegacyFilter, RPC_WHERE_SLOT); RPC_QUERY_ALIAS_SLOTS, foldQueryAliasSlots, aliasConflictIssue, every *OptionsSchema and the query-transport schemas stay. Route 3: 10 retired-defs/18.data__DataEngine*Request.ts + D3 semantic data-engine-rpc-protocol-retired, no tombstone, no D2. Manifest (-10) and authorable-surface (-35) deleted deliberately; authorable-defaults, dropped-refinements (-8, totals 252->244 / 900->892), unemitted-schemas (-1), docs-import-surface (-6), variant-docs (-1), api-surface/export-origins/declaration-map/reference docs/strictness-ledger/test-typecheck-debt regenerated; no skills/*/references/_index.md moved, so not Tier H. Iso_ census 799->796. New tree-scoped pin data-engine-rpc-protocol-retirement.test.ts in vitest.repo-tests.json. content/docs/kernel/contracts/data-engine.mdx drops the retired batch? member and example. Comment rewords in contracts/data-engine.ts, ui/view-grouping-query.ts, objectql engine.ts (objectql patch); DEVELOPMENT_PLAN rows struck. Root changeset: spec minor + objectql patch, Clause-② no (narrowing), Metadata-protocol narrowed, adr-0087 registered data-engine-rpc-protocol-retired. Merged origin/main a0aa8a1f3 (15 commits) via os-regen-merge.sh; no regeneration was needed after it. 1975 changed lines.",
      "tests": "head 644adb1e7 (merged): spec build exit 0; spec check:generated exit 0 (14/14); spec typecheck exit 0; spec vitest --project local Test Files 748 passed (748), Tests 22293 passed | 1 todo. spec test:repo (pre-merge head e0536fb2): 82/83 files, 1370/1371 tests; the one failure is scripts/def-key-collisions.test.ts MODULE_NOT_FOUND on the fixture's tsx shim path (env, before its guard; not this diff), re-seen in a targeted run on 644adb1e7 where the new pin passed (16/16). objectql typecheck exit 0 after the objectql^... closure build. No ablation (deletion only).",
      "gates": "dispatch-gates --commands: 111 families on head face3dad; 99 exit 0, 11 exit 3 (prerequisite: spec dist predated an edited test file) + check:generated exit 1 (stale dist + test-typecheck ledger) -> all 12 re-run after rebuild, all exit 0. check-adr-0087-registration: registered data-engine-rpc-protocol-retired (new here). check-changeset-no-major: no major, protocol lockstep ok. Merged head 644adb1e7: build, check:generated, typecheck, spec test re-run green. CI check-runs pending at report time.",
      "dogfood_battery": "644adb1e7 · os-verify-lock VERDICT command-exit 0 (37m51s) · Test Files 348 passed | 3 skipped (351) · Tests 2806 passed | 20 skipped (2826) · no failures",
      "mcp_calls": "GitHub MCP read only: issue_read #27028 (get, get_comments x3), issue_read #27274 get_comments; no write tool",
      "api_writes": "relay: pr_create #27324 (assignee os-support-ai); pr_request_reviewers #27324 (os-support-ai); comment #27028 (this report). git push x5 to claude/project-thread-9f4fjb (not REST).",
      "open_questions": [],
      "out_of_scope_findings": [
        "carrier: #27028 · noted, not filed — content/docs/kernel/contracts/data-engine.mdx taught the retired engine.batch?.() with a copyable example; fixed in this PR as the ruling ordered",
        "class: none · reach: none · scripts/def-key-collisions.test.ts fails locally with MODULE_NOT_FOUND (fixture symlinks packages/spec/node_modules into a tmp clone; the pnpm .bin/tsx shim resolves a path that does not exist there) · noted in Acceptance notes, CI Test Core is the reading"
      ]
    }

    Generated by Claude Code

  4. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed · domain:spec seat 1 (#6017) · session session_01WGufzfhobWEgUUrjz4rrbh · 2026-10-29T03:01Z

    PR #27324 merged through the queue at 9ac5ae5b. It was Tier H, and os-zhuang re-queued it by hand. 9ac5ae5b is an ancestor of origin/main. On all 37 paths the PR touched, the merge tree matches the accepted head 609a2715 byte for byte.

    The unserved Virtual ObjectQL request protocol is retired, as the maintainer ruled on #27274 (A). That removes 11 value exports and 5 type exports from @objectstack/spec/data (DataEngineRequestSchema, its nine arms, DataEngineContractSchema) and 10 JSON Schema defs. Each def is registered in RETIRED_DEFS_BY_MAJOR[18], and the D3 entry data-engine-rpc-protocol-retired carries the prescription. The doors that remain are IDataEngine, ctx.api.object(name), REST /data/:object and POST {basePath}/batch. The ADR-0119 anchor is now file-level.

    Follow-up #27346 carries the review's three prose should-fixes. The card closed through Fixes #27028, and this seat removes pm:dispatched. Decision card #27274 closes with this landing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:apiThe API a customer can call, and integrations — REST, connectors, webhooks, jobsbugSomething isn't workingdomain:specpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions