|
| 1 | +# Server Transport Migration Roadmap |
| 2 | + |
| 3 | +## Current state |
| 4 | + |
| 5 | +- [x] Cross-transport dedupe is deployed on beta. |
| 6 | +- [x] The socket-only gate is present but requires links with `v=3.52.0` or newer. |
| 7 | +- [ ] The guarded pages are deployed to production. |
| 8 | +- [ ] Production go-live time is recorded below. |
| 9 | +- [ ] Version `3.52.0` is released. |
| 10 | + |
| 11 | +Production go-live (Day 0): `NOT STARTED` |
| 12 | + |
| 13 | +The 30-day countdown starts only when the guarded pages go live on production. Do not bump the extension to `3.52.0` before the Day 30 readiness review passes. |
| 14 | + |
| 15 | +## Phase 1: Production rollout - Day 0 |
| 16 | + |
| 17 | +- [ ] Deploy the guarded page changes to production. |
| 18 | +- [ ] Record the exact production date and time above. |
| 19 | +- [ ] Confirm fresh production copies of representative pages contain the transport gate and dedupe guard. |
| 20 | +- [ ] Run `node scripts/transport-dedupe-regression.test.cjs` against the production commit. |
| 21 | +- [ ] Keep the extension version below `3.52.0`. |
| 22 | +- [ ] Keep additive delivery experimental; do not enable it by default. |
| 23 | + |
| 24 | +## Phase 2: Cache and production soak - Days 1-30 |
| 25 | + |
| 26 | +- [ ] Leave the `3.52.0` gate inactive for the full 30 days. |
| 27 | +- [ ] Monitor reports of duplicate or missing messages. |
| 28 | +- [ ] Test additive delivery with existing `v=3.50.5` links; they should remain dual-listen and render once. |
| 29 | +- [ ] Test links without `server2`; they should remain bridge-only. |
| 30 | +- [ ] Test representative chat overlays, emotes, events, hype, games, and the dock. |
| 31 | +- [ ] Do not treat an old saved OBS URL as updated merely because its cached page has refreshed. |
| 32 | + |
| 33 | +## Phase 3: Readiness review - Day 30 |
| 34 | + |
| 35 | +All items must pass before releasing `3.52.0`: |
| 36 | + |
| 37 | +- [ ] Thirty full days have passed since the recorded production go-live time. |
| 38 | +- [ ] Production is serving the guarded page code. |
| 39 | +- [ ] The dedupe regression test passes. |
| 40 | +- [ ] Fresh and old saved links both render messages once during additive delivery. |
| 41 | +- [ ] No unresolved duplicate-message or dropped-message regression remains. |
| 42 | +- [ ] The socket-outage tradeoff is accepted: a socket-only overlay cannot receive the P2P fallback while its bridge is disconnected. |
| 43 | + |
| 44 | +## Phase 4: Release `3.52.0` |
| 45 | + |
| 46 | +- [ ] Bump the extension manifest to `3.52.0`. |
| 47 | +- [ ] Release the updated extension. |
| 48 | +- [ ] Confirm newly generated links contain `v=3.52.0` or newer. |
| 49 | +- [ ] Confirm eligible read-only overlays using `server2` stop opening the legacy bridge. |
| 50 | +- [ ] Confirm old saved links remain dual-listen and are protected by dedupe. |
| 51 | +- [ ] Monitor the release before changing the additive-delivery default. |
| 52 | + |
| 53 | +## Phase 5: Make additive delivery the default |
| 54 | + |
| 55 | +Do this no earlier than September 1, 2026, and only after the `3.52.0` release has completed its monitoring period. |
| 56 | + |
| 57 | +- [ ] Change additive delivery from opt-in to the default; the existing date comment does not perform this change automatically. |
| 58 | +- [ ] Update or remove the experimental setting text in the popup. |
| 59 | +- [ ] Retest fresh `3.52.0+` links, old saved links, bridge-only links, and socket outages. |
| 60 | +- [ ] Keep the dedupe guards in place. |
| 61 | + |
| 62 | +## Separate later project: retire the legacy bridge |
| 63 | + |
| 64 | +This is not required for the `3.52.0` or additive-delivery rollout. |
| 65 | + |
| 66 | +- [ ] Keep the dock dual-connected until its commands and private/targeted replies work fully through the server. |
| 67 | +- [ ] Audit every surface marked `legacyBridgeRequired: true`. |
| 68 | +- [ ] Migrate special tools such as hype, credits, events, poll, map, reactions, and tipjar individually. |
| 69 | +- [ ] Change transport capability flags one page at a time after focused testing. |
| 70 | +- [ ] Decide whether and how old saved URLs will ever be moved away from dual-listen mode. |
0 commit comments