Listicles & Resource Roundups Jul 10, 2026

12 Pre-Flight Checks Before steamcmd setlive on October Fest Branch Promotion - 2026

2026 listicle of twelve preflight checks before steamcmd setlive on October fest branch promotion—depot_owner_receipt_v1.json, build_app dry-run, and BUILD_RECEIPT partner ID column.

By GamineAI Team

12 Pre-Flight Checks Before steamcmd setlive on October Fest Branch Promotion - 2026

Pixel-art hero for twelve preflight checks steamcmd setlive October fest branch promotion 2026

Thursday lunch: someone runs setlive on the October fest branch. Steamworks shows queued. Discord celebrates. Friday morning: DepotOwnedByOtherAccount in the upload log—or worse, players install a build from last week's playtest depot because the branch pointer never moved.

October 2026 micro-studios share laptops with contractors, run steamcmd from CI secrets scraped off a producer's personal Steam machine, and promote during the same week as Addressables group moves. Green upload badges lie when partner identity, branch name, and BUILD_RECEIPT build_id disagree. This Listicles & Resource Roundups post is a printable twelve-check gate before steamcmd setlive—not another store-metadata FAQ audit.

Non-repetition note: Depot and branch discipline owns naming policy; GameMaker partner preflight owns P1–P6 GameMaker lane; Wednesday demo smoke owns binary golden path. This URL owns setlive promotion checklist + depot_owner_receipt_v1.json.

Why this matters now (October 2026)

  1. DepotOwnedByOtherAccount spikes when contractors share laptops—personal Steam vs studio partner.
  2. Fest crunch defer listsFounder time-box worksheet says stop burning Thursday on wrong partner—not queue retries.
  3. Multi-engine teams — Unity, Godot, GameMaker share one Steamworks app; identity drift is engine-agnostic.
  4. CI + human setlive — Runner config.vdf ≠ producer laptop ≠ IDE session.
  5. Receipt cultureThursday row review needs steam_partner_id and setlive_allowed columns—not vibes.

Direct answer: Run checks 1–12 in order; file depot_owner_receipt_v1.json; set setlive_allowed: true only when no DepotOwnedByOtherAccount in dry-run log and Wednesday smoke S4–S6 are GREEN on the same build_label.

Who this checklist is for

Audience You will use this list to…
Beginner Print one page and check boxes before clicking setlive
Producer Block promotion when check 8 or 11 fails
Engineer Wire dry-run logs + receipt JSON in CI
Contractor Prove partner login before touching app_build_*.vdf

Time: ~20 minutes first fest promotion; ~8 minutes when screenshots and VDF paths are pinned.

Beginner path — print this page

Copy into release-evidence/steam/SETLIVE_PREFLIGHT_CHECKLIST.md:

# setlive preflight — October fest (12 checks)
Date: __________  build_label: __________  App ID: __________

[ ] 1. BUILD_RECEIPT build_id matches target branch build
[ ] 2. Wednesday demo smoke S4–S6 GREEN (same build_label)
[ ] 3. Steamworks App Admin screenshot < 7 days old
[ ] 4. steamcmd config.vdf = studio partner (not personal)
[ ] 5. app_build VDF App ID matches Steamworks
[ ] 6. Depot IDs in VDF match Steamworks Depots tab
[ ] 7. Branch name = documented fest branch (not default)
[ ] 8. build_app dry-run log — no DepotOwnedByOtherAccount
[ ] 9. surface = fest_public (not playtest_invite) on receipt
[ ] 10. Player-visible build_label on promoted binary
[ ] 11. Thursday BUILD_RECEIPT row review pass
[ ] 12. depot_owner_receipt_v1.json filed — setlive_allowed true

Approver: __________  UTC: __________

Fail-closed: Any unchecked box → no setlive until fixed or producer waiver documented on BUILD_RECEIPT.

Developer path — receipt + CI tail

  1. Archive build_app dry-run log beside VDF.
  2. Pin Steamworks admin screenshot under release-evidence/steam/.
  3. Write depot_owner_receipt_v1.json mapping checks 1–12.
  4. Add BUILD_RECEIPT columns: steam_partner_id, setlive_allowed, depot_owner_receipt_path.
  5. jq -e '.setlive_allowed == true' in CI before setlive step runs.
  6. Pair Lesson 270 forward for GameMaker-specific setlive dry-run receipt cousin.

The twelve pre-flight checks

Check 1 — BUILD_RECEIPT build_id matches branch target

Open BUILD_RECEIPT and Steamworks Builds tab side by side.

Field Must match
build_id / build_label Build you intend to assign to fest branch
git.commit Commit that produced the depot content (if tracked)
Upload log row Same buildid as Steamworks

Fail: Receipt still lists last Tuesday's playtest build while VDF points at today's hotfix.

Check 2 — Wednesday demo smoke GREEN (S4–S6)

Wednesday smoke proves installed binary golden path—not compile-only CI.

Gate Block setlive when RED
S4 Golden path start
S5 60s continuous play
S6 Clean quit

Pair Tuesday CSV ingest for async blocker counts—P0 > 0 blocks promotion unless waived.

Check 3 — Steamworks App Admin screenshot (< 7 days)

Capture before fest week:

  1. Steamworks → Users & Permissions → your app.
  2. Screenshot showing App ID, depot list, upload actor as App Admin.
  3. Save release-evidence/steam/steamworks_app_admin_<appid>_<date>.png.

Red flag: Upload actor is Marketing-only or different legal entity than depot owner.

Check 4 — config.vdf partner login (not personal Steam)

OS Typical path
Windows %ProgramFiles(x86)%\Steam\config\config.vdf
Linux CI ~/.steam/steam/config/config.vdf

Pass: Account name matches studio partner login in screenshot (check 3).
Fail: Personal @gmail or jam-game account from 2024.

CI rule: One mounted config.vdf secret per app—never reuse producer laptop personal Steam on ubuntu-latest. Cousin: GameMaker partner preflight P2.

Check 5 — app_build_*.vdf App ID crosswalk

"appid" "1234560"

Must match Steamworks App ID exactly—no transposed digits from contractor copy-paste.

Check 6 — Depot ID crosswalk

Source Field
Steamworks Depots tab Depot ID
VDF "depot" "1234561"

Cross-read depot and branch discipline. Godot/Linux CI: verify VDF line endings before steamcmd parse (Help #31 forward).

Check 7 — Branch name = documented fest branch

Wrong Right
default when fest uses nextfest-oct-2026 Branch name in BUILD_RECEIPT + runbook
Playtest branch pointer fest_public demo branch per isolation playbook

Screenshot Steamworks Branches tab; pin beside receipt.

Check 8 — build_app dry-run log (no DepotOwnedByOtherAccount)

Run before setlive:

steamcmd +login "$STEAM_PARTNER_USER" "$STEAM_PARTNER_PASS" \
  +run_app_build_http /path/to/app_build_demo.vdf \
  +quit 2>&1 | tee release-evidence/steam/build_app_dry_run_<date>.log
Log line Meaning
DepotOwnedByOtherAccount Stop — checks 3–4–6
OK / build finished Proceed to check 12
Auth churn / 2FA loop Dedicated server login pattern per Steamworks uploading

Help #27 forward owns fix lane for DepotOwnedByOtherAccount—this checklist catches it before setlive.

Check 9 — surface = fest_public on BUILD_RECEIPT

Playtest isolation fails when receipt says playtest_invite but you promote fest demo branch.

Pass: surface: fest_public + branch screenshot matches fest SKU.

Check 10 — Player-visible build_label on binary

Visible build label opinion requires players can report the same string as BUILD_RECEIPT—setlive without label correlation wastes support after promotion.

Check 11 — Thursday BUILD_RECEIPT row review pass

Thursday row review diffs build_id, surface, demo_smoke.promotion_allowed, and new steam_partner_id column.

Rule: Smoke GREEN + receipt RED → no setlive.

Check 12 — depot_owner_receipt_v1.json filed

{
  "schema": "depot_owner_receipt_v1",
  "build_label": "nextfest-oct-2026-rc5",
  "app_id": "1234560",
  "depot_ids": ["1234561"],
  "fest_branch": "nextfest-oct-2026",
  "steam_partner_id": "studio_partner_login",
  "steamworks_admin_screenshot": "release-evidence/steam/steamworks_app_admin_1234560_2026-10-22.png",
  "config_vdf_account": "studio_partner_login",
  "build_app_dry_run_log": "release-evidence/steam/build_app_dry_run_2026-10-22.log",
  "cousin_receipts": {
    "demo_smoke": "release-evidence/03-builds/demo_smoke_receipt_v1.json",
    "gm_steam_partner": "release-evidence/steam/GM_STEAM_PARTNER_RECEIPT.json"
  },
  "checks": {
    "01_build_receipt_crosswalk": "pass",
    "02_wednesday_smoke": "pass",
    "03_app_admin_screenshot": "pass",
    "04_config_vdf_partner": "pass",
    "05_app_id_vdf": "pass",
    "06_depot_id_vdf": "pass",
    "07_fest_branch_name": "pass",
    "08_build_app_dry_run": "pass",
    "09_surface_fest_public": "pass",
    "10_visible_build_label": "pass",
    "11_thursday_row_review": "pass",
    "12_receipt_filed": "pass"
  },
  "depot_owned_by_other_account": false,
  "setlive_allowed": true
}

Pin under release-evidence/steam/DEPOT_OWNER_RECEIPT.json.

Minimum six-check stack (when time-boxed)

From fest week capacity worksheet—if you only have ten minutes:

Priority Check Why
Must 8 DepotOwnedByOtherAccount
Must 4 Wrong partner login
Must 2 Binary smoke
Must 7 Wrong branch
Should 3 Admin proof
Should 12 Receipt audit trail

Defer checks 5–6–9–10–11 only with producer waiver row—document on BUILD_RECEIPT.

Weekly ritual map (setlive week)

Day Ritual This checklist
Tuesday CSV ingest Blockers scoped
Wednesday PM Demo smoke Check 2
Thursday AM Row review Check 11
Thursday PM build_app dry-run Check 8
Thursday PM setlive (if 1–12 pass) Check 12

Engine-specific pointers (checks 5–6–8)

Engine Extra note
Unity IL2CPP build in VDF content root—not Editor folder
Godot Export preset path + VDF LF on Linux CI
GameMaker Export sanity G2 + partner P1–P6
Ren'Py Wall-clock upload ≠ auth fail—cousin SteamPipe queue trend

Common mistakes

  1. setlive from personal Steam on contractor laptop (check 4).
  2. Skipping dry-run because "upload worked last month" (check 8).
  3. Default branch promotion during fest week (check 7).
  4. Smoke on rc4, setlive rc3 (check 1).
  5. Marketing role actor on App Admin screenshot (check 3).
  6. No receipt before Discord announcement (check 12).
  7. Confusing queue delay with auth failure — grep log for DepotOwnedByOtherAccount first.

CI jq gate (optional tail before setlive step)

#!/usr/bin/env bash
set -euo pipefail
REC="release-evidence/steam/DEPOT_OWNER_RECEIPT.json"
jq -e '.setlive_allowed == true' "$REC"
jq -e '.depot_owned_by_other_account == false' "$REC"
jq -e '.checks."08_build_app_dry_run" == "pass"' "$REC"
echo "setlive preflight OK"

Wire after Library cache bust jq gate on Addressables strip weeks—different failure class.

Seven scenarios (A–G)

ID Situation Correct response
A Dry-run shows DepotOwnedByOtherAccount Stop; run checks 3–4–6; Help #27 forward
B Smoke GREEN on rc5, setlive targets rc4 Fix check 1 BUILD_RECEIPT crosswalk
C Contractor "upload worked" without log Require check 8 log archive
D Queue hours long, no error in log SteamPipe wall-clock trend—do not skip check 8
E Marketing user on screenshot Fail check 3; invite App Admin
F playtest_invite surface on receipt Fail check 9; fix isolation map
G Receipt filed before dry-run Re-order: log first, then check 12 JSON

Worked example — Thursday fest promotion afternoon

Context: build_label=nextfest-oct-2026-rc5, Unity Windows depot, contractor ran upload Tuesday.

Time Action Check
09:00 Thursday row review 11
10:00 Verify Tuesday CSV P0=0 scope
11:00 Re-read Wednesday smoke log 2
13:00 Fresh App Admin screenshot 3
13:15 Grep config.vdf on CI runner 4
13:30 VDF App/depot crosswalk 5–6
14:00 build_app dry-run + tee log 8
14:30 File depot_owner_receipt_v1.json 12
15:00 setlive (human or CI) all pass

Lesson: Skipping 13:00 screenshot saved zero minutes—DepotOwnedByOtherAccount at 15:05 cost the rest of Thursday per defer list.

BUILD_RECEIPT wiring (producer one-pager)

Add these fields beside demo_smoke and library_cache_bust_ok on fest promotion rows:

{
  "build_id": "nextfest-oct-2026-rc5",
  "steam_partner_id": "studio_partner_login",
  "setlive_allowed": true,
  "depot_owner_receipt_path": "release-evidence/steam/DEPOT_OWNER_RECEIPT.json",
  "fest_branch": "nextfest-oct-2026",
  "notes": "Checks 1-12 pass 2026-10-22; dry-run log build_app_dry_run_2026-10-22.log"
}

Thursday row review diffs setlive_allowed against last promoted row—if last week was false and this week is true without new receipt path, R4–R7 fail.

Relationship to October ops cluster siblings

Sibling Angle
Cache bust tutorial CI Library/ stale—not partner identity
Tuesday CSV ingest Async blocker counts before smoke
Whisper tag extraction VOD triage—not Steam upload
SteamPipe wall-clock trend Queue wall-clock narrative—symptom differs from check 8
Lesson 262 GameMaker gm_steam_partner_receipt BUILD_RECEIPT milestone

Order on strip + promote week: Addressables cache bust → Tuesday CSV → Wednesday smoke → Thursday row review → this checklist → setlive.

Contractor laptop policy (checks 3–4–8)

Pin in facilitator / contractor SOW:

Rule Why
No personal Steam login on upload machines check 4
Studio config.vdf or server login only on CI check 4
App Admin screenshot weekly during fest month check 3
Dry-run log attached to invoice milestone check 8
No setlive without producer sign-off on checklist check 12

Pair multi-channel facilitator contract for who may run Steam commands.

Proof table

Row Evidence Pass
Partner identity Screenshot + config.vdf Same login
Depot ownership Dry-run log No DepotOwnedByOtherAccount
Binary truth Smoke receipt S4–S6 GREEN
Branch truth Branch screenshot Matches check 7
Audit depot_owner_receipt_v1.json setlive_allowed: true

Tools and sibling reads

Key takeaways

  1. Twelve checks before setlive—printable for producers, machine-readable in receipt JSON.
  2. DepotOwnedByOtherAccount is partner identity—check 8 before queue panic.
  3. Wednesday smoke (check 2) and setlive (check 12) are different gates.
  4. depot_owner_receipt_v1.json proves checks ran—not Slack celebration.
  5. BUILD_RECEIPT needs steam_partner_id + setlive_allowed columns.
  6. GameMaker partner preflight deepens checks 3–4–8 for GM teams.
  7. Founder time-box defers wrong-partner Thursdays—this list prevents them.
  8. Thursday row review is check 11—non-optional.
  9. Help #27 forward fixes DepotOwnedByOtherAccount; this list prevents it.
  10. SteamPipe queue wall-clock trend covers queue wait—different failure mode.

FAQ

Can we setlive from Steamworks UI instead of steamcmd?
Yes—checks 1–3–7–9–10–11 still apply; file receipt with setlive_method: steamworks_ui.

What if dry-run passes but setlive fails?
Compare branch name and build ID assignment—check 7 and Steamworks Builds tab lag.

Contractor without App Admin?
Fail check 3—invite admin or have studio account run check 8.

Does this replace VDF LF preflight?
No—Linux CI parse errors are Help #31 cousin; run after checks 5–6 pass in UI.

Where does Lesson 270 fit?
GameMaker setlive dry-run BUILD_RECEIPT milestone—pairs checks 7–8 for GM.

Conclusion

setlive is not a victory lap—it is a pointer update that must match partner identity, branch name, smoke receipt, and BUILD_RECEIPT rows. Run twelve checks, archive dry-run logs, file depot_owner_receipt_v1.json, then promote.

Next reads: Thursday row review, Wednesday demo smoke, GameMaker partner preflight, Depot branch discipline.

Found this useful? Print the twelve-check block into release-evidence/steam/ before your next October fest promotion—not after DepotOwnedByOtherAccount burns Thursday.