@@ -80,32 +80,26 @@ export const REST_ROUTE_LEDGER: readonly RestRouteLedgerEntry[] = [
8080
8181 // ── metadata ──────────────────────────────────────────────────────────────
8282 { route : 'GET /api/v1/meta' , family : 'metadata' , source : 'route-manager' , disposition : 'sdk' , client : 'meta.getTypes' } ,
83- { route : 'GET /api/v1/meta/diagnostics' , family : 'metadata' , source : 'route-manager' , disposition : 'gap' ,
84- note : 'spec-validation diagnostics listing — Studio-grade admin data with no SDK expression' } ,
83+ { route : 'GET /api/v1/meta/diagnostics' , family : 'metadata' , source : 'route-manager' , disposition : 'sdk' , client : 'meta.getDiagnostics' } ,
8584 { route : 'GET /api/v1/meta/_drafts' , family : 'metadata' , source : 'route-manager' , disposition : 'sdk' , client : 'meta.listDrafts' } ,
8685 { route : 'GET /api/v1/meta/:type' , family : 'metadata' , source : 'route-manager' , disposition : 'sdk' , client : 'meta.getItems' } ,
87- { route : 'GET /api/v1/meta/:type/:name/references' , family : 'metadata' , source : 'route-manager' , disposition : 'gap' ,
88- note : 'reverse-reference listing with no SDK expression' } ,
89- { route : 'GET /api/v1/meta/book/:name/tree' , family : 'metadata' , source : 'route-manager' , disposition : 'gap' ,
90- note : 'ADR-0046 §6 book-spine resolution with no SDK expression' } ,
86+ { route : 'GET /api/v1/meta/:type/:name/references' , family : 'metadata' , source : 'route-manager' , disposition : 'sdk' , client : 'meta.getReferences' } ,
87+ { route : 'GET /api/v1/meta/book/:name/tree' , family : 'metadata' , source : 'route-manager' , disposition : 'sdk' , client : 'meta.getBookTree' } ,
9188 { route : 'GET /api/v1/meta/:type/:name' , family : 'metadata' , source : 'route-manager' , disposition : 'sdk' , client : 'meta.getItem' } ,
9289 { route : 'PUT /api/v1/meta/:type/:name' , family : 'metadata' , source : 'route-manager' , disposition : 'sdk' , client : 'meta.saveItem' } ,
9390 { route : 'DELETE /api/v1/meta/:type/:name' , family : 'metadata' , source : 'route-manager' , disposition : 'sdk' , client : 'meta.deleteItem' ,
9491 note : 'REST-only: the dispatcher /meta branch has no DELETE handling — it falls into the read path' } ,
9592 { route : 'GET /api/v1/meta/:type/:name/history' , family : 'metadata' , source : 'route-manager' , disposition : 'sdk' , client : 'meta.getHistory' ,
9693 note : 'REST-only: the dispatcher /meta branch swallows /history as a compound name and 404s' } ,
97- { route : 'GET /api/v1/meta/:type/:name/audit' , family : 'metadata' , source : 'route-manager' , disposition : 'gap' ,
98- note : 'protection-audit events with no SDK expression' } ,
99- { route : 'POST /api/v1/meta/:type/:name/publish' , family : 'metadata' , source : 'route-manager' , disposition : 'gap' ,
100- note : 'per-item draft→active publish (ADR-0033) with no SDK expression; packages.publishDrafts covers only the package-scoped flow' } ,
101- { route : 'POST /api/v1/meta/:type/:name/rollback' , family : 'metadata' , source : 'route-manager' , disposition : 'gap' ,
102- note : 'restore-at-history-version with no SDK expression' } ,
103- { route : 'GET /api/v1/meta/:type/:name/diff' , family : 'metadata' , source : 'route-manager' , disposition : 'gap' ,
104- note : 'metadata version diff (?from/?to) with no SDK expression' } ,
105- { route : 'GET /api/v1/meta/:type/:section/:name' , family : 'metadata' , source : 'route-manager' , disposition : 'gap' ,
106- note : 'compound-name read; meta.getItem URL-encodes the slash so it cannot reach this shape — needs the unencoded pass-through meta.getPublished got in #3579' } ,
107- { route : 'PUT /api/v1/meta/:type/:section/:name' , family : 'metadata' , source : 'route-manager' , disposition : 'gap' ,
108- note : 'compound-name save; same encoding barrier as the compound read' } ,
94+ { route : 'GET /api/v1/meta/:type/:name/audit' , family : 'metadata' , source : 'route-manager' , disposition : 'sdk' , client : 'meta.getAudit' } ,
95+ { route : 'POST /api/v1/meta/:type/:name/publish' , family : 'metadata' , source : 'route-manager' , disposition : 'sdk' , client : 'meta.publishItem' ,
96+ note : 'per-item ADR-0033 publish; packages.publishDrafts remains the package-scoped flow' } ,
97+ { route : 'POST /api/v1/meta/:type/:name/rollback' , family : 'metadata' , source : 'route-manager' , disposition : 'sdk' , client : 'meta.rollbackItem' } ,
98+ { route : 'GET /api/v1/meta/:type/:name/diff' , family : 'metadata' , source : 'route-manager' , disposition : 'sdk' , client : 'meta.diffItem' } ,
99+ { route : 'GET /api/v1/meta/:type/:section/:name' , family : 'metadata' , source : 'route-manager' , disposition : 'sdk' , client : 'meta.getItem' ,
100+ note : 'compound names pass through getItem unencoded (URL-pinned in client.test.ts); only deleteItem encodes' } ,
101+ { route : 'PUT /api/v1/meta/:type/:section/:name' , family : 'metadata' , source : 'route-manager' , disposition : 'sdk' , client : 'meta.saveItem' ,
102+ note : 'compound names pass through saveItem unencoded (URL-pinned in client.test.ts)' } ,
109103
110104 // ── ui ────────────────────────────────────────────────────────────────────
111105 { route : 'GET /api/v1/ui/view/:object/:type' , family : 'ui' , source : 'route-manager' , disposition : 'sdk' , client : 'meta.getView' ,
0 commit comments