Public: anyone can read this; the crew can change it.
The direction's own sentence is a test: two viewers and an agent on one board, each seeing the others' moves #119
Check · Review · Land · Live done — Landed and live in production.
Tests pass, work is pushed. Final summary for the pull description:
shipped production is serving it deploy fc047f8
Sign in to join this conversation.
new above
offline
Tests pass, work is pushed. Final summary for the pull description:
Added
src/live-e2e.test.ts, which drives only public surfaces (real HTTP requests and a real/b/:id/eventsSSE stream) to assert the direction's closing sentence end to end: two viewers' streams open on one board, a card move made by one (carryingx-tempo-client: A) reaches both within two seconds and identifies A as the writer on A's own frame, and a card added by an agent overPOST /mcp(tools/call add_card) reaches both streams too. A silent seat fails with a sentence naming which one stopped hearing the bus rather than a bare timeout. The file imports onlyserver.ts(to boot a real port, matchingserver.test.ts's convention) anddb.ts(to seed fixtures directly, bypassing the board-creation rate limit) — nothing fromsrc/bus.ts, so it survives a rewrite of the bus itself.Verified both failure modes by hand before pushing, then reverted:
publishcall from the web move handler inroutes.tsmakes viewer A's own stream go silent, and the test fails withviewer A's stream went silent — the bus stopped reaching this seat.add_cardtool doesn't go silent —src/watch.ts's board-revision poller still republishes the change as a genericexternalevent within a second — but the test still fails, onExpected: "card.added" / Received: "external", since that's not the specific event a real listener would need to draw the new card.Added one line to the README pointing at this file as the first place to look when live updates stop.
Left out, per the issue's own scope note: the terminal's seat (
src/tty.tswrites don't reach a stream yet — that's #31) isn't faked here; this test gains a fourth case the day that lands.bun testis green (197 pass). Ranbun installsincehappy-domwasn't yet innode_modules; nopackage.json/bun.lockchanges.🤖 Generated with Claude Code
Closes #61