Skip to content

docs: live demo will silently stop updating when the SSE wire change merges #548

Description

@EricAndrechek

What

Merging the pre-chtypes stack will silently break the homepage live demo, because the docs site bundles the SDK from this repo while the demo streams from a separately deployed server.

  • docs/package.json:24 — "@wavehouse/sdk": "workspace:*", so a docs build ships whatever SDK is in the tree.
  • docs/src/components/LiveDemo.astro streams from https://iefrrvavd5akvphk7pq3.wavehouse.app.

Probed that backend directly:

$ curl -sN '.../v1/stream?table=gh_events'
: connected

No event: schema frame at connect — so it is still running the pre-stack server. The new SubscribeSchemaFrame sends one before the first row.

Why it breaks silently

This is exactly the skew the stack's own new warning describes (docs/src/content/docs/sdk/streaming.md, "Upgrade the SDK and the server together"). A new SDK against an old server never receives a schema frame, so _columns stays unset and _dispatch drops every row with a console.warn and no error callback.

liveQuery() makes it worse to notice: its backfill goes over REST and is unaffected, so the panel renders its initial snapshot, reports status live, and then simply never updates. Nothing turns red.

Options

  1. Sequence the deploys — upgrade the stats backend before or with the docs deploy.
  2. Pin the docs site to the last published SDK release ("@wavehouse/sdk": "0.1.x" instead of workspace:*) until the backend catches up, then unpin. Also removes the general coupling where any unreleased SDK change can affect the marketing site.
  3. Degrade gracefully in LiveDemo.astro — surface "no data" when a stream reports live but delivers nothing for N seconds, so this class fails visibly rather than silently.

(2) is the smallest change and fixes the class, not just this instance; (3) is worth doing regardless.

Scope

Not a defect in the stack's code — it is a deployment-ordering consequence of the SSE wire change, and the stack documents the hazard for users. Found by the docs reviewer while reviewing the stack tip, which noticed the site was advertising a warning it was itself about to trip over.

Activity

  1. EricAndrechek commented on Sep 9, 2026

    @EricAndrechek
    MemberAuthor

    Fixed before the stack merged — recording it here since this is the original issue and it had no resolution note.

    docs/package.json now depends on "@wavehouse/sdk": "^0.1.1" from the registry instead of workspace:* (commit 8277bf6e, shipped in #554). The caret takes 0.1.x patches and stops short of 0.2.0, so merging a wire change can no longer push an unreleased SDK onto the landing page; moving the site onto the new wire is now a deliberate bump lined up with tagging the SDK release. tests/e2e/sdk deliberately keeps workspace:*.

    Verified rather than assumed at the time:

    • docs/node_modules/@wavehouse/sdk resolves to .pnpm/@wavehouse+sdk@0.1.1, while tests/e2e/sdk still symlinks clients/ts.
    • make build-docs clean, so the published API still satisfies LiveDemo.astro — only the wire changed in that stack, not the SDK surface.
    • The published 0.1.1 build carries 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 contains the no-schema guard.

    Two things that came out of it and are still live:

    • Depending on our own package from the registry newly subjected it to minimumReleaseAge (7 days), and the exclude list named only @wave-rf/* — the plugin scope. @wavehouse/* is now exempt too, otherwise a freshly tagged SDK would have been uninstallable by the docs site for a week after every release.
    • Dependabot would have undone the pin: the npm group is patterns: ["*"], so once 0.2.0 publishes it would have proposed ^0.1.1 → ^0.2.0 in a routine Monday deps: PR. @wavehouse/sdk is now in that ignore list (4c27c547), and the release runbook says so.

    The general version of this — that any SDK consumer upgrading ahead of their server hits the same silent stall, with no error callback — is not fixed by pinning our own site. That is #577.

    (I filed #568 during the stack without searching first; it duplicates this. Closing that one and keeping this as canonical.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions