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.”

Lesson hero for November closeout truth capstone receipt

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

  1. Capstone = wiring Lessons 266–275—not re-running Whisper, setlive, or menu Profiler from scratch.
  2. expected_build_label joins playtest, CI, Steam, diligence, audio, and telemetry rows.
  3. jq sketch firstverify_november_closeout.sh before Boolean flip.
  4. 273 before 266 on VOD nights—loudness gates ASR honesty.
  5. 265 October ops still required—November triage does not replace store/CI October freeze.
  6. 253 + 223 still required—prior fest hardening + July scale baseline.
  7. Friday ritual owns ten-minute row review; 276 owns BUILD_RECEIPT milestone JSON.
  8. November arc 266–276 closed — February live-week queue starts at Lesson 277 (OBS pager).
  9. Thursday review lists 266–275 in one November Closeout section.
  10. December defer H5 must share the same label.
  11. January reentry jq cousin points back at this capstone after freeze.
  12. Multi-engine studios keep Unity cancel (268) and Godot VDF (269) as separate columns—never merge.
  13. 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_allowed without December defer H5.
  • Skipping 265 because “November already covers CI.”
  • Merging november_closeout_capstone_v1 into october_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)

  1. Collect ten receipt paths; confirm each pass field GREEN.
  2. Run ./scripts/verify_november_closeout.sh.
  3. Link 265, 253, 223 capstone paths.
  4. Intentionally omit 270—confirm capstone promotion blocked.
  5. Restore 270; file november_closeout_capstone_v1.json.
  6. 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

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.