Skip to content

[decision] data.find is @deprecated while QueryOptionsV2 still calls itself "the recommended interface for data.find() queries" — the canonical source contradicts itself; pick a direction #6795

Closed

Description

@os-project-manager

Spun out of #6323 / PR #6784 at acceptance, by the devx PM seat. The docs half is done — the services.data page now reports both faces accurately with attribution, so it survives either ruling. What remains is the source-side convergence in packages/client, which is a maintainer call. Filed unassigned; ⛔ not dispatchable until ruled.

The contradiction, measured (all on origin/main @ 64d764e76)

  • packages/client/src/index.ts:4202 — data.find carries @deprecated Use data.query() with standard QueryAST parameters instead, and the built dist/index.d.ts:2687 ships the tag, so every consumer's editor strikes find through at the call site.
  • packages/client/src/index.ts:162-164 — QueryOptionsV2 simultaneously names itself "the recommended interface for data.find() queries": a recommended vocabulary for a deprecated method.

Supporting facts from the #6323 investigation:

  • data.query() exists on both ObjectStackClient.data (:4190) and ScopedProjectClient.data (:4913), ships untagged, and has a dedicated POST /data/:object/query route (rest-server.ts:5694).
  • The tag is recorded direction, not an accident: [讨论&决策] 前后端查询协议/OData vs QueryAST 规范化与长期归一方案 #986 ruled "deprecate the legacy-parameter entries, promote data.query(AST)"; the tag landed in 17dca13 (QueryAST unification) and was deliberately kept when c463c23 added QueryOptionsV2.
  • query is strictly more capable on this surface: search, nested expand detail, having — and find's own nested-expand refusal error routes callers to query.
  • Real consumers already moved: the CLI's data query command and objectui's data adapter both call data.query(); objectui's adapter comments record concrete find pain (forced raw-HTTP workarounds).
  • The heavy in-repo find usage is IDataEngine.find — a different, lower surface, not this one.

Options

Recommendation (dev and PM seat concur): A

The deprecation is implemented product direction with consumers already migrated; the only defect is the stale self-description, which is a one-line edit. B would overrule a recorded ruling to preserve a sentence.

If A is ruled, the implementing change is small (JSDoc wording in packages/client, plus a changeset since published source changes) and can ride any normal dispatch round.

Related: #6323 / PR #6784 (docs half, has the full measurement), #986 (the direction ruling), 17dca13 / c463c23 (tag history).

Activity

  1. added
    needs-user-decisionBlocked on a maintainer decision — do not dispatch; decision cards only, never on a PR
    domain:devxDomain lane — seat card indexed by label:pm:seat
    on Aug 8, 2026
  2. os-project-manager commented on Aug 9, 2026

    @os-project-manager
    CollaboratorAuthor

    Maintainer ruling (2026-08-09): Option A — uphold #986. pm:queue.

    The @deprecated tag on data.find stays; the one-line convergence edit lands: reword QueryOptionsV2's self-description so it stops calling itself "the recommended interface" for a deprecated method (the card's suggested phrasing — "the vocabulary find still accepts" — is fine). JSDoc wording in packages/client plus a changeset, ridable on any normal dispatch round.

    Rationale: the deprecation is implemented product direction with consumers already migrated (CLI and objectui both call data.query()); B would overrule a recorded ruling to preserve a sentence. Dev and PM seat already concurred; this ruling confirms.

    Maintainer directive (verbatim, covering all 25 decision-inbox cards this round): 「全部接受」. Recorded by PM session session_01LGRN2cSRfggfX9B2L83bQc. Veto window open — comment to overturn.


    Generated by Claude Code

  3. added
    pm:queueReady for the PM dispatch loop
    and removed
    needs-user-decisionBlocked on a maintainer decision — do not dispatch; decision cards only, never on a PR
    on Aug 9, 2026
  4. os-project-manager commented on Aug 9, 2026

    @os-project-manager
    CollaboratorAuthor

    Claiming this — implementing Option A per the maintainer ruling above (veto window still clear at read time).

    session: session_01F8q5J1MQyocgtNspb15fSn
    branch: claude/issue-6795-queryoptionsv2-wording


    Generated by Claude Code

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

Metadata

Metadata

Labels

domain:devxDomain lane — seat card indexed by label:pm:seatpm:queueReady for the PM dispatch loop

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions