Skip to content

Mythic Masters walk together: run the Region under workerd locally (hibernation, ping auto-response, sweep, token join) #3706

Closed

Description

@QuinnsCode

Left over from the walking-together climb (#3703; code in #3669 and #3676).

Everything about the Region Durable Object is tested on scripts/party.ts, a Bun stand-in for the edge: the real Worker and Region on Bun's sockets, with workerd's pair, attachments and ping auto-response faked. That has caught a lot, but a few things only workerd can show:

  • hibernation really waking with every seat's attachment (pose, last den);
  • setWebSocketAutoResponse answering "ping" without waking the object, and getWebSocketAutoResponseTimestamp feeding the dead-seat sweep (DEAD_MS);
  • refuseSocket's close codes (4003 full, 4401 sign in) reaching the page through a real upgrade;
  • a token join against a local eqosys: the mm.eqosys setting, then party, lobby, Start, ?room=.

The plan: run apps/mythic-masters under wrangler dev (or miniflare) with its generated wrangler.jsonc, point test/together.test.ts at it (as MM_PARTY points it at the stand-in today), and run the journey there once. Then keep whichever runner is steady enough to gate on. Nothing here deploys: the owner's live run is MANUAL RUN #3697.

Activity

  1. QuinnsCode commented on Nov 5, 2026

    @QuinnsCode
    OwnerAuthor

    Most of this runs now in PR #3716 (round 12 of #3707). scripts/edge.ts runs the Worker and Region under wrangler dev, and test/edge.test.ts checks them there. It needs no Chrome, so CI runs it (21.8 s on Linux). It covers:

    • hibernation: after 15 s of only pings, the Region is rebuilt with both seats; a newcomer sees a pose from an attachment, and a fight report is still believed against the den walked into before the room slept;
    • setWebSocketAutoResponse: pings are answered without waking the room; the sweep (getWebSocketAutoResponseTimestamp) closes a silent seat and the party hears "bye";
    • refuseSocket codes through a real upgrade: 4401 (no token, or a forged one) and 4003 (full);
    • a token join checked against a local eqosys JWKS from inside workerd.

    MM_EDGE=workerd bun test test/together.test.ts runs the two-page Chrome journey against workerd as well, and it passes.

    It also found that workerd refused to start the Worker at all, because worker.ts exported two constants. That's fixed in the PR.

    Still open here:

    • The lobby path with a real local eqosys: the mm.eqosys setting, then party, lobby, Start, ?room=. It needs apps/eqosys running locally, for its party Durable Object.
    • Under wrangler dev, a socket the room closes after it opened (a replaced tab, a swept one) gets the close frame, but the connection isn't torn down. Chrome reports the code after its 2 s timeout, and Bun's client stays in CLOSING. Worth checking once on the live edge during MANUAL RUN: Mythic Masters walk together, deploy and play the open world with a friend #3697.
  2. QuinnsCode commented on Nov 6, 2026

    @QuinnsCode
    OwnerAuthor

    PR #3806 runs the lobby end to end: eqosys's handler, Party and Hub in Bun, the game under workerd with the live door, two signed-in friends in Chrome, then Walk together, the link, Ready, Start, and one room. It found and fixes a bug: on a ?party= page the lobby and the Book's readers each joined the party, and eqosys seats a player once, so the lobby showed no members and no Start. Still open here: the socket wrangler dev closes without tearing it down, for the live check in #3697. Found on the way: #3805.

  3. QuinnsCode commented on Nov 6, 2026

    @QuinnsCode
    OwnerAuthor

    Issue-runner check (2026-11-06): covered. #3716 runs the Worker and Region under wrangler dev in CI (test/edge.test.ts: hibernation, ping auto-response and the sweep, refuse codes, a token join), and #3806 runs the lobby end to end against a local eqosys. The one item left is a socket the room closes but wrangler dev doesn't tear down; it's a live-edge check, which already belongs to MANUAL RUN #3697. Phase done here; nothing else is open.

  4. QuinnsCode commented on Nov 9, 2026

    @QuinnsCode
    OwnerAuthor

    Done, from the 2026-11-09 board scan (notes/audit/2026-11-09-*.json): #3716 runs the Region under wrangler dev in CI (test/edge.test.ts) and #3806 runs the lobby end to end (both merged); the live-edge socket teardown belongs to MANUAL RUN #3697

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

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions