PLATINUM DOCS

us-east: what is ready, what is not

us-east: what is ready, what is not

Status on 2026-09-17, measured on the real boxes (CP VPS + node at Hivelocity OGB1, PlanetScale prod-us-east, Wasabi platinum-prod-us, Frankfurt as the global database).

Short answer: not yet. The software is there and it is fast; the region is one host, one control plane, one template, with no warm pool and an unconfigured secret keyring. Nothing below is unknown — each line is something that was run or measured.

Ready

Not ready

  1. One host, one control plane. aec_hosts_total 1. A node failure is a regional outage; a CP failure is a regional outage. Production needs at least two of each, and the placement/drain paths need to be exercised with more than one host in-region.

  2. Templates built in EU are not here. A template is only usable in the region that holds its chunks. Building in-region works and is fast; replicating an existing EU template is a per-template admin call. Anyone routed here who expects their existing templates must have them replicated first.

    Not a gap, despite what this document said earlier: no warm pool is missing in us-east, because no region has one. SNAPSHOT_CONFIGS names kortix-computer, which no longer exists in the catalogue, and the dynamic list is empty — there are zero warm-* templates and zero pool sandboxes fleet-wide. EU production cold-boots too. Warming is worth doing, but it is a fleet-wide improvement, not a US deficit.

  3. The org-secret keyring is unset. Done. The home region's kid K1 is installed on the regional control plane, and the node was promoted to a secret carrier with infra/scripts/promote-host-secret-carrier.sh (anti-spoof enforce; it advertises secretsV=2 and the scheduler will place credential-bearing sandboxes on it). A new region needs both steps, and neither is automatic: PT_SECRETS_ACTIVE_KID is absent, so /v1/secrets/* and sealed host leases answer 503 (the host retries ~155 times an hour, harmlessly). This is deliberate rather than half-configured: the ciphertext lives in the global org_secret_versions, so a regional control plane must carry the same keyring as the home region. A different key here would write secrets the home region cannot read.

  4. No private network. The Hivelocity VLAN still passes no frames between the CP VPS and the node, so CP↔node traffic uses public addresses. The cutover (node PT_INTERNAL_IP, vsock cert SAN, edge database route) is written and waiting on their side.

  5. The multi-region code is not merged. It lives on us-east/integration as a stack of pull requests. Production runs main.

  6. A build whose chunks never reach object storage now fails in a regional control plane instead of falling back to a host pin, because the global catalogue cannot name a regional host. That is deliberate (templateHostPin.ts), but it means S3 credentials on a regional host are load-bearing: if they break, builds fail loudly rather than degrading.

Before routing real traffic here

Each line is a thing to do, not a thing to believe. The four suites in tests/README.md are how the first three are checked.

  1. Merge the queue in order. It is 21 pull requests, not the seven this line used to name — the region also needs the multi-region groundwork and the round-trip work it was built on:

    1018 1019 1023 1026 1030 1031   independent
    1029 → 1140                     residency, then prewarm
    1040  1041                      in-process waits, installer lessons
    1110 → 1111 → 1120 → 1112 → 1113   round trips, in this order
    1138 1139 1141 1144             independent
    1142 → 1143                     the two multi-region slices

    multiregion/base, which #1142 targets, is a staging branch with no pull request of its own: merging #1142 into it lands nothing in main. Retarget #1142 at main once its predecessors are in, or the two largest slices have no path home.

    A green "Mergeable" on a pull request means it merges into its own base, not that it merges after its siblings. Seven of these conflict against the queue ahead of them — regionsDefault.ts and server.ts (both additive, keep both sides), api/hosts.ts and api/sandboxes.ts (sibling perf edits to the same statement), and the migration chain. us-east/integration is the already-resolved merge of all of them and is what the suites ran against, so it is the reference for every one of those resolutions.

  2. Roll EU and re-run the battery there. Every multi-region path is conditional on a separate global database, so EU's behaviour should be byte-identical — and that is a claim to test, not to assert. The same verify/feature-matrix-e2e.sh against EU proves it.

  3. Set the two api_origin rows in the regions map, then re-run verify/region-e2e.sh on both regions: the fan-out check turns green only when each region can actually reach the other.

  4. Add a second host and a second control plane in us-east. One of each is a regional outage waiting for a hardware fault, and no code fixes that.

  5. Re-run the outage drill after any change to db/global.ts, audit.ts, the breaker or a dbGlobal caller. It is the only check that can see the home region going away.

  6. Check both halves report a clean build. The control plane answers its health port with {"version":"git:<sha>"} and the host advertises agent_version in GET /v1/admin/hosts. A -dirty suffix on either means the binary was built from a tree with uncommitted changes, so nothing reviewed can be said to be what is running — us-east served for three hours on git:996fa72ff68c-dirty before anyone looked. deploy-hosts.sh refuses a stale dist/, but it will happily roll a dirty one.

What a launch checklist looks like from here

  1. Merge the stack, roll EU, confirm no regression there (EU gains the same guest-boot and resume fixes).
  2. Add a second node and a second control plane in us-east; re-run the drills with two of each.
  3. Replicate the production templates, bake their pools in-region, and re-measure create from the pool.
  4. Ship the home region's secret keyring to the regional control plane, then re-enable /v1/secrets/*.
  5. Finish the private VLAN and move CP↔node and database traffic off public addresses.
  6. Point monitoring at the new gauges with the thresholds in docs/multi-region-db.md.

How to re-run the evidence

  • Routes: bash /root/pt-routes-us.sh on the CP (medians of at least three; one run straight after a deploy reads cold).
  • Cold-boot breakdown: bash /root/pt-guest-probe.sh N, then the host agent's [perf] lines.
  • Home-region outage: the drill drops outbound 5432 to the global database's addresses on the CP, exercises the sandbox path, a route that must write globally, and /metrics, then restores the firewall.