Files
Peter Wielander e3574b9f4c Merge main, and catch v5 up with the WebSocket default and spec 7
Resolves four conflicts, all against #3704's writing-standards pass over
the whole corpus, which rewrote the same paragraphs this branch had
edited. Took main's normalized text everywhere it was purely style, kept
this branch's meaning where the two disagreed: the spec-7 paragraph main
still had at spec 6, the `/v4/...` link the flip makes expressible, and
the batch-write contract note. Restyled this branch's own additions to
the standard main just adopted, so no prose em dashes come back with it.

Content this landed on top:

- **The WebSocket events transport is the default now**, not opt-in. The
  What's new entry said the opposite, which was the most wrong sentence
  in the v5 docs after #3702.
- **Process-wide state has to live on `globalThis`.** New contract note in
  the World upgrade guide, and a step of its own in the World skill, since
  it type-checks, passes tests in isolation, and fails only in a host that
  bundles the World. Named after its casualty: the WS transport registered
  its channel in one bundler layer and looked it up in another layer's
  empty copy, so every event fell back to HTTP silently.
- **One World per process.** The entrypoint's queue handler is built from
  `getWorld()` rather than `getWorldHandlers()`, so a stateful World stops
  getting duplicate pools and queue workers. The build-integration row
  that still sent custom hosts to `getWorldHandlers()` is corrected.
- **A World's transport is its own business, except for the tracing.** A
  non-HTTP transport still owes the per-event client span, or the
  per-event view of a run disappears.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-24 11:53:51 -07:00
..