Your First SteamFest Branch Unset and Default Branch Return Receipt After October Live - One Evening 2026

Tuesday 10:04 a.m., first week after October Next Fest: marketing wants to refresh the store capsule. Steamworks Branches tab still shows october_fest_demo as the live default. Friday upload capstone latched fest_live_allowed: true eleven days ago. Nobody ran unsetlive or filed proof that default again points at the trunk build you intend for November edits. A contractor runs a post-fest hotfix against what they think is default—but players still download the fest RC because the branch never returned.
November 2026 micro-studios treat fest end like a calendar flip. Post-fest week needs a machine-readable branch-unset receipt tied to BUILD_RECEIPT—not a Slack thread saying "we should unset soon." This Tutorials & Beginner-First guide spends one evening creating post_fest_branch_unset_log.jsonl, post_fest_branch_unset_receipt_v1.json, and gates U1–U6 so branch_unset_ok: true on BUILD_RECEIPT means the same thing to producers, release engineers, and forward Wednesday post-fest smoke #10 in the November cluster.
Non-repetition note: 12 setlive checks owns promotion preflight before fest live. SETLIVE exception opinion owns default authorization during upload week. Wrong default branch case study owns recovery when setlive targeted default mid-upload. October upload capstone owns fest_live_allowed before fest live. This URL owns first post-fest unset evening + U1–U6 + branch_unset_ok after fest ends.
Pair BUILD_RECEIPT beginner if receipts are new, GameMaker setlive dry-run evening when dry-run habit is missing, and forward blog #10 Wednesday post-fest smoke when unset receipt exists.
Why this matters now (November 2026 post-October fest)
fest_live_allowedis not unset proof — October upload capstone green-lit fest live; this receipt proves fest branch returned before November store edits.- Capsule edits against wrong default lie — Store team edits metadata while fest RC still serves players.
- Post-fest patches hit the wrong build — Post-fest patch opinion forward #9 assumes branch truth; unset comes first.
- November closeout cousins need clean default — Friday November closeout indexes child receipts; half-done unset fails capstone crosswalk.
- One evening beats post-fest archaeology — Template tonight; ten minutes per branch audit after.
Direct answer: Create release-evidence/steam/post_fest_branch_unset_log.jsonl, run U1–U6, file post_fest_branch_unset_receipt_v1.json, set BUILD_RECEIPT branch_unset_ok: true only when fest branch is unset, default returns to documented trunk build_id, and capstone fest_live_allowed crosswalk still matches.
Who this one-evening ritual is for
| Audience | Outcome |
|---|---|
| Solo dev, first post-fest week | Screenshot + log habit before store refresh |
| Producer | Answer "which branch is live?" without opening Steamworks twice |
| Release engineer | Wire verify_post_fest_branch_unset.sh before November sprint merges |
| Studio lead / partner diligence | Attach unset receipt to post-fest zip instead of branch screenshots |
Time: ~90 minutes first pass (templates + one real unset or documented dry-run); ~10 minutes per subsequent branch audit.
Prerequisites: Steamworks app with fest RC branch from October live, existing BUILD_RECEIPT habit, fest_live_allowed: true from October upload capstone (or documented waiver).
Official references: Steamworks Builds, SteamPipe branches, steamcmd wiki.
Format ladder — November post-October cluster #1
| Row | Format | Owns |
|---|---|---|
| #1 (this) | One-evening branch unset + U1–U6 | branch_unset_ok |
| #2 forward | Post-fest analytics tools listicle | T1–T14 bookmarks |
| #3 forward | Five-night retention challenge | R1–R5 |
| #10 forward | Wednesday post-fest smoke | W1–W10 midweek latch |
| #12 forward | Friday first-week capstone | F1–F10 november_sprint_allowed |
| October capstone | Upstream fest live | fest_live_allowed |
| SETLIVE opinion | Upload-week default policy | setlive_exception_list_ok |
Evening overview (four blocks)
| Block | Minutes | Output |
|---|---|---|
| 1 — Branch inventory + log template | 15 | post_fest_branch_unset_log.jsonl schema |
| 2 — unsetlive + default return | 25 | steamcmd log + Steamworks screenshots |
| 3 — Receipt JSON | 25 | post_fest_branch_unset_receipt_v1.json |
| 4 — Verify + BUILD_RECEIPT | 25 | U1–U6 GREEN, branch_unset_ok |
Stop when jq -e '.branch_unset_ok == true' passes on the receipt path you committed.
Block 1 — Folder layout and log schema
release-evidence/
steam/
post_fest_branch_unset_log.jsonl
post_fest_branch_unset_receipt_v1.json
unset/
2026-11-04_unsetlive.log
screenshots/
branches_before_unset_2026-11-04.png
branches_after_default_return_2026-11-04.png
05-operations/
BUILD_RECEIPT.json
Append-only jsonl — never edit prior lines; add correction rows with "event": "correction".
Log line schema (post_fest_branch_unset_log_v1)
Each line is one JSON object:
{
"schema": "post_fest_branch_unset_log_v1",
"event": "branch_unset",
"unset_started_utc": "2026-11-04T15:10:00Z",
"unset_finished_utc": "2026-11-04T15:18:22Z",
"app_id": "1234560",
"fest_branch_name": "october_fest_demo",
"fest_branch_build_id_before": "2026-10-06-rc04",
"fest_steam_build_id_before": "18472931",
"default_branch_name": "default",
"default_build_id_after": "2026-11-01-trunk01",
"default_steam_build_id_after": "18491002",
"unsetlive_log": "release-evidence/steam/unset/2026-11-04_unsetlive.log",
"capstone_pointer": "release-evidence/october/capstone/october_upload_capstone_receipt_v1.json",
"fest_live_allowed_at_unset": true,
"operator": "release_owner",
"notes": ""
}
Beginner field guide:
fest_branch_name— exact Steamworks branch slug from October fest (not a nickname).default_build_id_after— your receipt naming for trunk after return; must match BUILD_RECEIPT header.default_steam_build_id_after— Steam build ID on default after promotion/return.fest_live_allowed_at_unset— copy from October capstone at time of unset.unsetlive_log— archived steamcmd output; required for U4.
Copy post_fest_branch_unset_log.template.jsonl with one commented example line into release-evidence/steam/README.md so contractors know append rules.
Block 2 — unsetlive and default return
Before touching steamcmd, capture Steamworks Branches screenshot (branches_before_unset_*.png). Note which branch is Live on default.
Step A — Document fest branch state (U2)
Record in a scratch file:
- Fest branch name
- Build ID on fest branch at fest end
- Whether default still points at fest RC (common failure)
Step B — Run unsetlive on fest branch
Use your studio partner account (not personal Steam):
steamcmd +login YOUR_PARTNER +app_set_config 1234560 betakey october_fest_demo -betapassword "" +quit 2>&1 | tee release-evidence/steam/unset/2026-11-04_unsetlive.log
Exact steamcmd verbs vary by workflow—some teams use Steamworks UI Deactivate on the fest branch instead. Pass criteria for U4: log or UI audit shows fest branch no longer owns default live slot; no Access Denied or wrong AppID.
Step C — Promote trunk to default (if needed)
If trunk build is not yet on default, promote with documented build_id:
steamcmd +login YOUR_PARTNER +app_build_setlive 1234560 18491002 default +quit 2>&1 | tee -a release-evidence/steam/unset/2026-11-04_unsetlive.log
Beginner rule: Do not promote a build you cannot name from BUILD_RECEIPT. If trunk moved during fest support, update root build_id before U5 pass.
Capture after screenshot (branches_after_default_return_*.png).
Step D — Append jsonl row
Append one branch_unset line with before/after IDs from screenshots + steamcmd log—do not guess Steam build IDs from memory.
Block 3 — post_fest_branch_unset_receipt_v1.json
Receipt summarizes latest unset and gate results:
{
"schema": "post_fest_branch_unset_receipt_v1",
"receipt_version": "1.0",
"branch_unset_ok": false,
"app_id": "1234560",
"fest_branch_name": "october_fest_demo",
"fest_branch_build_id_before": "2026-10-06-rc04",
"default_branch_name": "default",
"default_build_id_after": "2026-11-01-trunk01",
"default_steam_build_id_after": "18491002",
"unset_log_path": "release-evidence/steam/post_fest_branch_unset_log.jsonl",
"unsetlive_log_path": "release-evidence/steam/unset/2026-11-04_unsetlive.log",
"capstone_pointer": "release-evidence/october/capstone/october_upload_capstone_receipt_v1.json",
"fest_live_allowed_at_unset": true,
"gates": {
"U1": false,
"U2": false,
"U3": false,
"U4": false,
"U5": false,
"U6": false
},
"notes": ""
}
Set branch_unset_ok: true only when U1–U6 all true. Keep post-fest patch flags false until forward #9 opinion schema exists—unset receipt ≠ patch authorization.
Gates U1–U6
| Gate | Name | Pass criteria |
|---|---|---|
| U1 | Fest live upstream | fest_live_allowed: true on October capstone or documented waiver in notes |
| U2 | Fest branch documented | fest_branch_name + fest_branch_build_id_before match pre-unset screenshot |
| U3 | Unset executed | jsonl has ≥1 branch_unset line for this fest branch |
| U4 | unsetlive clean | Linked log/UI audit shows fest branch no longer live on default |
| U5 | Default parity | Root BUILD_RECEIPT build_id / build_label match default_build_id_after + after screenshot |
| U6 | Receipt committed | post_fest_branch_unset_receipt_v1.json in repo; latch set honestly |
U1 waiver example: "notes": "Capstone archived offline—EXCEPTION-UNSET-001 approved with partner email 2026-11-03" with ticket ID in BUILD_RECEIPT.
U5 fail pattern: Trunk hotfix 2026-11-02-trunk02 shipped during fest support but receipt still lists 2026-11-01-trunk01.
verify_post_fest_branch_unset.sh
#!/usr/bin/env bash
set -euo pipefail
R="${1:-release-evidence/steam/post_fest_branch_unset_receipt_v1.json}"
LOG="$(jq -r '.unset_log_path' "$R")"
UNL="$(jq -r '.unsetlive_log_path' "$R")"
jq -e '.schema == "post_fest_branch_unset_receipt_v1"' "$R" >/dev/null
jq -e '.branch_unset_ok == true' "$R" >/dev/null
test -f "$LOG"
test -f "$UNL"
FEST="$(jq -r '.fest_branch_name' "$R")"
jq -e --arg f "$FEST" 'select(.fest_branch_name == $f) | .event == "branch_unset"' "$LOG" >/dev/null
CAP="$(jq -r '.capstone_pointer // empty' "$R")"
if [[ -n "$CAP" && -f "$CAP" ]]; then
jq -e '.fest_live_allowed == true' "$CAP" >/dev/null
fi
BR="$(jq -r '.default_build_id_after' "$R")"
jq -e --arg b "$BR" '.build_id == $b' release-evidence/05-operations/BUILD_RECEIPT.json >/dev/null
echo "post-fest branch unset verify: OK"
Wire in CI: run after unset step, before November store metadata merges.
PowerShell facilitator (Windows)
$Receipt = "release-evidence/steam/post_fest_branch_unset_receipt_v1.json"
jq -e '.branch_unset_ok == true' $Receipt
if ($LASTEXITCODE -ne 0) { throw "branch unset latch failed" }
$Log = jq -r '.unset_log_path' $Receipt
Get-Content $Log -Tail 1 | jq .
BUILD_RECEIPT columns to add
Extend root BUILD_RECEIPT:
{
"branch_unset_ok": true,
"post_fest_branch_unset_receipt_path": "release-evidence/steam/post_fest_branch_unset_receipt_v1.json",
"fest_branch_name": "october_fest_demo",
"default_build_id_after_unset": "2026-11-01-trunk01",
"post_fest_branch_unset_log_path": "release-evidence/steam/post_fest_branch_unset_log.jsonl"
}
Forward #10 Wednesday post-fest smoke and #12 first-week capstone consume these columns—file them before November sprint rituals assume they exist.
Beginner Quick Start — tonight only
- Create
release-evidence/steam/unset/+screenshots/folders. - Screenshot Steamworks Branches before unset.
- Run unsetlive or UI deactivate per Block 2.
- Promote trunk to default if needed; screenshot after.
- Append jsonl
branch_unsetrow with before/after IDs. - Fill receipt JSON; set gates honestly (U6 false until committed).
- Run verify script; fix RED gates.
- Update BUILD_RECEIPT; commit receipt + log + unset log + screenshots.
Success check: Teammate opens jsonl last line and names fest branch + default build_id without Steamworks login.
Working dev — unset ritual checklist
# After successful unset + default return
FEST_BRANCH="october_fest_demo"
DEFAULT_BID="2026-11-01-trunk01"
jq -nc \
--arg fb "$FEST_BRANCH" \
--arg db "$DEFAULT_BID" \
'{
schema: "post_fest_branch_unset_log_v1",
event: "branch_unset",
unset_started_utc: (now | strftime("%Y-%m-%dT%H:%M:%SZ")),
fest_branch_name: $fb,
default_build_id_after: $db
}' >> release-evidence/steam/post_fest_branch_unset_log.jsonl
Refresh receipt default_build_id_after, re-run U1–U6, bump branch_unset_ok only on GREEN.
Integration with November cluster + October cousins
| Cousin | Relationship |
|---|---|
| October capstone #12 | U1 reads fest_live_allowed |
| SETLIVE opinion #9 consumed | Upload-week default policy—not post-fest unset |
| Wrong default case study #4 | Recovery narrative; this URL is prevention after fest |
| 12 setlive checks | Upstream promotion; unset is downstream |
| November closeout cousin | Expects branch_unset_ok in child crosswalk |
| Forward #10 Wednesday smoke | W3 consumes unset receipt path |
| Forward #12 first-week capstone | Indexes branch_unset_ok in F4 cousin sweep |
Enterprise and partner diligence notes
- Access control: Only studio partner accounts with branch permission run unsetlive—log
operatorfield for audit. - Change management: Attach before/after screenshots + receipt to partner ticket; do not email screenshots without jsonl.
- Rollback: Keep fest RC build ID in jsonl; re-promote only with numbered exception (forward #9).
- Multi-SKU: If dual-depot dress applied, unset Steam branch independently from itch channel labels.
Proof table (sample GREEN row)
| Field | Value | Source |
|---|---|---|
fest_branch_name |
october_fest_demo | Steamworks Branches |
fest_branch_build_id_before |
2026-10-06-rc04 | capstone child receipt |
default_build_id_after |
2026-11-01-trunk01 | BUILD_RECEIPT |
default_steam_build_id_after |
18491002 | after screenshot |
fest_live_allowed_at_unset |
true | October capstone |
| U4 | PASS | unsetlive log clean |
branch_unset_ok |
true | receipt after U6 |
Scenarios A–G
A — Fest ended but capstone archived offline
U1 fails unless waiver—document EXCEPTION-UNSET-001 in notes and BUILD_RECEIPT before latch.
B — Default already trunk; fest branch idle
Still run U2–U6: prove fest branch documented and default parity—do not skip receipt because "it looks fine."
C — Trunk hotfix during fest week changed build_id
U5 fails until BUILD_RECEIPT updated to 2026-11-02-trunk02 before unset receipt latch.
D — Contractor unset with personal Steam
U4 fails with access errors—re-login studio partner; new unset log before retry.
E — Marketing edited capsule before unset
Store edits may reference fest overlay assets—pair forward #6 badge-strip pass after unset GREEN.
F — Team wants post-fest patch same evening
Unset receipt first; patch exception list (forward #9) is separate latch.
G — February fest cousin team reusing template
Swap fest_branch_name to february_fest_demo_2027; keep schema—do not fork receipt version without migration note.
Common mistakes
- Assuming fest end date auto-unsets branches in Steamworks.
- Setting
branch_unset_okwhen only screenshot exists—jsonl required for U3. - Promoting default to fest RC "one more time" without SETLIVE exception during upload week—different window, same pain.
- Editing jsonl lines instead of appending corrections.
- Skipping after screenshot—U5 audit fails under partner diligence.
- Running November store refresh before unset—forward #6 capsule work needs clean default truth.
Troubleshooting
"Default still shows fest build in Steamworks." Re-run promotion to trunk; append correction jsonl row; do not delete original line.
"verify script cannot find capstone." Set capstone_pointer empty and document U1 waiver—or restore capstone JSON from October capstone archive.
"jq parse error on jsonl." One JSON object per line—no trailing commas, no array wrapper.
"unsetlive succeeds but players still get fest build." CDN delay—document timestamp; re-check Builds tab after 30 minutes before U4 pass.
RED / YELLOW / GREEN routing
| Color | Condition | Action |
|---|---|---|
| RED | U4 fail or U5 mismatch | Block November store merges; fix before forward #10 |
| YELLOW | U1 waiver or trunk ID pending hotfix | Unset allowed with documented exception |
| GREEN | U1–U6 pass | Proceed to post-fest analytics + retention cluster rows |
Printable facilitator card
Store in release-evidence/steam/POST_FEST_UNSET_EVENING_CARD.md:
# Post-fest branch unset — one evening (U1–U6)
Date: __________ fest_branch: __________ operator: __________
[ ] Folders: unset/ + screenshots/ + jsonl template
[ ] Screenshot BEFORE unset (branches tab)
[ ] fest_branch_name + build_id_before documented (U2)
[ ] unsetlive or UI deactivate executed — log archived (U4)
[ ] default promoted to trunk build_id — screenshot AFTER
[ ] jsonl branch_unset line appended
[ ] post_fest_branch_unset_receipt_v1.json — gates U1–U6 honest
[ ] verify_post_fest_branch_unset.sh exit 0 (or documented waiver)
[ ] BUILD_RECEIPT branch_unset_ok + paths updated
[ ] October capstone fest_live_allowed checked (U1)
[ ] Forward #10 Wednesday smoke scheduled
Sign: __________ UTC: __________
Pin beside October capstone card in release-evidence/steam/.
Comparison pack — unset vs setlive vs recovery
| Workflow | When | Latch | This URL |
|---|---|---|---|
| 12 setlive checks | Before fest live | setlive_allowed |
Upstream |
| October capstone | Friday before fest | fest_live_allowed |
Upstream |
| This evening | First week after fest | branch_unset_ok |
Owns |
| Wrong default case study | After mistake | default_branch_recovery_ok |
Recovery cousin |
| Forward #10 smoke | Midweek after unset | post_fest_smoke_ok |
Downstream |
Security and ops notes
- Store steamcmd credentials in CI secrets—not in jsonl.
- Restrict
release-evidence/steam/unset/*.logif logs contain partner account names. - Partner zip exports: include receipt JSON + screenshots; redact login tokens from logs before share.
Key takeaways
fest_live_alloweddoes not unset the fest branch — file proof the first week after October live.- Gates U1–U6 run on
post_fest_branch_unset_receipt_v1.jsonwith before/after branch IDs. - Latch
branch_unset_ok: trueonly when default matches BUILD_RECEIPT trunkbuild_id. - Append-only jsonl beats Slack screenshots for partner diligence.
- U4 and U5 are hard blockers before November store edits and forward #10 smoke.
- Pair October capstone for upstream
fest_live_allowed. - Pair SETLIVE opinion for upload-week default policy—not a substitute for unset.
- SteamCMD tools bookmark partner login sanity before unsetlive.
- Depot label mismatch help when promoted build label disagrees with receipt after return.
- Forward #10 Wednesday post-fest smoke consumes this receipt path—schedule after GREEN unset.
- Pair post-fest analytics tools listicle #2 for T1
branch_unset_okcrosswalk beforepost_fest_analytics_ok.
FAQ
How is this different from the October upload capstone?
The October capstone latches fest_live_allowed before fest live with a child receipt crosswalk across upload week. This evening tutorial latches branch_unset_ok after fest ends when default must return to trunk.
Do I need steamcmd or can I use Steamworks UI?
Either works if U4 evidence exists—archive UI screenshot paths in jsonl notes or save UI export alongside unsetlive.log.
Can I skip unset if we never setlive'd fest branch?
If default never left trunk, still document U2–U6 with "notes": "fest branch inactive—default never moved" and honest gate flags—do not set branch_unset_ok true without proof.
What if post-fest hotfix already shipped to default?
Update BUILD_RECEIPT build_id first (U5), then file unset receipt—order matters for verify script.
Where does Wednesday post-fest smoke fit?
Run after this receipt GREEN—forward blog #10 W3 reads post_fest_branch_unset_receipt_path on BUILD_RECEIPT.
Related reads
- Friday October Upload Capstone BUILD_RECEIPT Row Review Before Fest Live
- Stop Running setlive on Default Branch Without a Numbered SETLIVE Exception List
- We Recovered Wrong Steam Default Branch After Localization Capstone GREEN
- 12 Pre-Flight Checks Before steamcmd setlive October Fest 2026
- Your First SteamPipe Depot Upload Log and BUILD_RECEIPT Before October Upload
- Friday November Closeout Capstone BUILD_RECEIPT Row Review Before Holiday Freeze
- 10 Free SteamCMD SteamGuard Depot Owner Validation Tools
- Steam Depot Promoted Playtest Build Label Mismatch Help
- GameMaker Steam setlive Branch Dry-Run Course Lesson
- 14 Free Post-October Fest Steam Analytics Refund and Demo Uninstall Tools — November cluster #2; T1 reads
branch_unset_okfrom this unset evening - Official docs: Steamworks Builds
Closing
The first week after October fest is when the fest RC branch must stop owning default—before marketing refreshes the store and before November sprint receipts assume trunk truth. Run the one-evening unset ritual, walk gates U1–U6, and let branch_unset_ok be a decision you made on purpose—not a branch state you hope Steamworks fixed when the calendar flipped. When forward Wednesday smoke reads one green latch backed by jsonl and screenshots, post-fest week stops being a branch guessing game and becomes a row you already filed.