You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(client,runtime): reconcile the four dispatcher↔client shape mismatches (#3584)
The #3563 audit ledgered four routes as 'mismatch'. Re-verification showed
the two analytics shapes the client spoke (GET /analytics/meta/:cube,
POST /analytics/explain) were served by NOTHING — not the dispatcher, not
@objectstack/rest, not service-analytics — so both methods 404ed against
every deployment and had zero call sites. Split resolution:
- analytics ×2 — client aligns to the dispatcher (not breaking in practice:
a universally-404ing method has no working callers). analytics.meta(cube?)
now calls GET /analytics/meta with an optional ?cube= filter, threaded
through the dispatcher into AnalyticsService.getMeta(cubeName?) which
always supported it; analytics.explain keeps its name and calls
POST /analytics/sql. Ledger rows reclassified mismatch → sdk.
- storage ×2 — deliberate disposition, no code moves. The presigned/chunked
protocol the SDK speaks is registered autonomously by service-storage on
any http-server (not REST-only as the audit assumed); reshaping the client
to the bare dispatcher route would regress direct-to-cloud, resumable
uploads, upload auth (#2755) and download authorization (#2970/ADR-0104).
Ledger rows reclassified mismatch → server-only with the rationale;
decision recorded in the audit doc §4 Resolution.
Guards stay green: URL-shape tests pin the reconciled client routes, a
dispatcher test pins the ?cube= threading, and the ledger hygiene tests
(notes on every non-sdk row) pass unchanged.
Closes#3584
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Uij3WXdY7d4882DxMeaAAJ
5.**Mismatch reconciliation** (§4) — server-side aliases or client-side fixes.
166
+
5.**Mismatch reconciliation** (§4) — done in #3584: analytics client aligned to the dispatcher, storage protocol documented as canonical (see §4 Resolution).
note: 'ditto — the SDK downloads via /storage/files/:id/url from the service-storage protocol (authorization-gated signed URLs); this route stays as the low-level redirect/stream path (#3584)'},
0 commit comments