fix(cutover): gate 1 asks Steam when public was set (D397) #28

Merged
whitlocktech merged 1 commits from fix/cutover-public-gate into edge 2026-11-06 04:44:11 -06:00
Member

What & why

The 2026-11-05 cutover never released: gate 1 blocked every hourly run (runs 61–78). Both of its checks rested on assumptions the wipe disproved:

Run (UTC) public manifest (its date) staging manifest
Thu 17:11 1632958440323253420 (10/22), October's 2915291852004903570
Thu 19:11 3647035647797862067 (11/04), the wipe build, live 2915291852004903570
Fri 10:12 547616323393184824 (11/06), a hotfix 4006809933087453123
  • The manifest date DepotDownloader prints is when Facepunch built the build, not when it went live.
  • Public never names staging's manifest. Steam's app info shows why: Facepunch promotes a hidden release branch ("Release, before public") to public, and last-month keeps the previous build.

Gate 1 now asks Steam (D397, org lead's choice 2026-11-06): the public static half runs steamcmd +login anonymous +app_info_update 1 +app_info_print 258550 and keeps the output as appinfo.txt. depots.branches.public.timeupdated must be on the wipe day or later, and the 258552 manifest Steam names for public must equal the one the static half downloaded (when they disagree, that hour blocks).

  • tools/drill/static.sh: steam_info with BRANCH=public only (fetches steamcmd, installs lib32gcc-s1 on a bare runner after a first miss, three tries); steamNote in static.json.
  • tools/drill/cutover.js: steamBranch() (parses app info past steamcmd's own lines) and the new publicGate(). manifestTime/publicChanged are gone.
  • .gitea/workflows/cutover.yml (edge's copy): the staging static half is gone. main's copy needs no change for this weekend: it still passes --staging-work, which is accepted and ignored, and its extra staging step just runs for nothing. The cutover merge carries edge's wiring to main.

As soon as this is in edge, the next hourly run (:11) uses it, and the window is open until Sun 11-08 23:00 UTC.

How it was tested

  • node --test tools/drill/cutover.test.js tools/drill/drill.test.js: 62/62. The new tests use a trimmed copy of the real app info and the Thu 11-05 case (live Thursday evening, manifest dated 11-04).
  • Real app info from steamcmd (2026-11-06): the gate passes for the 11-05 wipe and refuses for 12-03.
  • Dry run, CI run 80 (main's workflow, code_ref=fix/cutover-public-gate): on the real runner steamcmd ran, steamNote is empty, and gate public: passed, gate oxide: passed on 547616323393184824. Carbon and live were still running when this was opened. The result follows in a comment.

Checklist

  • I have read CONTRIBUTING.md.
  • The change builds and existing tests/checks pass locally.
  • I have added or updated tests/docs where it makes sense. (docs: D397 + 9c gate 1, docs PR linked below)
  • My commits are reasonably scoped with clear messages.

AI-assisted contributions (required)

  • No AI tools were used to produce this contribution.
  • AI tools were used. Tool(s): Claude Code (Claude Opus 5.5). I have reviewed and understand
    every change, and take responsibility for it. AI-authored commits are
    marked with a Co-Authored-By / Assisted-By trailer.

License

  • I agree that my contribution is licensed under this project's license
    (GNU GPL v3.0 or later), and I have the right to contribute it.

🤖 Generated with Claude Code

https://claude.ai/code/session_014HJEmgsXtLR5kLfh7f9y8P

## What & why The 2026-11-05 cutover never released: gate 1 blocked every hourly run (runs 61–78). Both of its checks rested on assumptions the wipe disproved: | Run (UTC) | public manifest (its date) | staging manifest | |---|---|---| | Thu 17:11 | `1632958440323253420` (10/22), October's | `2915291852004903570` | | Thu 19:11 | `3647035647797862067` (**11/04**), the wipe build, live | `2915291852004903570` | | Fri 10:12 | `547616323393184824` (11/06), a hotfix | `4006809933087453123` | - The manifest date DepotDownloader prints is when Facepunch **built** the build, not when it went live. - Public never names staging's manifest. Steam's app info shows why: Facepunch promotes a hidden `release` branch ("Release, before public") to `public`, and `last-month` keeps the previous build. **Gate 1 now asks Steam (D397, org lead's choice 2026-11-06):** the public static half runs `steamcmd +login anonymous +app_info_update 1 +app_info_print 258550` and keeps the output as `appinfo.txt`. `depots.branches.public.timeupdated` must be on the wipe day or later, and the 258552 manifest Steam names for `public` must equal the one the static half downloaded (when they disagree, that hour blocks). - `tools/drill/static.sh`: `steam_info` with BRANCH=public only (fetches steamcmd, installs `lib32gcc-s1` on a bare runner after a first miss, three tries); `steamNote` in static.json. - `tools/drill/cutover.js`: `steamBranch()` (parses app info past steamcmd's own lines) and the new `publicGate()`. `manifestTime`/`publicChanged` are gone. - `.gitea/workflows/cutover.yml` (edge's copy): the staging static half is gone. **main's copy needs no change for this weekend:** it still passes `--staging-work`, which is accepted and ignored, and its extra staging step just runs for nothing. The cutover merge carries edge's wiring to main. As soon as this is in edge, the next hourly run (:11) uses it, and the window is open until Sun 11-08 23:00 UTC. ## How it was tested - `node --test tools/drill/cutover.test.js tools/drill/drill.test.js`: 62/62. The new tests use a trimmed copy of the real app info and the Thu 11-05 case (live Thursday evening, manifest dated 11-04). - Real app info from steamcmd (2026-11-06): the gate passes for the 11-05 wipe and refuses for 12-03. - **Dry run, CI run 80** (main's workflow, `code_ref=fix/cutover-public-gate`): on the real runner steamcmd ran, `steamNote` is empty, and `gate public: passed`, `gate oxide: passed` on `547616323393184824`. Carbon and live were still running when this was opened. The result follows in a comment. ## Checklist - [x] I have read [CONTRIBUTING.md](CONTRIBUTING.md). - [x] The change builds and existing tests/checks pass locally. - [x] I have added or updated tests/docs where it makes sense. (docs: D397 + 9c gate 1, docs PR linked below) - [x] My commits are reasonably scoped with clear messages. ## AI-assisted contributions (required) - [ ] No AI tools were used to produce this contribution. - [x] AI tools were used. Tool(s): `Claude Code (Claude Opus 5.5)`. I have reviewed and understand every change, and take responsibility for it. AI-authored commits are marked with a `Co-Authored-By` / `Assisted-By` trailer. ## License - [x] I agree that my contribution is licensed under this project's license (**GNU GPL v3.0 or later**), and I have the right to contribute it. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_014HJEmgsXtLR5kLfh7f9y8P
wtclaude added 1 commit 2026-11-06 04:41:57 -06:00
fix(cutover): gate 1 asks Steam when public was set, not the manifest's date or staging (D332)
All checks were successful
PR Checks / plugin-checks (pull_request) Successful in 29s
e5548472da
The 2026-11-05 weekend never cut over: gate 1 blocked every hourly run. Both of
its checks rested on assumptions the wipe disproved:

- The wipe build went live Thursday evening, but its depot manifest is dated
  11-04: the date DepotDownloader prints is when Facepunch built it.
- Public never names staging's manifest. Facepunch promotes a hidden `release`
  branch ("Release, before public"), and staging had moved on before the wipe.

Gate 1 now reads Steam's app info (steamcmd +app_info_print 258550, kept by
static.sh as appinfo.txt with BRANCH=public): branches.public.timeupdated must be
on the wipe day or later, and the Linux depot manifest Steam names for public
must be the one the static half downloaded. The staging static half is gone from
edge's cutover.yml; --staging-work is still accepted, since main's copy passes it
until the cutover merge carries the new wiring over.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014HJEmgsXtLR5kLfh7f9y8P
whitlocktech merged commit 761a9b6733 into edge 2026-11-06 04:44:11 -06:00
whitlocktech deleted branch fix/cutover-public-gate 2026-11-06 04:44:12 -06:00
Sign in to join this conversation.
No description provided.