Skip to content

feat(client): close the final 17 REST gaps — ratchet 17→0 (#3587 batches 4+5/5) - #3633

Merged
os-zhuang merged 1 commit into
mainfrom
claude/screen-flow-submit-resume-v9dqjx
Jul 27, 2026
Merged

feat(client): close the final 17 REST gaps — ratchet 17→0 (#3587 batches 4+5/5)#3633
os-zhuang merged 1 commit into
mainfrom
claude/screen-flow-submit-resume-v9dqjx

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

The closing act of the #3587 gap backlog. Batches 1–3 (#3625, #3626, #3629) took the ledger 43 → 17; this PR closes the remaining 17 across two batches and rests the ratchet at ZERO — every REST route is now either SDK-expressed or carries a reviewed non-sdk disposition, with the two-sided conformance guard holding the line.

Batch 4 — sharing-rules 5 + security-explain 2 + search 1

MethodRouteNotes
shares.rules.list({object?, activeOnly?})GET /sharing/rulestenant-wide rule admin (M10.17)
shares.rules.save(rule)POST /sharing/rulesupsert; 400 [VALIDATION_FAILED]
shares.rules.get(idOrName)GET /sharing/rules/:idOrName404 [RULE_NOT_FOUND]
shares.rules.delete(idOrName)DELETE /sharing/rules/:idOrName204-safe; materialised grants cascade
shares.rules.evaluate(idOrName)POST /sharing/rules/:idOrName/evaluatereconcile grants
security.explain(request)POST /security/explainADR-0090 D6; both GET/POST ledger rows point here — one ExplainRequestSchema contract, two transports
search(q, {objects?, limit?, perObject?})GET /searchtop-level method, global cross-object search (M10.5)

Batch 5 — data-actions 2 + email 1 + analytics 1 + external-datasource 5

MethodRouteNotes
data.clone(object, id, overrides?)POST /data/:object/:id/clonegated by enable.clone; overrides nested
data.export(object, opts?)GET /data/:object/exportreturns the raw Response — a file stream (CSV/JSON/XLSX attachment), not a JSON envelope; the ledger row documents this
email.send(message)POST /email/send200 for sent/queued/failed — branch on status
analytics.queryDataset(payload)POST /analytics/dataset/queryADR-0021 REST dialect, distinct from analytics.query's dispatcher dialect
datasources.external.listTables/draft/import/refreshCatalog/validate/datasources/:name/external/…ADR-0015 Addendum federation admin; direct-mount rows, 503-degrading

Ledger

  • 17 rows gapsdk (including the two direct-mount external-datasource rows the mock-server enumeration guards).
  • Ratchet comment now records the full five-batch history and pins the bound at 0 — a new gap row demands an explicit, reviewed decision.
  • client-sdk.mdx surface table updated: data 12, analytics 4, security 4, shares 8, plus email / datasources / search rows.

Verification

  • @objectstack/client: 163/163 (+10 URL-pinning tests across the two batches), bare tsc clean.
  • @objectstack/rest: 394/394 (guard green at ratchet 0).
  • Changesets: client minor ×2, rest patch ×2.

🤖 Generated with Claude Code

https://claude.ai/code/session_01LX9ut3MK3KykE11S9bJmv5


Generated by Claude Code

…hes 4+5/5)
Batch 4 — sharing-rules 5 + security-explain 2 + search 1:
shares.rules.{list,save,get,delete,evaluate} administer tenant-wide
sharing rules (M10.17; delete 204-safe, grants cascade).
security.explain speaks the ADR-0090 D6 ExplainRequestSchema contract
via the POST transport (the GET query form is the same contract — both
ledger rows point at it). Top-level client.search covers global
cross-object search (M10.5).
Batch 5 — data-actions 2 + email 1 + analytics 1 + external-datasource 5:
data.clone (enable.clone duplication, overrides nested), data.export
(streaming CSV/JSON/XLSX; returns the raw Response — a file stream, not
a JSON envelope, and the ledger row says so), email.send (IEmailService;
branch on returned status), analytics.queryDataset (ADR-0021 REST
dataset-query dialect, distinct from query's dispatcher dialect), and
datasources.external.{listTables,draft,import,refreshCatalog,validate}
(ADR-0015 Addendum federation admin, 503-degrading direct-mounts).
Every REST route is now either SDK-expressed or carries a reviewed
non-sdk disposition; the ratchet rests at ZERO and stays there. Docs:
client-sdk.mdx surface table updated (data 12, analytics 4, security 4,
shares 8 + email/datasources/search rows).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LX9ut3MK3KykE11S9bJmv5
@vercel

vercelBot commented Jul 27, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
ProjectDeploymentActionsUpdated (UTC)
objectstackIgnoredIgnoredJul 27, 2026 11:19am

Request Review

@github-actionsgithub-actionsBot added documentation Improvements or additions to documentation tests tooling size/m labels Jul 27, 2026
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

This PR changes 2 package(s): @objectstack/client, @objectstack/rest.

18 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:

  • content/docs/ai/skills-reference.mdx(via packages/client)
  • content/docs/api/client-sdk.mdx(via @objectstack/client)
  • content/docs/api/data-flow.mdx(via @objectstack/client)
  • content/docs/api/environment-routing.mdx(via @objectstack/client)
  • content/docs/api/error-catalog.mdx(via @objectstack/client, @objectstack/rest)
  • content/docs/api/error-handling-server.mdx(via @objectstack/rest)
  • content/docs/api/index.mdx(via @objectstack/rest)
  • content/docs/getting-started/your-first-project.mdx(via @objectstack/client)
  • content/docs/kernel/runtime-services/data-service.mdx(via packages/client)
  • content/docs/kernel/runtime-services/index.mdx(via packages/client)
  • content/docs/permissions/authentication.mdx(via @objectstack/client)
  • content/docs/plugins/index.mdx(via @objectstack/rest)
  • content/docs/plugins/packages.mdx(via @objectstack/client, @objectstack/rest)
  • content/docs/protocol/kernel/i18n-standard.mdx(via packages/rest)
  • content/docs/protocol/kernel/realtime-protocol.mdx(via @objectstack/client)
  • content/docs/releases/implementation-status.mdx(via @objectstack/client, @objectstack/rest)
  • content/docs/releases/v12.mdx(via @objectstack/rest)
  • content/docs/releases/v16.mdx(via @objectstack/client)

Advisory only. To re-verify, run the docs-accuracy-audit workflow scoped to these files:
node scripts/docs-audit/affected-docs.mjs origin/main → pass the list as args.docs.

@os-zhuang
os-zhuang marked this pull request as ready for review July 27, 2026 11:27
@os-zhuang
os-zhuang merged commit 6e62a93 into mainJul 27, 2026
17 checks passed
@os-zhuang
os-zhuang deleted the claude/screen-flow-submit-resume-v9dqjx branch July 27, 2026 11:27
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentationsize/mteststooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@os-zhuang@claude