Process & Workflow May 20, 2026

Steam Next Fest 2026 Demo Branch Naming and Library Label Parity - Checklist for Micro-Studios

2026 Next Fest checklist for Steam demo branch naming and library label parity—Steamworks strings vs store copy, BUILD_RECEIPT, and partner-safe governance for micro-studios.

By GamineAI Team

Steam Next Fest 2026 Demo Branch Naming and Library Label Parity - Checklist for Micro-Studios

Pixel-art hero for Steam Next Fest 2026 demo branch naming and library label parity checklist — micro-studios

Your About bullets say DEMO. Your library still installs "Full Game - October Beta". Playtest emails reference branch default while Steamworks shows fest_demo_oct2026. Partners ask which build_id is live and your producer forwards three different strings from Slack.

Branch naming is not cosmetic infrastructure—it is player-facing metadata that either reinforces or contradicts every FAQ row you proofed this week. This Process & Workflow checklist audits Steamworks branch strings, build descriptions, and library-visible labels against Next Fest demo scope and BUILD_RECEIPT. Pair with demo build identity depot parity for binary truth. Anchor ops to Steamworks builds documentation. No invented studios or metrics.

Time to read: ~33 minutes. Time to run first naming audit: ~90 minutes with cold install and receipt update.

Why this matters now (May–October 2026)

  1. Library text is pre-FAQ — Players see install title and build description before opening store FAQ.
  2. Branch drift breaks receiptsvalidate-packet expects one canonical branch string per live demo.
  3. Fest six-week lock — Wrong names frozen in October are expensive to fix under partner eyes.
  4. Mislabeling cultureVertical slice opinion fails if library still says "Complete Experience."
  5. May creates branches wrongDepot playbook documents ids; this checklist documents strings humans read.

Direct answer: Build branch-label-proof.md mapping every player-visible name to demo scope, align Steamworks branch + build description + receipt fields, cold-install from a non-dev account, and diff weekly beside Wednesday metadata ritual.

Who this is for

Audience Outcome
Engineer One canonical branch string in CI and receipts
Producer Answer "which build is live?" in one sentence
Marketing Stop emails that contradict library labels
Solo dev Smaller table—still mandatory before fest

Prerequisites

Prerequisite Why
Demo depot id documented From depot ninety-minute pass
BUILD_RECEIPT with build_id Anchors promotion
Non-developer Steam account Sees what players see
release-evidence/02-builds/ folder Stores proof exports
Store copy surfaces green Metadata sprint or equivalent

Branch label proof table (core artifact)

release-evidence/02-builds/branch-label-proof.md:

Label surface String (exact) Player expectation Demo scope match Pass/Fail Action
Steamworks branch name fest_demo_2026_10 Fest demo only Matches fest zip Pass Keep
Build description (library) "Next Fest Demo - Oct 2026" Limited demo Matches FAQ #1 Pass Keep
Playtest email subject "Password for beta" Full game beta Wrong Fail Rename email template
BUILD_RECEIPT branch field fest_demo_2026_10 Same as live Matches promotion Pass Keep
Internal Slack shortcut "main" Ambiguous Fail Ban shorthand

Pass rule: A player installing from the public demo path sees labels containing Demo or Next Fest (your chosen convention) and no phrase implying full game, EA launch, or unscoped "Beta" without a DEMO prefix.

Naming conventions (pick one set and freeze)

Element Recommended pattern Ban
Branch key fest_demo_YYYY_MM or nextfest_demo_2026_10 default, test, latest
Build description Next Fest Demo - Oct 2026 (build 4521) Full Game Beta
Playtest branch playtest_<feature>_demo Reusing main branch name
CI artifact Demo_Win64_fest_4521.zip GameBuild.zip
Receipt branch Same characters as Steamworks Aliases in Slack only

Document the convention in docs/steam-branch-naming.md and link from BUILD_RECEIPT README.

Surfaces to audit (complete list)

Steamworks builds page

  • Branch name string
  • Build description shown in partner UI
  • Which branch is default for demo depot
  • Last promotion timestamp vs receipt

Player library (cold install)

  • Game title line (app name)
  • Subtitle or demo badge if shown
  • Download size line (cross-check spec honesty)
  • Play button label after install

Internal comms

  • Playtest password emails
  • Discord #builds posts
  • Notion "current build" pages
  • Partner ZIP README first bullet

Store-adjacent copy

Ninety-minute first audit (step-by-step)

Step Minutes Output
1. Screenshot Steamworks branches 10 PNG in evidence folder
2. Copy strings into proof table 15 Skeleton rows
3. Promote fest demo to public branch 10 Log in receipt
4. Cold install on floor account 25 Library screenshots
5. Compare library text to FAQ row 1 15 Pass/fail marks
6. Fix failures + re-promote 15 Updated screenshots
7. Engineer sign-off 0 signoff.txt

If step 4 fails install, stop renaming—fix depot parity first.

BUILD_RECEIPT fields to align

"branch_live": "fest_demo_2026_10",
"depot_id_demo": 1234567,
"library_label_snapshot": "Next Fest Demo - Oct 2026",
"branch_naming_doc": "docs/steam-branch-naming.md",
"last_cold_install_account": "floor-laptop-02",
"last_promotion_utc": "2026-05-20T14:00:00Z"

Receipt branch_live must match Steamworks promotion log character-for-character.

CI and promotion guards

Add to validate-packet optional checks:

  • Promotion script refuses branch names in ban list (default, test, main without prefix)
  • Post-promotion hook writes branch string to receipt automatically
  • Slack bot posts receipt row—not informal "build 45"

Prevents "quick promote to default" during crunch.

Pairing with depot and Input parity

Checklist Focus
Depot branch rules playbook Depot ids, Steam Input VDF
Demo build identity pass Binary hash, depot orphan
This checklist Human-readable strings
Cold-hash challenge Hash after rename promotions

Run naming audit after depot installs green, before store metadata sprint Day 7.

Wednesday ritual extension

Add row to Wednesday diff log:

Branch labels — screenshot library + compare to branch-label-proof.md (5 min).

If promotion happened Tuesday night, Wednesday catches label drift before weekend social posts.

High-risk mislabel patterns

Pattern Why it fails
default branch for fest demo Engineers promote wrong build silently
"Beta" without DEMO prefix Players expect full game feature set
"Vertical Slice" in library Opinion piece bar rarely met
Same branch name as main game Receipt ambiguity
Date-only branch build_may20 No scope signal
Internal codenames in public description Leaks unreleased modes

Playtest and reviewer keys

Press and curator installs inherit library labels. If reviewers see "Complete Beta" while store FAQ says demo-only, coverage quotes the wrong scope—worse than a tag mismatch.

Control Action
Separate playtest branch name press_review_oct2026 vs fest_demo_2026_10
Email template Paste exact library label + build_id
Reviewer README Link branch-label-proof.md

Partner diligence appendix

Branch naming audit <date> — live branch fest_demo_2026_10, library label matches FAQ demo boundary, cold-install screenshot attached.

Fits publisher diligence packets and partner ZIP map.

Red-team questions (tabletop)

  1. "Which branch do I opt into for the fest demo?"
  2. "Why does my library say Beta but FAQ says Demo?"
  3. "Is this the same build as the trailer upload yesterday?"
  4. "Playtest email said default—is that safe?"
  5. "Receipt says build 4521—where do I see that in Steam?"

Any confusion → fail row → rename before October lock.

When to re-audit naming only

Trigger Action
New branch created Proof table row before first promotion
Demo scope cut Update build description + FAQ
Merge from main to demo Re-run cold install
Yellow on mismatch Naming + store-demo recovery
Post-tag drift sprint Verify labels still say demo

Common mistakes (eleven)

  1. Treating branch names as engineer-only shorthand.
  2. Letting "default" survive from prototype phase.
  3. Promoting without updating build description.
  4. Slack aliases that disagree with Steamworks.
  5. Skipping non-dev cold install.
  6. Library says Beta; store says Demo.
  7. No receipt branch_live field.
  8. Reusing main-game branch for fest depot.
  9. October rename without re-cold-install.
  10. Playtest emails not templated.
  11. Ignoring two-storefront rule itch naming drift.

Worked example (anonymous)

Before: branch default, library "Open Beta", FAQ "DEMO: Act 1 only."
Tuesday: Renamed branch fest_demo_2026_10, description "Next Fest Demo - Oct 2026."
Wednesday: Cold install on laptop account—library matches FAQ.
Thursday: Receipt updated; validate-packet branch guard added.
Friday: Playtest email template fixed.

Engineer ~2h; producer ~1h; zero weekend recovery.

Integration with metadata cluster

Surface Naming link
Short description Verbs match library DEMO prefix
Tags No "Early Access" tag if library says Demo
Trailer VO Says "demo" if library does
FAQ Row 1 quotes exact library label
Events Headline includes fest name consistent with branch

Triangle diff from metadata sprint adds branch label as fourth vertex for Day 7.

Post-fest maintenance

  1. Wednesday branch screenshot row.
  2. Friday Block 5 promotion log.
  3. Evidence cycles for non-critical copy only—branch renames are never "small."
  4. Asia–EU handoff must not promote unnamed branches overnight.

Glossary

Term Meaning here
Branch key Steamworks branch identifier string
Build description Partner-visible description tied to promotion
Library label Text player sees in Steam client library
Cold install Install using non-developer account
Promotion Publishing build to branch players receive

Evidence folder layout

release-evidence/02-builds/branch-naming/
  README.md
  branch-label-proof.md
  steamworks-branches-YYYY-MM-DD.png
  library-cold-install-YYYY-MM-DD.png
  promotion-log.txt
  engineer-signoff.txt
  producer-signoff.txt

Link this folder from release-evidence taxonomy under builds—not store marketing—so engineers own updates.

Sample proof rows (copy structure)

Row — Playtest email:

Field Value
Label surface Playtest invite subject
String "Password for Project X Open Beta"
Player expectation Full beta access
Demo scope match Fest demo is Act 1 only
Pass/Fail Fail
Action Template → "Next Fest Demo access - branch fest_demo_2026_10"

Row — CI artifact:

Field Value
Label surface Uploaded zip name
String GameBuild_latest.zip
Player expectation Unknown
Demo scope match Receipt cannot map
Pass/Fail Fail
Action Rename to Demo_Win64_fest_<build_id>.zip

Team RACI

Task Engineer Producer Marketing
Create branch keys R C I
Set build descriptions C R C
Cold install proof R I I
Email templates I A R
Receipt update R A I
Partner README bullet C R I

R = responsible, A = approves, C = consulted, I = informed.

Comparison to reactive recovery

Mode Trigger Typical cost
This checklist May prevention ~90 minutes
Store-demo mismatch 48h FAQ/copy vs build Weekend
Hash mismatch 72h Wrong binary promoted Engineering drill

Library labels that say "Beta" while the fest zip is a demo-only slice are a common opener for the middle column—players quote the library in refund tickets.

Steam Input and branch coupling

When Deck tools fail on demo depots, engineers often clone Input configs from main to demo. If branch names differ but VDF paths still reference main_game folders, you get working controls with wrong receipt labels. Naming audit includes verifying controller_config/ folder names appear in proof table as secondary rows—not separate from branch discipline.

Ads and fest spend coupling

Fest marketing cap assumes installs match promised scope. Sending paid traffic while library still says "Open Beta" burns CAC on players who expect features your demo branch does not ship—pause ads until library screenshot matches FAQ row 1.

UTM and landing copy

UTM experiments that reference "play the beta" in landing copy must match library labels for that week. Changing branch description mid-experiment without pausing UTMs confounds retention data and creates false negatives in your fest diagnostics.

Mock audit tabletop hook

Seven-dimension mock audit dimension on builds should include:

  • Open branch-label-proof.md
  • Ask producer to state live branch without opening Steamworks
  • Compare answer to receipt field

Fail the tabletop if producer and engineer give different strings—fix naming before upload ZIP assembly.

Unity and Godot pipeline notes

Engine Naming risk
Unity Build output folders named Windows confuse CI zip names
Godot Export presets labeled "Release" promoted to demo branch
Shared Automated upload scripts hard-code default branch

Add a pre-upload lint step in your demo depot CI that reads BRANCH_NAME env var and rejects empty or banned values.

October freeze rules

After September sign-off:

  • Frozen: branch keys, demo depot id, library naming convention doc
  • Allowed: typo fixes in build description if scope unchanged
  • Forbidden: renaming default to fest branch during fest week—use hotfix promotion on existing fest key only

Document exceptions in sprint-exception-log.md with producer signature.

Beginner path (never used Steamworks branches)

  1. Read first playtest branch evening.
  2. Create fest_demo_2026_10 branch—do not reuse default.
  3. Set build description before first promotion.
  4. Promote once; cold install.
  5. Fill proof table; update receipt.
  6. Schedule Wednesday screenshot habit.

Expect ~3 hours first time; ~20 minutes per promotion afterward.

Publisher FAQ you can answer with this folder

Partner question Evidence pointer
Which build is live for fest? BUILD_RECEIPT.build_id + branch row
How do players know it is a demo? Library screenshot + FAQ row 1
Did you test non-dev install? engineer-signoff.txt
What changed last promotion? promotion-log.txt diff

Cross-links to store visuals

Branch naming does not replace capsule 32px gates or screenshot beat sheet—but capsule clicks that land on a library label saying "Full Game" convert worse than honest demo labeling. Visual and string parity together define fest-first discipline from capsule opinion.

Operating review cadence

Add a Branch labels row to four Friday five-block operating review Block 2 (builds):

Week Question Evidence
1 Did we promote this week? promotion-log.txt
2 Library screenshot current? Dated PNG
3 Receipt branch_live matches? Diff green
4 Any banned branch name in CI? validate-packet log

Four weeks of green rows beat one heroic pre-fest rename.

Intake compression talking points

Under 72-hour intake windows, partners ask for one live build identity. Opening branch-label-proof.md plus receipt answers the question in under two minutes—without a call where three teammates give three branch names.

Localization and regional builds

If you ship language-specific demo depots, branch keys should encode locale (fest_demo_2026_10_en, fest_demo_2026_10_ja) while build descriptions still include DEMO boundary text in each language per localization QA tools. Never translate "Open Beta" literally into a phrase that implies full-game access in that market.

Crash logs and support macros

Support macros that say "install latest beta from branch default" train players to misidentify scope. Update macros the same day you rename branches—link crash-log challenge artifacts so tickets include build_id and branch string players actually used.

Schedule the first branch-label-proof.md review the same week you create the fest demo branch in Steamworks—naming debt compounds every promotion that ships under default or an ambiguous beta label.

Key takeaways

  • Branch names and library labels are player-facing metadata, not internal shorthand.
  • Build branch-label-proof.md for every visible string.
  • Ban default, ambiguous beta, and vertical-slice vocabulary unless earned.
  • Align BUILD_RECEIPT.branch_live with Steamworks character-for-character.
  • Cold-install proof on floor hardware before October.
  • Extend Wednesday ritual with library screenshots.
  • Pair with depot parity and metadata sprint Day 7.
  • Fix playtest emails and partner README bullets together.
  • Cheaper than 48-hour store-demo mismatch recovery.
  • May renames beat October emergency rebrands.
  • Demo patch notes must repeat branch string and build_id on every promotion.

FAQ

Can we hide branch names from players?
No—library and install UI expose descriptions you set.

Does app title need "Demo" in the name?
Not always—but build description and FAQ must agree on scope.

What about separate demo app id?
Proof table adds a row per app id; same discipline.

How tie to playtest branch tutorial?
Run first playtest branch evening before fest branch creation.

October policy?
Freeze branch keys; description typos only unless scope changes.

Does this replace depot audit?
No—run depot pass first, naming second.

What about 5-day metadata freeze?
Assign branch naming to the builds day in that challenge—do not skip because it is "technical."

Conclusion

Players never see your Steamworks spreadsheet—they see branch labels in the library and the words you put in build descriptions. When those strings promise a beta or a complete experience, every honest FAQ row and About bullet loses credibility before hour one starts.

Rename branches in May while schedules still bend. Screenshot the library on a floor account. Put the same string in BUILD_RECEIPT so the next partner question has one answer, not three Slack guesses.

Pick one naming convention today. Ban default tomorrow. Your fest demo deserves a label that tells the truth before the install bar finishes.

When demo patch notes ship after a promotion, paste the same branch string and build_id in the first line—players who read patch notes and library labels should see one identity, not two stories about what they installed.