Repository navigation
docs site streams the workspace SDK against a pre-v2 backend on merge #568
Description
Activity
Fixed for the docs site on
stack/5-positional-wire(8277bf6e), taking option 2.docs/package.jsonnow depends on"@wavehouse/sdk": "^0.1.1"from the registry instead ofworkspace:*. The caret tracks the current published line and takes its patches but stops short of0.2.0, so merging a wire change can no longer push an unreleased SDK onto the landing page — moving the site onto v2 becomes a deliberate bump lined up with tagging that release.tests/e2e/sdkkeepsworkspace:*; it exists to exercise the SDK in this tree.Verified rather than assumed:
docs/node_modules/@wavehouse/sdknow resolves to.pnpm/@wavehouse+sdk@0.1.1, whiletests/e2e/sdkstill symlinksclients/ts.make build-docsis clean, so the published API still satisfiesLiveDemo.astro— only the wire changed in this stack, not the SDK surface.- The published 0.1.1 build contains none of the v2 schema-frame handling and still reads
msg.data, which is what the deployed backend sends. The built docs bundle no longer carries theno-schemaguard at all.
One thing this surfaced. Depending on our own package from the registry made
minimumReleaseAge(7 days) apply to it for the first time, andminimumReleaseAgeExcludeinpnpm-workspace.yamlnamed only@wave-rf/*— the plugin scope.@wavehouse/*is the product scope, so a freshly tagged SDK would have been unusable by the docs site for a week after every release, which is exactly when the two need to move together. Added@wavehouse/*to the exclude list.Still open, and what this issue now tracks
Bumping the docs pin when v2 ships. The site is deliberately one release behind until someone raises
^0.1.1alongside the backend upgrade and thelatesttag. That is the deferred step.Option 3 is untouched and still worth doing. The docs site was one instance of a general problem: any user who upgrades the SDK before their server gets the same silent stall — frames dropped for want of a schema announcement, no
errorcallback, only a boundedconsole.warn. A one-release fallback to the legacydataobject when nothing has been announced would fix it for everyone, not just us. Pinning our own site does not address that, and a breaking wire change arguably should not fail this quietly for anyone.- added 2 commits that reference this issue
on Sep 8, 2026 Duplicate of #548, which you filed a week earlier with the same analysis — I filed this without searching first. The resolution (the
^0.1.1pin, the@wavehouse/*cooldown exemption, the Dependabot ignore, and the verification) is now recorded on #548, and #577 tracks the general SDK/server skew signal that pinning our own site does not address. Closing in favour of #548.
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsDone
Summary
The docs site is itself an SSE consumer of the ingest wire, and it is bound to the workspace SDK rather than a published one. The v2 envelope stack (#554) changes that wire. So the moment the stack merges,
docs-deploypublishes a landing page whose SDK expects v2, pointed at a WaveHouse Cloud backend still running released v0.1.x.Found by a pre-push reviewer on #554. Filing rather than fixing there, because every remedy is either a production sequencing decision or an SDK compatibility change — neither belongs in a wire-format PR.
The chain
docs/package.json:24declares"@wavehouse/sdk": "workspace:*", anddocs/node_modules/@wavehouse/sdkis a symlink toclients/ts— the docs bundle is built from whatever is on the branch.docs/src/components/LiveDemo.astro:131points athttps://iefrrvavd5akvphk7pq3.wavehouse.appand calls.stream()at line 461. That is a separately-deployed backend on its own release cadence.event: schemaframe, soSSEStream._columnsstaysnull. Every data frame then hits theno-schemabranch inclients/ts/src/stream/sse.ts:612-620andreturns.Why it is worse than an outage
The frames are dropped with a bounded
console.warn(three per cause per connection) and noerrorcallback. The connection itself succeeds, sosetStreamstill renders live, and the REST/pipe backfill still paints the feed. What stops is everything driven offnext—refreshCounts,bumpEpm,recordLatency. The hero panel sits there claiming to be live with a frozen event rate and a stale latency figure, and nothing anywhere reports an error.ci.yml:548runsdocs-deployon any push tomainwherechanges.outputs.docs == 'true', which the stack is.Options
docsto the published@wavehouse/sdk. Removes the coupling permanently and makes the docs site demo what users actually install — arguably what it should have been doing all along. Costs the ability to dogfood unreleased SDK changes on the docs site.dataobject, zip it as before. This closes the same silent death for every SDK user upgrading across the boundary, not just this page — the general version of the bug.(2) and (3) are not exclusive, and (3) is the one that matters beyond our own site: right now any user who upgrades the SDK before the server gets the same silent stall, which is not the behaviour a breaking wire change should have.
Also worth a look
While probing the stats backend I hit a structured query that returned rows in the wrong order —
order_byonevent_tsdesccame back ascending and stale, whilemax(event_ts)reported a value 16 minutes old. It may be pipe/cache behaviour rather than a query bug, but it did not look right and is worth a separate check.