Repository navigation
chore(relay): move US cells c32 and c33 to the general same-cap list after promotion - #25367
Conversation
…after promotion Both were promoted to general on 2026-10-01 (selector 344 shows them general), but the same-cap job still classed them migration-only. Rollback mode on either would isolate (general -> migration-only) before its no-op check failed, demoting a live cell. They stay out of the fleet pool list (pool 10, not 16). Claude-Session: 1145a80d-dec4-4a9b-9373-bbbb876b9041
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes — the four-file promotion of US relay cells C32/C33 from the same-cap migration-only list to the general list, and the tests/docs that record it.
- List change:
SAME_CAP_MIGRATION_ONLY_CELLSdrops to[c17, c18], and C32/C33 join the explicit general tail ofSAME_CAP_CELLS, flippingentryAdmissiontogeneralandselectorWaveDeltato 2. - Wave tests: pin migration-only to C17/C18, add C32/C33 general/delta-2 assertions, a
c26,c32,c33general batch, and ac32,c17mixed-wave refusal. - Census invariant: removes the
unpromotedSourcesexception, soSAME_CAP_CELLSminusREHOME_SOURCE_CELLSnow equalsSAME_CAP_MIGRATION_ONLY_CELLSexactly. - Docs: record the 2026-10-01 promotion and why C32/C33 stay out of the fleet pool list (US default pool of 10).
I traced the changed list against its consumers: entryAdmission/selectorWaveDelta drive the same-cap job's drain, isolate, and restore branches; the job's c32|c33 cell-shape case (cap 3000, us-central1, pool default 10) is unaffected and still correct; FLEET_POOL_CELL_IDS correctly stays C27-C31; and no other migration-only list in the tree hardcodes C32/C33. Ran the three same-cap test files (node --test): 51/51 pass.
deepseek-v4.1-flash (free via Pullfrog for OSS) | 𝕏
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configuration
📒 Files selected for processing (4)
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 2 remain after this review. 📝 WalkthroughWalkthroughThe same-cap script now classifies C32 and C33 as general cells instead of migration-only cells. Tests cover their general admission, selector delta, and batching rules. The census test and workflow documentation reflect the updated classification. Priority: ➖ Normal Merge Risk: ⚪ Minimal · up to The changed checks and workflow agree with the reported C32/C33 promotion. No actionable defect is established; verify the production selector state before dispatching the updated job. Security Architecture ReviewSecurity architecture risk: 🔵 Low · up to The change puts C32 and C33 on the normal isolate-and-restore rollout path without widening the approved cell set or granting new permissions. Risk is low, but depends on both cells having completed promotion: rollback accepts migration-only cells and would now restore these two as general. Retained concerns Security review detailsSecurity Blast Radius
Trust Boundaries and Controls
Resilience and Maintainability Implications
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |

ELI5
The two new US relay servers, C32 and C33, started serving regular traffic on 2026-10-01. Our rollout tooling still lists them as "spare only". Because of that mismatch, one rollout mode could quietly switch a live server back to spare-only, which pushes its users off it. This updates the list to match production.
Merge order: this must land before #25336 (the C34 Asia spare). #25336 adds C34 next to C32/C33 in the same list. Landing this first leaves that PR one small conflict to rebase (C34 alone joins C17/C18), rather than carrying the stale entries forward.
What Changed
Before:
SAME_CAP_MIGRATION_ONLY_CELLSstill lists C32 and C33.general. They were promoted by Asia-admission runs 36918046200 and 36919480902.canary-applyandbatch-applyon either cell fail closed: the admission precheck expects migration-only, sees general, and stops before any change.rollbackmode prechecksgeneral-or-migration-only, so it passes. It then runsisolate, which commits general → migration-only plus the roll stamp. Only after that does thechanged == falsecheck for migration-only cells fail (cloud-deploy-relay-production-same-cap-job.ymlaround line 531). The result is a live general cell demoted, with its hosts re-placed off it on their next dial. Recovering means re-promoting it through the Asia-admission canary.After:
SAME_CAP_CELLS, and only C17 and C18 remain migration-only. A roll of C32 or C33 now isolates and restores the cell (selector delta 2), the same as every other general cell, and returns it to general.FLEET_POOL_CELL_IDSis unchanged. That list tracks the 16-connection Asia pools, and C32/C33 run the US default of 10. The workflow guide said this would be decided at promotion; it now records the decision.Mechanism, one file at a time:
relay-production-same-cap-wave.mjs: the migration-only list sets each cell's entry admission and selector delta. It also forbids mixing the two classes in one wave.unpromotedSourcesexception.docs/relay-workflows.mdrecords the promotion.Why
This mirrors #24318 (C31) and #22439 (C30), the follow-ups each earlier promoted cell got. A review of #25336 found it (
review-c34-pr.md, finding F1). No Terraform values, workflows, or other cells change.Linked Issue
N/A, maintainer follow-up to the C32/C33 promotions.
Visual Proof
N/A. Release tooling only, no UI.
Testing
cd cloud && node --test dev/scripts/*.test.mjs: 825 tests, 824 pass. The one failure isrelay-load-control-peer.test.mjs, which this PR does not touch. It cannot loadtweetnaclin a lane worktree without installed dependencies.Review
Agent skill upstream boundary
Notes
Security, cross-platform, SSH, mobile: not applicable. Until this merges, do not dispatch the same-cap job in
rollbackmode on C32 or C33.Checklist
N/Afor visual proof with reasonpnpm lint,pnpm typecheck,pnpm test, andpnpm buildpass (cloud scripts are outside these; CI will cover)