Friday November Close-Out Capstone BUILD_RECEIPT Row Review - Ten Minutes Before Holiday Code Freeze - 2026
Friday 4:45 p.m., November 28: Thursday row review is GREEN. jq crosswalk exit 0. Marketing posts "see you in January." Monday someone merges a hotfix without bumping whisper_issue_tag_ok on Lesson 266. BUILD_RECEIPT.json still shows november_closeout_ok: true while december_freeze_allowed is missing and holiday_defer_ok was never set on the root row.
November 2026 fest close-out ships ten child receipts (Lessons 266–275) plus november_closeout_capstone_v1.json. December defer FREEZE and engineering floor caps assume the capstone row on BUILD_RECEIPT still matches what jq proved Thursday—not what Discord felt true after lunch.
This Process & Workflow article defines a ten-minute Friday capstone row review: diff capstone-specific BUILD_RECEIPT columns and november_closeout_row_diff_receipt_v1.json immediately before holiday code freeze—the last human gate before contractors go offline and Course 276 expects a truthful November arc.
Non-repetition note: Thursday review owns weekly R1–R10 row diff vs last promotion. jq crosswalk sketch owns J1–J6 bash/jq guards on child paths. December defer playbook owns Ship/Freeze/Defer scope. This URL owns Friday N1–N11 capstone row diff + freeze latch on the root receipt.
Pair Wednesday smoke, Lesson 265 October capstone, Course 276 forward, and BUILD_RECEIPT beginner pipeline.
Why this matters now (November close-out / December freeze)
- Child receipt sprawl — Whisper tags, CSV ingest, CI cancel, VDF LF, setlive dry-run, Blender mirror, SteamPipe wall-clock, loudness spot, Unreal OTLP, and FMOD menu spot each filed separate JSON—root BUILD_RECEIPT must index them honestly.
- Stale booleans survive jq — jq proves
build_labelunity; it does not provenovember_closeout_okstill matches this week's smoke ISO week or thatdecember_freeze_allowedwas set after the last merge. - Holiday code freeze — Teams declare FREEZE Dec 20 without latching capstone rows—January partners see GREEN capstone with RED children.
- Course 276 milestone — November truth capstone lesson forward expects Friday row diff receipt beside capstone JSON.
- Engineering floor handoff — December capacity worksheet budgets ritual hours; skipping Friday review burns blackout hours on stale boolean archaeology.
Direct answer: After Thursday jq GREEN, run N1–N11 on BUILD_RECEIPT capstone columns; write november_closeout_row_diff_receipt_v1.json; set december_freeze_allowed: true only when N4–N8 pass; block holiday freeze when capstone row diff is RED—even if weekly Thursday R-gates were GREEN Tuesday.
Who this ritual is for
| Audience | Outcome |
|---|---|
| Solo founder | Ten-minute checklist before "no merges until January" |
| Release owner | Latch november_closeout_ok + holiday_defer_ok same week |
| Producer | Require Friday diff receipt in partner zip beside capstone |
| Working dev | Machine-readable november_closeout_row_diff_receipt_v1.json for CI |
Time: 10 minutes every Friday of November close-out week (default Nov 28, 2026 before Dec 20 freeze).
Prerequisites: november_closeout_capstone_v1.json, verify_november_closeout.sh exit 0 same ISO week, Thursday build_receipt_row_diff_receipt_v1.json GREEN, Wednesday smoke GREEN on expected_build_label.
Ritual map — Wednesday through Friday freeze latch
| Day | Ritual | Layer | This article |
|---|---|---|---|
| Wednesday PM | Demo smoke | Binary golden path | Prerequisite |
| Thursday | BUILD_RECEIPT row review | Weekly R1–R10 diff | Prerequisite |
| Thursday PM | jq crosswalk | build_label unity J1–J6 |
Prerequisite |
| Friday | Capstone row review (this) | Root receipt capstone columns + freeze latch | N1–N11 |
| Before Dec 20 | Defer FREEZE | Scope lanes | Follows GREEN Friday diff |
| Dec 13+ | Engineering floor cap | Founder hours | Ritual block reserved |
jq GREEN with capstone row RED still ships freeze theater—partners inherit a BUILD_RECEIPT that claims November closed while child *_ok fields disagree.
Capstone row catalog (what Friday diffs)
Store once in release-evidence/05-operations/november-capstone-row-catalog.md:
| Row key | Type | Must match capstone? | Typical stale pattern |
|---|---|---|---|
november_closeout_ok |
bool | Yes | true before last child refresh |
november_closeout_capstone_path |
string | Yes | Points to old capstone filename |
expected_build_label |
string | Yes | Differs from jq build_label |
december_freeze_allowed |
bool | Yes | missing after Friday review |
holiday_defer_ok |
bool | Yes | unset when defer receipt filed |
october_ops_truth_capstone_ok |
bool | Pointer | Orphaned when Lesson 265 pointer broken |
december_capacity_ok |
bool | Optional pre-freeze | E1–E6 not filed |
demo_smoke.iso_week |
string | Yes | Last week's smoke week |
demo_smoke.promotion_allowed |
bool | Yes | true while capstone children stale |
child_receipt_count |
int | Yes | 10 expected for 266–275 |
waived_lessons[] |
list | If partial | Undocumented waivers |
human_signoff.capstone_signed_at_utc |
timestamp | Yes | Unsigned capstone freeze |
Add rows when Course 276 ships—never delete capstone keys mid-freeze without receipt_version bump in diff notes.
Gates N1–N11 (Friday freeze blockers)
| Gate | Name | Pass criteria |
|---|---|---|
| N1 | Capstone file | november_closeout_capstone_v1.json exists at path in BUILD_RECEIPT |
| N2 | jq crosswalk | verify_november_closeout.sh exit 0 same ISO week as smoke |
| N3 | Child count | child_receipt_count == 10 OR documented waived_lessons[] with producer note |
| N4 | build_label | expected_build_label equals jq-unified label in capstone |
| N5 | Child booleans | Every indexed child *_ok true in capstone children[] |
| N6 | October pointer | october_ops_truth_capstone_ok true; path to Lesson 265 capstone valid |
| N7 | Smoke linkage | demo_smoke.promotion_allowed true; same build_id as capstone |
| N8 | Thursday diff | build_receipt_row_diff_receipt_v1.json promotion_allowed true same week |
| N9 | Defer latch | holiday_defer_ok true OR linked december_defer_receipt_v1.json path in notes |
| N10 | Capacity optional | december_capacity_ok true when capacity receipt adopted |
| N11 | Diff receipt | november_closeout_row_diff_receipt_v1.json committed; freeze_allowed true |
N4–N8 are freeze blockers when RED. N10 YELLOW allows freeze only with written waiver—contractor blackout without capacity plan.
The ten-minute Friday ritual (minute-by-minute)
| Min | Action |
|---|---|
| 0–1 | Confirm Thursday R-review GREEN + jq exit 0 logs in release-evidence/ops/ |
| 1–2 | N1–N2: open capstone JSON; re-run verify_november_closeout.sh if label bumped since Thursday |
| 2–4 | N3–N5: loop children[]; mark RED on any *_ok: false |
| 4–6 | N6–N7: verify October pointer + smoke build_id parity |
| 6–8 | N8–N9: attach Thursday diff path; set or link holiday_defer_ok |
| 8–9 | N10: optional capacity receipt cross-check |
| 9–10 | Write november_closeout_row_diff_receipt_v1.json; set december_freeze_allowed on BUILD_RECEIPT |
Calendar invite: "Friday November capstone row review — holiday freeze latch (BUILD_RECEIPT)."
Same-week close-out calendar (recommended)
| Day | Block | Minutes |
|---|---|---|
| Wed PM | Smoke | 15 |
| Thu AM | Metadata diff (if store copy changed) | 15 |
| Thu PM | Row review R1–R10 | 10 |
| Thu PM | jq verify_november_closeout.sh |
3 |
| Fri PM | Capstone row review N1–N11 | 10 |
| Fri PM | File defer FREEZE receipt | 15 |
Total ~68 minutes November close-out week—cheaper than January partner call.
november_closeout_row_diff_receipt_v1.json (schema sketch)
{
"schema": "november_closeout_row_diff_receipt_v1",
"iso_week": "2026-W48",
"expected_build_label": "fest-demo-2026-11-rc4",
"capstone_path": "release-evidence/ops/november_closeout_capstone_v1.json",
"verify_script_exit_code": 0,
"gates": {
"N1": "GREEN",
"N2": "GREEN",
"N3": "GREEN",
"N4": "GREEN",
"N5": "GREEN",
"N6": "GREEN",
"N7": "GREEN",
"N8": "GREEN",
"N9": "GREEN",
"N10": "YELLOW",
"N11": "GREEN"
},
"freeze_allowed": true,
"row_diff": [
{
"key": "december_freeze_allowed",
"before": null,
"after": true,
"reason": "Friday capstone row review N1–N11 GREEN"
}
],
"child_stale": [],
"thursday_diff_path": "release-evidence/ops/build_receipt_row_diff_receipt_v1.json",
"notes": "Capacity receipt filed E1–E6; N10 YELLOW waived—solo founder"
}
Beginner rule: freeze_allowed may be true only when no child_stale[] entries and N4–N8 are GREEN.
BUILD_RECEIPT root rows to touch same commit
{
"november_closeout_ok": true,
"november_closeout_capstone_path": "release-evidence/ops/november_closeout_capstone_v1.json",
"december_freeze_allowed": true,
"holiday_defer_ok": true,
"child_receipt_count": 10,
"human_signoff": {
"capstone_signed_at_utc": "2026-11-28T16:50:00Z"
}
}
Pair optional founder_hours_planned from December capacity receipt—not a Friday blocker unless team adopted E-gates.
Child boolean stale table (N5 quick scan)
| Lesson | Pass field | RED if |
|---|---|---|
| 266 | whisper_issue_tag_ok |
Hotfix without tag map refresh |
| 267 | playtest_csv_ingest_ok |
CSV schema bump skipped |
| 268 | ci_cancel_safe_ok |
Concurrency group changed post-receipt |
| 269 | vdf_lf_ok |
CRLF regression on export VDF |
| 270 | setlive_dry_run_ok |
Promoted without dry-run rerun |
| 271 | blender_glb_mirror_ok |
GLB hash changed; mirror not rerun |
| 272 | queue_wait_ok |
SteamPipe policy change unlogged |
| 273 | loudness_spot_ok |
New VOD without spot pass |
| 274 | unreal_otlp_diligence_ok |
Proxy policy change |
| 275 | menu_snapshot_spot_ok |
FMOD bank swap without spot |
One RED child → N5 RED → no december_freeze_allowed until child receipt refreshed and jq re-run.
bash helper (optional — working dev)
#!/usr/bin/env bash
# verify_november_closeout_friday.sh — N2 + N5 quick guard
set -euo pipefail
CAPSTONE="${1:-release-evidence/ops/november_closeout_capstone_v1.json}"
./verify_november_closeout.sh "$CAPSTONE"
jq -e '
.children | map(.pass_ok) | all
' "$CAPSTONE"
echo "N2+N5 pre-check OK"
Wire after GitHub Actions concurrency patterns job—fail promote when exit non-zero.
PowerShell variant (Windows founder laptop)
$cap = "release-evidence/ops/november_closeout_capstone_v1.json"
bash ./verify_november_closeout.sh $cap
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
jq -e '.children | map(.pass_ok) | all' $cap
Proof table
| Evidence | Proves | Fail signal |
|---|---|---|
november_closeout_row_diff_receipt_v1.json |
Friday human gate | Verbal "we're frozen" |
verify_november_closeout.sh log |
jq unity this week | Reused last week's log |
build_receipt_row_diff_receipt_v1.json |
Thursday scope truth | Friday skipped because "jq passed" |
december_defer_receipt_v1.json |
Scope FREEZE filed | holiday_defer_ok false on root |
DECEMBER_CAPACITY_RECEIPT.json |
Hour plan before blackout | Heroic December overtime |
| Partner zip README | Points to diff paths | Raw JSON dump without index |
Scenarios A–G
| ID | Situation | Friday move |
|---|---|---|
| A | All children GREEN; label stable | Run N1–N11; set december_freeze_allowed |
| B | Hotfix Friday AM bumps label | Re-smoke Wed ritual optional; re-jq; then Friday diff |
| C | Only eight lessons complete | N3 YELLOW; document waived_lessons: [269, 270] + producer sign-off |
| D | Thursday skipped "short week" | N8 RED—run Thursday diff before freeze latch |
| E | Defer receipt not filed | N9 RED—file defer playbook same day |
| F | Two founders | Split minutes 5+5; one signs human_signoff.capstone_signed_at_utc |
| G | Course 276 week | Friday diff required before Lesson 276 BUILD_RECEIPT merge |
Common mistakes (beginners)
| Mistake | Fix |
|---|---|
| Treating jq as Friday substitute | jq is N2; Friday diffs root capstone rows |
Setting december_freeze_allowed on Monday |
Latch Friday after last November merge |
| Ignoring October pointer | N6 fails—re-open Lesson 265 path |
FREEZE without holiday_defer_ok |
N9 RED—link defer receipt |
Copy-paste capstone without row_diff[] |
Diff receipt documents what changed for partners |
Holiday freeze checklist (append to runbook)
[ ] Wednesday demo smoke GREEN (same ISO week)
[ ] Thursday BUILD_RECEIPT row review GREEN
[ ] verify_november_closeout.sh exit 0 (same ISO week)
[ ] Friday capstone row review N1–N11 GREEN (this article)
[ ] november_closeout_row_diff_receipt_v1.json freeze_allowed == true
[ ] BUILD_RECEIPT december_freeze_allowed == true
[ ] december_defer_receipt_v1.json FREEZE filed (or holiday_defer_ok true)
[ ] Optional: december_capacity_receipt_v1.json E1–E6 GREEN
[ ] No child_stale[] entries in Friday diff receipt
Partner one-pager excerpt (producer)
November close-out arc 266–275 indexed in
november_closeout_capstone_v1.json. jq crosswalk and Friday capstone row diff receipts provefest-demo-2026-11-rc4(example) unified across children. Holiday code freeze latcheddecember_freeze_allowedwith defer scope in linked defer receipt. January re-entry begins with smoke + Thursday row review—not capstone archaeology.
Troubleshooting
| Symptom | Fix |
|---|---|
| N5 RED, jq exit 0 | Child *_ok stale—refresh child receipt, re-jq |
| N8 RED, jq GREEN | Run Thursday diff—weekly scope drift |
| N9 RED | File defer receipt; set holiday_defer_ok |
freeze_allowed true with child_stale |
Revert BUILD_RECEIPT latch; fix children |
| Partner asks about Lesson 274 only | Point to capstone children[] row + child path |
| CI promotes despite N11 missing | Add november_closeout_row_diff_receipt_v1.json path gate |
Counterarguments (honest limits)
"We already ran jq Thursday."
jq proves label algebra; Friday proves BUILD_RECEIPT root still exposes that truth after merges and signoffs.
"Ten minutes is too much before vacation."
Ten minutes Friday beats ten hours January reconstructing which child boolean lied.
"Same as Thursday copy-paste."
Thursday diffs promotion rows; Friday latches capstone freeze columns—different keys, different failure modes.
Outbound references
- Steamworks Builds documentation — freeze policy is team-defined; document in defer receipt
- ISO week date — align
iso_weekacross smoke, Thursday, Friday receipts
Related GamineAI reads
- Thursday BUILD_RECEIPT row review
- jq November capstone crosswalk
- Wednesday demo smoke
- December defer FREEZE playbook
- December engineering floor cap
- Lesson 265 October capstone
- Course 276 November truth capstone forward
- BUILD_RECEIPT beginner pipeline
- 12 GitHub Actions concurrency patterns
- February fest prep calendar
Key takeaways
- Friday capstone row review latches
december_freeze_allowedon BUILD_RECEIPT—not weekly promotion alone. - Run after Thursday row review and jq crosswalk same ISO week.
- Gates N4–N8 (
build_label, child booleans, October pointer, smoke, Thursday diff) are freeze blockers. - Ship
november_closeout_row_diff_receipt_v1.jsonwithrow_diff[]and emptychild_stale[]. - N5 scans Lessons 266–275
*_okfields indexed in capstone—one RED child blocks freeze. - December defer needs
holiday_defer_okor linked defer receipt (N9). - December engineering floor optional N10—waive with producer note if solo.
- Lesson 265 pointer must stay valid (N6).
- Ten minutes Friday beats January capstone archaeology.
- Completes close-out quartet: smoke Wed, row Thu, jq Thu, capstone Fri.
- Course 276 milestone expects Friday diff beside capstone JSON.
- Hotfix after jq requires re-run before freeze latch.
human_signoff.capstone_signed_at_utcdocuments who latched freeze.- Partner zip README should index three receipts: Thursday diff, jq log, Friday capstone diff.
- Closes December holiday ship gate cluster #1–#12—Blog-Planner refill critical next.
FAQ
Is this the same as Thursday BUILD_RECEIPT row review?
No. Thursday diffs weekly promotion rows (R1–R10). Friday diffs capstone freeze columns (N1–N11) and latches december_freeze_allowed.
Can we freeze if jq failed but children look fine?
No. N2 requires jq exit 0 same week. Fix children and re-run verify script.
Do we need all ten Lessons 266–275 done?
Default expects 10 children (N3). Partial arcs need documented waived_lessons[] and producer sign-off—not silent omission.
How is this different from December defer FREEZE?
Defer playbook owns scope lanes (Ship/Freeze/Defer). Friday review owns BUILD_RECEIPT capstone truth before you file defer FREEZE.
Should solo founders skip Friday review?
No—solo teams benefit most; stale booleans have no second engineer to catch drift.
Does Friday review replace Course 276?
No—Lesson 276 is BUILD_RECEIPT milestone wiring; this article is the ten-minute human ritual before that merge.
What if we freeze code but not store copy?
Store copy may follow Wednesday metadata diff; this article covers receipt/capstone freeze latch only.
Can N10 block freeze without capacity receipt?
N10 is optional—YELLOW with waiver when team has not adopted engineering floor worksheet.
Closing read (November 2026)
November close-out is not "run jq once and disappear until Valentine's Day." Micro-studios that latch capstone rows on BUILD_RECEIPT, file november_closeout_row_diff_receipt_v1.json, and tie holiday_defer_ok to defer scope enter December freeze with receipts that still describe the build players installed—not the build Discord remembered.
Run smoke Wednesday, row review Thursday, jq Thursday, capstone row review Friday—then file defer FREEZE and capacity. If N5 shows a stale FMOD spot boolean at 4:50 p.m., fix it before you post the holiday GIF. January-you will not want to grep ten child JSON files from a beach Wi‑Fi tab.
Next cluster: Blog-Planner critical refill — December holiday ship gate arc #1–#12 complete.