From 8a9e8fa4b1c76475d5a2fd91dbd7be47955af286 Mon Sep 17 00:00:00 2001 From: wtclaude Date: Fri, 6 Nov 2026 06:59:53 -0600 Subject: [PATCH] ci(cutover): main's cutover.yml is edge's again, so the cutover PR merges (D397) runicnpc-rust#28 changed edge's copy of cutover.yml (gate 1 reads Steam; the staging static half is gone). main's copy was added by its own commit (#26), so the two now conflict (add/add) and the cutover PR #29 cannot merge, though all its gates passed. This makes main's copy byte-for-byte edge's. It changes no commit on edge, so the gates kept for edge 761a9b67 stand and the next hourly run only re-checks the PR and merges. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_014HJEmgsXtLR5kLfh7f9y8P --- .gitea/workflows/cutover.yml | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/.gitea/workflows/cutover.yml b/.gitea/workflows/cutover.yml index 4ec300c..4181a9e 100644 --- a/.gitea/workflows/cutover.yml +++ b/.gitea/workflows/cutover.yml @@ -6,10 +6,10 @@ # gates have passed, cheapest first (the decisions are pure functions in tools/drill/cutover.js, tested # by cutover.test.js, which PR Checks runs): # -# 1. public Rust's public build is dated the wipe day or later AND names the same depot manifest as -# Rust's current STAGING build (Facepunch promotes staging to public, so the two agree once the -# cut over from staging to live went through). The static half runs twice, BRANCH=public and -# BRANCH=staging; only the staging run's manifest is used. +# 1. public Steam set Rust's public branch to its build on the wipe day or later (steamcmd's app info, +# branches.public.timeupdated, which the static half keeps as appinfo.txt) AND the Linux depot +# manifest Steam names for public is the one the static half downloaded. (The first design used +# the manifest's date and staging's manifest; neither works, see tools/drill/cutover.js.) # 2. oxide Oxide's public build has caught up (0 members behind), the swap's field list is unchanged # and RunicNPC compiles. # 3. carbon `rust-carbon` restarts on public Rust with edge's RunicNPC.cs: its appmanifest names the @@ -97,7 +97,6 @@ jobs: timeout-minutes: 240 env: WORK: ${{ github.workspace }}/cutover-work - STAGING_WORK: ${{ github.workspace }}/cutover-staging # cutover.js treats a dispatch as dry unless this is exactly 'false'. DRY_RUN_INPUT: ${{ github.event.inputs.dry_run }} steps: @@ -163,6 +162,7 @@ jobs: [ -f drill-state/drill.json ] || echo '{}' > drill-state/drill.json cat drill-state/drill.json + # With BRANCH=public it also keeps Steam's app info (appinfo.txt) for gate 1. - name: Static half (Rust's public build) if: ${{ steps.pending.outputs.run == 'true' }} env: @@ -171,16 +171,6 @@ jobs: DOTNET_SYSTEM_GLOBALIZATION_INVARIANT: '1' run: bash tools/drill/static.sh - # Only this run's manifest is used (gate 1): the build Rust has on staging now. - - name: Static half (Rust's staging build, for its manifest) - if: ${{ steps.pending.outputs.run == 'true' }} - env: - BRANCH: staging - WORK: ${{ github.workspace }}/cutover-staging - LC_ALL: C - DOTNET_SYSTEM_GLOBALIZATION_INVARIANT: '1' - run: bash tools/drill/static.sh - - name: Gates 1-3 (public build, Oxide, Carbon) id: gates if: ${{ steps.pending.outputs.run == 'true' }} @@ -188,7 +178,7 @@ jobs: GITEA_TOKEN: ${{ secrets.REGISTRY_TOKEN }} PANEL_KEY: ${{ secrets.PTERODACTYL_DRILL_KEY }} run: >- - node tools/drill/cutover.js gates --state drill-state/drill.json --work "$WORK" --staging-work "$STAGING_WORK" + node tools/drill/cutover.js gates --state drill-state/drill.json --work "$WORK" ${{ (github.event_name == 'workflow_dispatch' && github.event.inputs.dry_run != 'false') && '--dry-run' || '' }} ${{ github.event.inputs.force == 'true' && '--force' || '' }} @@ -223,7 +213,7 @@ jobs: env: GITEA_TOKEN: ${{ secrets.REGISTRY_TOKEN }} run: >- - node tools/drill/cutover.js gates --after-live --state drill-state/drill.json --work "$WORK" --staging-work "$STAGING_WORK" + node tools/drill/cutover.js gates --after-live --state drill-state/drill.json --work "$WORK" ${{ (github.event_name == 'workflow_dispatch' && github.event.inputs.dry_run != 'false') && '--dry-run' || '' }} ${{ github.event.inputs.force == 'true' && '--force' || '' }}