Skip to content

D3: retire compound-name addressing — remove the mounted compound arities, unify SDK URL spelling, close out the five broken methods (#12176 stage 3) #12195

Description

@os-trump

Blocked-by discharged 2026-08-25#12194 is CLOSED: D1 landed as PR #12244 (merge commit 311433f6 on main). No legal item name can contain / any more, so this stage is now the dead-code removal the ruling planned. Released to dispatch and claimed in the same stroke by PM session session_01H9StxQgG2DPA26XzZZqnJB.

Stage 3 of #12176's maintainer-ruled retirement (provenance on #12176 and #12194). ⛔ Not dispatchable until D1 (#12194) lands — after D1, no legal item name can contain /, which is what makes this stage dead-code removal rather than a behavior break.

Ruled scope (execute on the post-D1 ref; re-verify counts against #12176's census report)

  1. Retire the mounted compound arities in packages/rest (census: 3 mounted — the getItem/saveItem twins and the /published read; ledger rows and ordering pins go with them; packages/runtime/src/domains/meta.ts folds likewise). ⚠️ Census correction to carry: at the compound arity the :type segment holds an OBJECT name, not a metadata type — read Ban / in metadata item names — retire compound-name addressing (maintainer-ruled direction): census, migration surface, staged plan #12176's report before assuming a route's semantics.
  2. Unify SDK URL spelling in packages/client: with slashes illegal, the 6-unencoded/4-encoded split is moot — pick one spelling (encoding a slash-free name is a no-op; keeping encodeURIComponent everywhere is the defensive default), update the doc comments that promise "compound names pass through unencoded" (index.ts:595, :986 region), and delete/rework the tests pinning unencoded compound URLs (client.test.ts:325-334, meta-automation-descriptors.test.ts:30, the protocol tests Ban / in metadata item names — retire compound-name addressing (maintainer-ruled direction): census, migration surface, staged plan #12176's census lists — 26 test files measured; re-derive on the current ref).
  3. Close out the parked family: Four SDK metadata methods build compound-name URLs against routes mounted in one arity only — measured 404, and getHistory/deleteItem encode while getAudit/getReferences/diffItem/rollbackItem do not #12106 and A compound-name draft has no REST promotion door — POST /meta/:type/:name/publish is mounted in one arity while its read twin /published is mounted in both #11932 are pm:blocked on Ban / in metadata item names — retire compound-name addressing (maintainer-ruled direction): census, migration surface, staged plan #12176 — this stage's landing is what resolves them; the landing PR references both (⛔ Part of, closure is the PM's re-verification call).

Clause-②: yes — public routes are removed (contract surface change; post-D1 they are unreachable by any legal name, but the removal is still a published-surface move); contract-review tier at dispatch.

Refs: #12176 (census: 5 source files, 3 routes, 26 test files, 2 docs pages) · #12194 (D1) · #12106 · #11932 · closed PR #12105 (its shadowing measurements and capability-enumeration table are the reference material for un-mounting safely).

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions