feat(client): the final six route-audit gaps — meta drafts/published/FSM + automation descriptors (#3563 PR-5) - #3579
Merged
Conversation
…FSM + automation descriptors (#3563 PR-5) The gap ratchet reaches ZERO (from 27 at the start of the audit): every dispatcher route that should be SDK-expressible now is, and the conformance guard keeps it that way. meta (shapes mirrored from domains/meta.ts): - getPublished(type, name) — GET /meta/:type/:name/published (ADR-0033; compound names pass through unencoded, matching getItem) - listDrafts({packageId?, type?}) — GET /meta/_drafts (pending drafts the active-only lists hide — e.g. what an AI authored but nobody published) - getLegalNextStates(object, field, from?) — GET /meta/objects/:name/state/:field (ADR-0020 D3.3 FSM introspection; next=null when no FSM / from omitted, [] for a declared dead-end) automation (shapes mirrored from domains/automation.ts): - listActions({paradigm?, source?, category?}) — GET /automation/actions (ADR-0018 descriptors backing the designer's action picker) - listConnectors({type?}) — GET /automation/connectors (ADR-0022) - getRuntimeStatus() — GET /automation/_status (per-flow enabled/bound engine state behind the Studio badges) Ledger: the last six rows flip to sdk; ratchet 6 → 0. Docs-site meta and automation rows updated to the real method counts. Note: main's ADR-0076 extraction moved /meta /data /actions /mcp into the domain registry since PR-1; the guard absorbed the migration with no edits — registry-enumerated domains and pinned legacy prefixes are checked as one set, which was the design intent. Verified: client 146 passed (6 new), ledger guard green on the new main, eslint clean. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LX9ut3MK3KykE11S9bJmv5
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
Contributor
📓 Docs Drift CheckThis PR changes 2 package(s): 26 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:
|
os-zhuang
marked this pull request as ready for review
July 27, 2026 08:04
This was referenced Jul 27, 2026
os-zhuang
added a commit
that referenced
this pull request
Jul 27, 2026
…he 2 PR-1 (#3587) (#3609) The dispatcher tranche (#3569..#3579) closed its 27 gaps and guards them; this brings the same regime to the second, larger surface. All 89 routes @objectstack/rest mounts now carry a reviewed disposition in rest-route-ledger.ts: 38 sdk, 43 gap (ratcheted), 3 server-only, 3 public, 2 mismatch. The guard enumerates BOTH sources for real — RouteManager routes via the getRoutes() introspection seam that already existed, and the two RouteManager-bypassing registrars (package-routes.ts, external-datasource-routes.ts) via captured mock-server registrations — so no pinned-by-hand list anywhere. The client-method direction lives in packages/client next to the SDK (same package-boundary split as tranche 1; a rest->client edge is unbuildable). All five guard directions were negative-tested and fail with the offending route named. Mismatches the audit surfaced, ledgered not fixed: POST /api/v1/packages is a publish-vs-install shape collision between REST and the dispatcher (REST registers first and wins); REST's GET /ui/view/:object/:type path dialect is unreachable by the SDK's query-param dialect. The service-storage / service-i18n autonomous mounts are a third surface, explicitly scoped out and noted in the ledger header. No behavior change: data + tests only, plus a scope-note refresh in the runtime ledger. Refs #3587 Claude-Session: https://claude.ai/code/session_01LX9ut3MK3KykE11S9bJmv5 Co-authored-by: Claude <noreply@anthropic.com>
This was referenced Jul 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR-5 of #3563 — the closing batch. Gap ratchet: 6 → 0 (from 27 at the start of the audit). Every dispatcher route that should be SDK-expressible now is, and the conformance guard keeps it that way.
The surfaces
meta (shapes mirrored from
domains/meta.ts):automation (shapes mirrored from
domains/automation.ts):A design validation worth noting
Since PR-1,
main's ADR-0076 extraction moved/meta,/data,/actions,/mcpfrom the dispatcher's legacy if-chain into the domain registry. The guard absorbed that structural migration with zero edits — registry-enumerated domains and pinned legacy prefixes are checked as one set, which was the design intent. The ledger survived its first architecture shift untouched.Ledger + docs
gap→sdk; the ratchet lands at 0 with the full 27→24→17→6→0 history recorded in the test comment.Test plan
from=forwarding and null semantics, descriptor filters,_statusshape.🤖 Generated with Claude Code
https://claude.ai/code/session_01LX9ut3MK3KykE11S9bJmv5
Generated by Claude Code