Process & Workflow Jul 17, 2026

Friday October Upload Capstone BUILD_RECEIPT Row Review - Ten Minutes Before Fest Live - 2026

2026 Process—Friday October upload capstone BUILD_RECEIPT row review ten minutes before Next Fest live; C1-C10 gates, october_upload_capstone_receipt_v1.json, child receipt crosswalk, fest_live_allowed latch.

By GamineAI Team

Friday October Upload Capstone BUILD_RECEIPT Row Review - Ten Minutes Before Fest Live - 2026

Pixel-art hero for Friday October upload capstone BUILD_RECEIPT row review before fest live 2026

Friday 5:10 p.m., the week before October Next Fest goes live. The localization capstone latched october_upload_window_allowed: true back in September. The depot upload log is filed. The store publish checklist is green. The Wednesday depot smoke said store_publish_allowed. Captions passed the Whisper trailer caption lint. Everyone assumes Monday is safe. Nobody has looked at all eleven receipts on the same screen at the same time.

October 2026 upload week produces a dozen receipts across a dozen folders. Each one was true on the day it was filed. The danger on the last Friday before fest live is not a missing receipt—it is receipt sprawl: store_publish_allowed from Wednesday, a setlive_target_label from Thursday, a caption file hash from a re-export nobody re-checked, and a depot build_id that quietly changed during a Friday hotfix. Each row is individually green. Together they may not describe the same build players will install Monday.

This Process & Workflow article defines a ten-minute Friday upload capstone: pull every October upload cluster receipt into one BUILD_RECEIPT row review, diff the shared identity columns, clear C1-C10, file october_upload_capstone_receipt_v1.json with a child receipt crosswalk, and set fest_live_allowed: true only when the whole story agrees. This is the last human gate before fest goes live.

Non-repetition note: Localization freeze capstone owns the upstream october_upload_window_allowed latch (strings, necessary not sufficient). Wednesday depot smoke owns the mid-week store_publish_allowed latch (installed smoke). Weekly depot jq owns Monday identity. This URL owns the final Friday capstone: a child receipt crosswalk across the whole cluster plus the fest_live_allowed decision.

Pair SteamCMD validation tools, depot label mismatch help, and GameMaker setlive dry-run lesson 270. This capstone closes the October upload cluster #1-#12.

Why this matters now (October 2026 fest live)

  1. Green receipts filed on different days can disagree. A Wednesday smoke and a Friday hotfix can both be honest and still describe different builds.
  2. Fest live is a one-way door. Once players install Monday, a wrong branch, caption, or store claim is public, not internal.
  3. Partners read the root receipt, not folders. A diligence reviewer opens BUILD_RECEIPT, not eleven separate evidence directories.
  4. Upstream latches are necessary, not sufficient. october_upload_window_allowed proves strings froze; it says nothing about Friday's depot or captions.
  5. Ten minutes now beats a live-week pager. The capstone is cheap compared to a Monday emergency setlive rollback.

Direct answer: On the last Friday before October Next Fest live, run C1-C10 across every cluster receipt, write october_upload_capstone_receipt_v1.json with a child_receipts[] crosswalk, and latch BUILD_RECEIPT fest_live_allowed: true only when the shared build_id, depot_manifest_sha256, setlive_target_label, and store/caption rows all agree. If any child receipt is stale or contradicts the root, fest live is NO.

Who this ritual is for

Audience Outcome
Solo founder A printable ten-minute Friday go/no-go card
Producer One receipt to attach to the partner zip and stand-up
Release owner A fest_live_allowed latch in the same commit as the crosswalk
Working dev A machine-readable child receipt index CI can assert before Monday

Time: 10 minutes on the last Friday before fest live; optional 5-minute mid-week dry run.

Prerequisites: all cluster child receipts filed (#1-#11), current BUILD_RECEIPT.json, installed client on the intended branch, and the SETLIVE exception list path.

Ritual map - October upload cluster through the Friday latch

Cluster row Child receipt Latch it owns Capstone gate
#1 Depot upload steampipe_depot_upload_receipt_v1 steampipe_upload_ok C3 identity
#2 Store publish checklist october_store_publish_checklist_receipt_v1 store_publish_ok C6 store
#3 Upload dress rehearsal october_upload_dress_rehearsal_receipt_v1 october_upload_dress_rehearsal_ok C2 prereq
#5 Metadata freeze october_store_metadata_freeze_receipt_v1 october_store_metadata_freeze_ok C6 store
#6 Trailer thumbnail october_trailer_thumbnail_receipt_v1 october_trailer_thumbnail_ok C7 video
#7 Weekly depot jq october_upload_weekly_log.jsonl october_upload_weekly_ok C4 weekly annex
#8 Overtime cap october_upload_overtime_receipt_v1 october_upload_overtime_ok C9 spend
#9 SETLIVE exception setlive_exception_list_receipt_v1 setlive_exception_list_ok C5 branch
#10 Wednesday smoke october_depot_smoke_row_diff_receipt_v1 store_publish_allowed C6 store
#11 Caption lint trailer_caption_lint_receipt_v1 trailer_caption_lint_ok C7 video
Friday (this) october_upload_capstone_receipt_v1 fest_live_allowed C1-C10

The default branch recovery case study #4 is the failure mode this capstone exists to prevent: an upstream latch was green, but the Monday setlive targeted the wrong branch. C5 is where you catch it.

Capstone row catalog (what Friday diffs)

Store once in release-evidence/steam/october-upload-capstone-row-catalog.md:

Row key Source Must agree? Typical stale pattern
build_id #1, #7, #10 Yes Friday hotfix without EXCEPTION-DEPOT
depot_manifest_sha256 #1, #10 Yes Rebuilt after Wednesday smoke
steam_build_id #1 Yes Still pending / wrong ID
branch_intent #9, #10 Yes Silent flip toward default
setlive_target_label #9 Yes Label diverges from RC
setlive_exception_list_ok #9 If default true without SETLIVE-00N
store_publish_allowed #10 Yes Wednesday value reused after re-export
store_publish_ok #2 Yes Checklist incomplete
october_store_metadata_freeze_ok #5 Yes Copy edited after freeze
trailer_caption_lint_ok #11 If video shipped Caption checked on stale export
october_trailer_thumbnail_ok #6 If video shipped Thumbnail swapped late
october_upload_weekly_ok #7 Yes Missing current ISO week line
october_upload_overtime_ok #8 If hours spent Cap exceeded
october_upload_window_allowed localization #11 Yes Stale from September
fest_live_allowed this Output Set true without C4-C8
human_signoff.signed_at_utc this Yes Unsigned go

Never delete a row mid-cluster without a receipt_version bump in the diff notes.

Gates C1-C10 (Friday fest-live blockers)

Gate Name Pass criteria Fail action
C1 Files exist Every child receipt path in child_receipts[] resolves on disk Locate or refile missing child
C2 Prereqs green Dress rehearsal + upstream october_upload_window_allowed true Return to owner row
C3 Depot identity build_id, depot_manifest_sha256, steam_build_id match installed footer Re-smoke or block
C4 Weekly annex october_upload_weekly_log.jsonl has current ISO week line Append or written waiver
C5 Branch honesty branch_intent + setlive_target_label match RC; default requires SETLIVE-00N Block setlive
C6 Store readiness store_publish_ok, store_publish_allowed, metadata freeze all true Finish checklist
C7 Video truth Caption + thumbnail latches true if a trailer shipped this week Re-run lint/thumbnail
C8 Cousin latches Every claimed surface (dual-SKU, soft-launch, age packet) is indexed Add child or drop claim
C9 Spend sane october_upload_overtime_ok true or documented waiver Freeze overtime
C10 Capstone latch october_upload_capstone_receipt_v1.json filed with signoff Block fest live

C3-C6 are hard fest-live blockers when RED. C4 YELLOW allows go only with a written waiver referencing EXCEPTION-DEPOT or a freeze note.

Beginner path - the ten-minute Friday card

If you have never run a capstone, print this and follow it top to bottom:

FRIDAY OCTOBER UPLOAD CAPSTONE - BEFORE FEST LIVE
[ ] C1 every child receipt path opens
[ ] C2 dress rehearsal + october_upload_window_allowed true
[ ] C3 build_id / manifest / steam_build_id match installed footer
[ ] C4 october_upload_weekly_log.jsonl has this ISO week
[ ] C5 branch_intent / setlive_target (default => SETLIVE-00N)
[ ] C6 store_publish_ok + store_publish_allowed + metadata freeze
[ ] C7 caption + thumbnail latches (if a trailer shipped)
[ ] C8 dual-SKU / soft-launch / age packet indexed if claimed
[ ] C9 october_upload_overtime_ok or waiver
[ ] C10 october_upload_capstone_receipt_v1.json + signoff
DECISION: fest_live_allowed = YES / NO

Beginner rule: If you cannot open a child receipt file, that row is RED. A latch you cannot point to is not a latch.

Success check

A teammate who did not run upload week should be able to open october_upload_capstone_receipt_v1.json, follow each child_receipts[] path, and see the same build_id everywhere. If the paths lead to different builds, you found the bug before Monday did.

The receipt schema

Save this as release-evidence/steam/october-upload-capstone/october_upload_capstone_receipt_v1.json:

{
  "receipt_version": "october_upload_capstone_receipt_v1",
  "fest": "october-2026-next-fest",
  "reviewed_on_utc": "2026-10-09T16:10:00Z",
  "root_build_id": "2026-10-08-rc-04",
  "root_depot_manifest_sha256": "REPLACE_WITH_SHA256",
  "steam_build_id": "18542991",
  "branch_intent": "fest-demo-rc",
  "setlive_target_label": "RC-2026-10",
  "child_receipts": [
    {
      "cluster_row": 1,
      "path": "release-evidence/steam/depot-upload/steampipe_depot_upload_receipt_v1.json",
      "latch": "steampipe_upload_ok",
      "build_id": "2026-10-08-rc-04",
      "status": "pass"
    },
    {
      "cluster_row": 10,
      "path": "release-evidence/steam/trailer-caption-lint/trailer_caption_lint_receipt_v1.json",
      "latch": "trailer_caption_lint_ok",
      "build_id": "2026-10-08-rc-04",
      "status": "pass"
    }
  ],
  "gates": {
    "C1_files_exist": "pass",
    "C2_prereqs": "pass",
    "C3_depot_identity": "pass",
    "C4_weekly_annex": "pass",
    "C5_branch_honesty": "pass",
    "C6_store_readiness": "pass",
    "C7_video_truth": "pass",
    "C8_cousin_latches": "pass",
    "C9_spend": "pass",
    "C10_capstone_latch": "pass"
  },
  "waivers": [],
  "human_signoff": {
    "role": "release_owner",
    "signed_at_utc": "2026-10-09T16:18:00Z"
  },
  "fest_live_allowed": true
}

List only the child receipts you actually filed. Do not invent a row to make the crosswalk look complete. A missing surface should either get a real child receipt or be dropped from the store claim.

Verification script sketch

The crosswalk is worth a small fail-closed script so CI can block a Monday job:

#!/usr/bin/env bash
set -euo pipefail

RECEIPT="release-evidence/steam/october-upload-capstone/october_upload_capstone_receipt_v1.json"
test -f "$RECEIPT"

ROOT_BUILD=$(jq -r '.root_build_id' "$RECEIPT")

# Every listed child receipt must exist and match the root build_id.
jq -c '.child_receipts[]' "$RECEIPT" | while read -r row; do
  path=$(echo "$row" | jq -r '.path')
  build=$(echo "$row" | jq -r '.build_id')
  if [ ! -f "$path" ]; then
    echo "Missing child receipt: $path" >&2
    exit 3
  fi
  if [ "$build" != "$ROOT_BUILD" ]; then
    echo "build_id mismatch in $path ($build != $ROOT_BUILD)" >&2
    exit 4
  fi
done

jq -e '.gates.C3_depot_identity == "pass"' "$RECEIPT" >/dev/null
jq -e '.gates.C5_branch_honesty == "pass"' "$RECEIPT" >/dev/null
jq -e '.gates.C6_store_readiness == "pass"' "$RECEIPT" >/dev/null
jq -e '.fest_live_allowed == true' "$RECEIPT" >/dev/null
echo "october_upload_capstone_ok"

This does not replace human judgment on C7 video truth or C8 cousin claims. It only guarantees the mechanical part: every child receipt exists and points at the same build.

BUILD_RECEIPT handoff

Once C1-C10 are GREEN, write the latch into the root BUILD_RECEIPT:

{
  "october_next_fest": {
    "october_upload_capstone_receipt": "release-evidence/steam/october-upload-capstone/october_upload_capstone_receipt_v1.json",
    "fest_live_allowed": true,
    "root_build_id": "2026-10-08-rc-04",
    "reviewed_at_utc": "2026-10-09T16:18:00Z"
  }
}

Monday's setlive or store-live job should read fest_live_allowed before it runs. If the boolean is false or missing, the job stops. This is the same pattern the SETLIVE exception opinion argues for at the branch level, applied one layer up at the whole-fest level.

Common mistakes

Mistake 1 - Trusting Wednesday's latch on Friday

store_publish_allowed was true Wednesday. If anyone re-exported the build, re-published the store, or fixed a caption after that, the value is stale. C3 and C6 re-check identity on Friday.

Mistake 2 - Setting fest_live_allowed manually

The latch is an output, not an input. If someone sets it true to "unblock the pipeline" without running C1-C10, the capstone becomes theater. Keep the boolean downstream of the gates.

Mistake 3 - Skipping the weekly annex

C4 fails quietly when the weekly depot jq jsonl stops a week before fest live. A missing line is not an empty line; it means nobody checked identity that week.

Mistake 4 - Indexing a claim with no child receipt

If the store page claims dual-SKU, soft-launch, or an age rating, C8 requires a real child receipt for it. A claim with no receipt is a diligence gap, not a green row.

Mistake 5 - Letting a Friday hotfix bypass the capstone

The most dangerous build is the one uploaded at 4:50 p.m. Friday "to be safe." If build_id changed after the last child receipt, the capstone must re-run, not rubber-stamp.

The optional mid-week dry run

Ten minutes on Friday is easier when you have already looked once mid-week. A five-minute Wednesday or Thursday dry run is not the capstone, but it surfaces the slow problems early:

  1. Do all child receipt paths already resolve? Missing files are cheaper to refile on Wednesday than at 5 p.m. Friday.
  2. Is the weekly jsonl current? If C4's annex is a week behind, you have time to append it before the go/no-go.
  3. Does the store page still match the depot? Metadata edits made mid-week are the most common source of a stale store_publish_allowed.

Treat the dry run as a checklist rehearsal, not a decision. Do not set fest_live_allowed on Wednesday. The point is to make Friday boring: by the time you sign, the only thing left to confirm is that nothing changed after the last child receipt.

A useful habit is to keep the dry-run notes in the same folder as the capstone, named october-upload-capstone-dryrun-notes.md. It gives you a paper trail if a Friday hotfix forces a re-run and someone asks what changed between the dry run and the final sign-off.

A worked failure scenario

Here is the exact situation the capstone is built to catch.

Wednesday, the depot smoke passed on build_id 2026-10-08-rc-03. store_publish_allowed went true. Thursday, marketing published the store page and the trailer with correct captions. Everyone relaxed.

Friday 4:50 p.m., an engineer fixes a crash and uploads 2026-10-08-rc-04. It is a good fix. But now:

  • The depot upload receipt references rc-04.
  • The Wednesday smoke receipt still references rc-03.
  • The caption lint was run against the rc-03 trailer, which is fine because the trailer did not change—but nobody has confirmed that.
  • The SETLIVE target label still says RC-2026-10, which is correct, but the branch now holds rc-04.

Every individual receipt is honest. Without the capstone, the team ships Monday assuming Wednesday's green still holds. With the capstone, C3 immediately flags that the installed footer says rc-04 while the smoke child receipt says rc-03. The reviewer re-smokes rc-04, confirms the trailer and captions are unaffected, updates the child receipt build ids, re-signs, and latches fest_live_allowed. The crash fix ships and the receipts agree.

The cost of catching this on Friday is one re-smoke. The cost of catching it Monday is a live-week rollback and a public trust hit. That asymmetry is the entire argument for the ritual.

Producer and enterprise diligence notes

The capstone is the single artifact that makes upload week auditable:

Concern What the capstone proves
Release integrity Every surface points at one build_id and manifest
Branch safety setlive_target_label matches RC, default requires an exception list
Store truth Publish, metadata, caption, and thumbnail latches agree
Cost control Overtime cap was respected or waived with an owner
Audit trail One receipt links to every child receipt and a human signoff

For partner packets, attach october_upload_capstone_receipt_v1.json and let the reviewer walk the child_receipts[] paths. A capstone that resolves to eleven consistent child receipts is far stronger diligence than eleven screenshots.

How this fits Steam's live-week reality

Steam Next Fest schedules and Steamworks behavior change between events, so confirm current rules before you rely on them. Start with the official Steamworks Store Presence documentation and the Steam Next Fest guidance inside Steamworks. Use this capstone as your internal go/no-go, not as a substitute for platform requirements.

The stable principle: the build you smoke-test, the build your store page describes, the build your captions match, and the build setlive promotes must all be the same build. The capstone is where you prove that on the last Friday before players can see it.

Key takeaways

  1. October upload week produces many green receipts on different days; the Friday capstone makes them meet in one row.
  2. Gates C1-C10 run on october_upload_capstone_receipt_v1.json with a child_receipts[] crosswalk.
  3. Latch fest_live_allowed: true only when depot, store, caption, and setlive rows share one build_id.
  4. This capstone is distinct from the localization capstone (october_upload_window_allowed, upstream) and Wednesday smoke (store_publish_allowed, mid-week).
  5. C3, C5, and C6 are hard fest-live blockers when RED.
  6. A Friday hotfix that changes build_id forces a re-run, not a rubber stamp.
  7. fest_live_allowed is an output of the gates, never a manual override.
  8. Pair SteamCMD tools and depot label mismatch help for release proof and recovery.
  9. Attach the capstone receipt to partner zips instead of loose screenshots.
  10. This capstone closes the October upload cluster #1-#12.
  11. After fest ends, pair post-fest branch unset evening for branch_unset_ok before November store edits (November cluster #1).

FAQ

How is this different from the localization Friday capstone?

The localization capstone latches october_upload_window_allowed, which proves strings froze. That is an input to this capstone, not a substitute. This one gates fest_live_allowed across depot, store, caption, and branch rows.

How is it different from the Wednesday depot smoke?

Wednesday smoke proves the mid-week installed build and latches store_publish_allowed. The Friday capstone runs after all mid-week work is done and checks that nothing drifted before fest goes live.

What if a child receipt is missing?

C1 fails. Either the receipt was never filed, in which case run that cluster row, or the path is wrong, in which case fix the crosswalk. Do not mark C1 green with a missing file.

Can fest_live_allowed be true with an open waiver?

Yes, for YELLOW gates like C4 or C9 if the waiver is documented with an owner and reason in waivers[]. No, for C3, C5, or C6 identity failures. Those must be fixed before go.

Do I need the capstone if I did not ship a trailer this week?

Yes. Mark C7 as not applicable with a note, but still run C3-C6 and C10. The capstone is about build and store identity, not only video.

What triggers a re-run before Monday?

Any change to build_id, depot_manifest_sha256, setlive_target_label, store metadata, or the caption/thumbnail files after the capstone was signed. Re-run C1-C10 and re-sign.

Related reads

Closing

The last Friday before fest live is when every receipt from upload week should stand in one line and tell the same story. Run the ten-minute capstone, walk the child receipts, and let fest_live_allowed be a decision you made on purpose—not a boolean left over from Wednesday. When Monday's setlive job reads one green latch backed by eleven consistent receipts, fest live stops being a leap of faith and becomes a row review you already passed.