Lesson 276: November Closeout Truth Capstone Receipt on BUILD_RECEIPT (2026)
Direct answer: November 2026 fest close-out latches when november_closeout_capstone_v1.json links ten child receipts from Lessons 266–275, proves one build_label across Whisper tags, CSV ingest, CI cancel, VDF LF, setlive dry-run, Blender mirror, SteamPipe wall-clock, loudness spot, Unreal OTLP, and FMOD menu snapshot, and points to October ops capstone (265), Q4 playtest (253), and H2 hardening (223) so holiday freeze is not “266–275 GREEN, prior arcs unknown.”

Why this matters now (November fest close-out before holiday freeze)
November 2026 producers filed ten triage/ops receipts—Whisper honesty, Tuesday CSV, Addressables cancel boundaries, Godot VDF LF, GameMaker setlive dry-run, Blender diligence mirror, Ren'Py wall-clock, Audacity loudness, Unreal OTLP, FMOD menu spots—but partners still ask: “Is fest-demo-2026-11-rc4 safe to freeze for December defer?” Thursday BUILD_RECEIPT review and Friday November closeout row review need one November Closeout Capstone section—not ten Discord threads.
This lesson closes arc 266–276 (same wiring pattern as Lesson 265 October ops). Run jq November closeout crosswalk verify_november_closeout.sh before flipping november_closeout_ok. Pair December defer playbook H5 on the same expected_build_label.
Beginner path (75-minute capstone audit)
| Step | Action | Success check |
|---|---|---|
| 1 | Collect ten receipt paths from Lessons 266–275 | Files exist |
| 2 | Verify same build_label / expected_build_label |
Crosswalk GREEN |
| 3 | Confirm Whisper issue human gate | Lesson 266 |
| 4 | Confirm Tuesday CSV ingest | Lesson 267 |
| 5 | Confirm CI cancel + VDF LF | Lessons 268–269 |
| 6 | Confirm setlive dry-run + Blender mirror | Lessons 270–271 |
| 7 | Confirm SteamPipe wall-clock + loudness | Lessons 272–273 |
| 8 | Confirm Unreal OTLP + FMOD menu | Lessons 274–275 |
| 9 | Link October + Q4 + H2 capstone pointers | Prior arcs pass |
| 10 | Run verify_november_closeout.sh |
Exit 0 |
| 11 | File november_closeout_capstone_v1.json |
N1–N11 pass |
Time: ~75 minutes when child lessons done; ~90 minutes first full November audit.
Developer path (gates N1–N11)
| Gate | Check | Fail when |
|---|---|---|
| N1 | whisper_issue_tag_receipt_v1 + github_issue_allowed |
Invented repro / no human gate (Lesson 266) |
| N2 | playtest_csv_ingest_receipt_v1 + csv_ingest_ok |
Tuesday CSV missing before smoke (Lesson 267) |
| N3 | ci_cancel_safe_receipt_v1 + ci_cancel_safe_ok |
Cancel poisons Addressables (Lesson 268) |
| N4 | vdf_line_ending_receipt_v1 + vdf_lf_ok |
CRLF on Linux steamcmd (Lesson 269) |
| N5 | gm_steam_setlive_dry_run_receipt_v1 + setlive_dry_run_ok |
Silent default promotion (Lesson 270) |
| N6 | blender_glb_mirror_receipt_v1 + blender_glb_mirror_ok |
Diligence hero mirror 404 (Lesson 271) |
| N7 | steampipe_wall_clock_receipt_v1 + wall_clock_log_ok |
Queued treated as auth fail (Lesson 272) |
| N8 | playtest_vod_loudness_spot_receipt_v1 + loudness_spot_ok |
Whisper on silent merge (Lesson 273) |
| N9 | unreal_otlp_diligence_receipt_v1 + unreal_otlp_diligence_ok |
Proxy egress undocumented (Lesson 274) |
| N10 | fmod_menu_snapshot_spot_receipt_v1 + menu_snapshot_spot_ok |
Combat on title without input (Lesson 275) |
| N11 | Prior arc pointers 265 / 253 / 223 on disk | Capstone without October/Q4/H2 truth |
Cross-cutting (required before november_closeout_ok: true): verify_november_closeout.sh exit 0; all ten children share expected_build_label; december_freeze_allowed only after December defer H5.
Child receipt crosswalk
| Lesson | Receipt schema | Typical path | Pass field |
|---|---|---|---|
| 266 | whisper_issue_tag_receipt_v1 |
release-evidence/playtest/whisper/WHISPER_ISSUE_TAG_RECEIPT.json |
github_issue_allowed |
| 267 | playtest_csv_ingest_receipt_v1 |
release-evidence/playtest/csv/PLAYTEST_CSV_INGEST_RECEIPT.json |
csv_ingest_ok |
| 268 | ci_cancel_safe_receipt_v1 |
release-evidence/ci/CI_CANCEL_SAFE_RECEIPT.json |
ci_cancel_safe_ok |
| 269 | vdf_line_ending_receipt_v1 |
release-evidence/steam/vdf/VDF_LINE_ENDING_RECEIPT.json |
vdf_lf_ok |
| 270 | gm_steam_setlive_dry_run_receipt_v1 |
release-evidence/steam/setlive/GM_STEAM_SETLIVE_DRY_RUN_RECEIPT.json |
setlive_dry_run_ok |
| 271 | blender_glb_mirror_receipt_v1 |
release-evidence/art/blender/BLENDER_GLB_MIRROR_RECEIPT.json |
blender_glb_mirror_ok |
| 272 | steampipe_wall_clock_receipt_v1 |
release-evidence/steam/upload/STEAMPIPE_WALL_CLOCK_RECEIPT.json |
wall_clock_log_ok |
| 273 | playtest_vod_loudness_spot_receipt_v1 |
release-evidence/audio/loudness/PLAYTEST_VOD_LOUDNESS_SPOT_RECEIPT.json |
loudness_spot_ok |
| 274 | unreal_otlp_diligence_receipt_v1 |
release-evidence/telemetry/UNREAL_OTLP_DILIGENCE_RECEIPT.json |
unreal_otlp_diligence_ok |
| 275 | fmod_menu_snapshot_spot_receipt_v1 |
release-evidence/audio/menu-snapshot/FMOD_MENU_SNAPSHOT_SPOT_RECEIPT.json |
menu_snapshot_spot_ok |
Order note: 273 loudness before 266 Whisper issues on the same VOD night; 267 CSV before Wednesday smoke; 269 VDF LF before Godot steamcmd; 270 setlive dry-run after partner identity (Lesson 262).
november_closeout_capstone_v1.json
{
"schema": "november_closeout_capstone_v1",
"expected_build_label": "fest-demo-2026-11-rc4",
"arc_lessons": ["266", "267", "268", "269", "270", "271", "272", "273", "274", "275", "276"],
"receipts": {
"266": "whisper_issue_tag_receipt_v1.json",
"267": "playtest_csv_ingest_receipt_v1.json",
"268": "ci_cancel_safe_receipt_v1.json",
"269": "vdf_line_ending_receipt_v1.json",
"270": "gm_steam_setlive_dry_run_receipt_v1.json",
"271": "blender_glb_mirror_receipt_v1.json",
"272": "steampipe_wall_clock_receipt_v1.json",
"273": "playtest_vod_loudness_spot_receipt_v1.json",
"274": "unreal_otlp_diligence_receipt_v1.json",
"275": "fmod_menu_snapshot_spot_receipt_v1.json"
},
"receipt_paths": {
"266": "release-evidence/playtest/whisper/WHISPER_ISSUE_TAG_RECEIPT.json",
"267": "release-evidence/playtest/csv/PLAYTEST_CSV_INGEST_RECEIPT.json",
"268": "release-evidence/ci/CI_CANCEL_SAFE_RECEIPT.json",
"269": "release-evidence/steam/vdf/VDF_LINE_ENDING_RECEIPT.json",
"270": "release-evidence/steam/setlive/GM_STEAM_SETLIVE_DRY_RUN_RECEIPT.json",
"271": "release-evidence/art/blender/BLENDER_GLB_MIRROR_RECEIPT.json",
"272": "release-evidence/steam/upload/STEAMPIPE_WALL_CLOCK_RECEIPT.json",
"273": "release-evidence/audio/loudness/PLAYTEST_VOD_LOUDNESS_SPOT_RECEIPT.json",
"274": "release-evidence/telemetry/UNREAL_OTLP_DILIGENCE_RECEIPT.json",
"275": "release-evidence/audio/menu-snapshot/FMOD_MENU_SNAPSHOT_SPOT_RECEIPT.json"
},
"prior_arc_pointers": {
"265": "release-evidence/capstone/OCTOBER_OPS_TRUTH_CAPSTONE.json",
"253": "release-evidence/capstone/Q4_PLAYTEST_SCALE_CAPSTONE.json",
"223": "release-evidence/capstone/H2_FEST_HARDENING_CAPSTONE.json"
},
"gates": {
"N1_whisper_issue_tag": "pass",
"N2_csv_ingest": "pass",
"N3_ci_cancel_safe": "pass",
"N4_vdf_lf": "pass",
"N5_setlive_dry_run": "pass",
"N6_blender_glb_mirror": "pass",
"N7_steampipe_wall_clock": "pass",
"N8_loudness_spot": "pass",
"N9_unreal_otlp": "pass",
"N10_menu_snapshot_spot": "pass",
"N11_prior_arcs": "pass",
"build_label_crosswalk": "pass"
},
"november_closeout_ok": true,
"december_freeze_allowed": true
}
Pin under release-evidence/capstone/NOVEMBER_CLOSEOUT_CAPSTONE.json. Align fields with the jq November sketch—do not invent a second schema.
Verify before BUILD_RECEIPT flip
./scripts/verify_november_closeout.sh \
release-evidence/capstone/NOVEMBER_CLOSEOUT_CAPSTONE.json
jq -e '.november_closeout_ok == true and .december_freeze_allowed == true' \
release-evidence/capstone/NOVEMBER_CLOSEOUT_CAPSTONE.json
Exit 0 from verify is required before Friday holiday freeze ritual latches december_freeze_allowed on the facilitator card.
BUILD_RECEIPT capstone row
| Column | Source |
|---|---|
github_issue_allowed / Whisper gate |
Lesson 266 |
csv_ingest_ok |
Lesson 267 |
ci_cancel_safe_ok |
Lesson 268 |
vdf_lf_ok |
Lesson 269 |
setlive_dry_run_ok |
Lesson 270 |
blender_glb_mirror_ok |
Lesson 271 |
wall_clock_log_ok |
Lesson 272 |
loudness_spot_ok |
Lesson 273 |
unreal_otlp_diligence_ok |
Lesson 274 |
menu_snapshot_spot_ok |
Lesson 275 |
november_closeout_ok |
This lesson |
october_ops_truth_capstone |
Lesson 265 pointer |
q4_playtest_scale_capstone |
Lesson 253 pointer |
h2_fest_hardening_capstone |
Lesson 223 pointer |
CI verify_november_closeout fails when november_closeout_ok is false and December freeze flag is set.
Key takeaways
- Capstone = wiring Lessons 266–275—not re-running Whisper, setlive, or menu Profiler from scratch.
expected_build_labeljoins playtest, CI, Steam, diligence, audio, and telemetry rows.- jq sketch first — verify_november_closeout.sh before Boolean flip.
- 273 before 266 on VOD nights—loudness gates ASR honesty.
- 265 October ops still required—November triage does not replace store/CI October freeze.
- 253 + 223 still required—prior fest hardening + July scale baseline.
- Friday ritual owns ten-minute row review; 276 owns BUILD_RECEIPT milestone JSON.
- November arc 266–276 closed — February live-week queue starts at Lesson 277 (OBS pager).
- Thursday review lists 266–275 in one November Closeout section.
- December defer H5 must share the same label.
- January reentry jq cousin points back at this capstone after freeze.
- Multi-engine studios keep Unity cancel (268) and Godot VDF (269) as separate columns—never merge.
- Guide preflights #28–#37 are ninety-second gates; 276 is the promotion wiring lesson.
Common mistakes
- Filing capstone while 273 RED but 266 GREEN—empty Whisper on loud merge.
- Setting
december_freeze_allowedwithout December defer H5. - Skipping 265 because “November already covers CI.”
- Merging
november_closeout_capstone_v1intooctober_ops_truth_capstone_v1. - Promoting freeze with one child deferred and no
deferred_children[]honesty row.
Troubleshooting
| Symptom | Lane |
|---|---|
| One child RED | Open that lesson; do not waive in capstone JSON |
build_label mismatch |
Re-export child on correct label; re-run verify |
| Prior capstone missing | 265, 253, 223 |
| Smoke RED, capstone GREEN | Wednesday smoke—separate gate |
| verify exit 1 | jq sketch mismatch table—fix child build_label |
Mini exercise (80 minutes)
- Collect ten receipt paths; confirm each pass field GREEN.
- Run
./scripts/verify_november_closeout.sh. - Link 265, 253, 223 capstone paths.
- Intentionally omit 270—confirm capstone promotion blocked.
- Restore 270; file
november_closeout_capstone_v1.json. - Add BUILD_RECEIPT November Closeout Capstone row for Thursday / Friday review.
Continuity — receipt arcs on BUILD_RECEIPT
| Arc | Lessons | Capstone |
|---|---|---|
| H2 fest hardening | …223 | 223 |
| Q4 July playtest scale | 245–253 | 253 |
| October fest ops truth | 254–265 | 265 |
| November close-out + playtest triage | 266–276 | 276 (this) |
Previous: Lesson 275 — FMOD menu snapshot spot receipt
Next: Lesson 277 — OBS February pager clip receipt
FAQ
Does 276 replace Wednesday smoke?
No—binary smoke is a separate gate; capstone wires 266–275 receipt columns.
Can we skip 265 if 266–275 are GREEN?
No—265 documents October store/CI/diligence freeze; November adds triage honesty lanes.
Is jq November sketch enough without this lesson?
Sketch owns copy-paste verify; 276 owns BUILD_RECEIPT milestone + N1–N11 producer checklist.
Is 276 the last lesson in the course?
Last in the November 2026 fest close-out + playtest triage arc; February live-week lessons start at Lesson 277.
Where to go next
- Child lessons: 266 through 275
- jq verify: November closeout child crosswalk
- Friday ritual: November closeout row review
- Prior October capstone: Lesson 265
- Thursday ritual: BUILD_RECEIPT row review
Holiday freeze needs one capstone row—wire 266–275, link 265 + 253 + 223, pass verify_november_closeout.sh, file november_closeout_capstone, then set december_freeze_allowed.