Monday January Capstone Reconciliation BUILD_RECEIPT Row Review - Fifteen Minutes Before First February Upload - 2026

Monday 9:00 a.m., January 6: January re-entry smoke filed Saturday. jq January pointer exit 0 Sunday night. Engineering schedules first February SteamPipe upload for Tuesday lunch. BUILD_RECEIPT.json still shows december_freeze_allowed: true, january_reentry_capstone_ok is missing, ship_exception_list_ok disagrees with numbered SHIP list, and marketing_spend_planned never synced from January marketing cap.
January 2027 first Monday is not "another Thursday." It is capstone reconciliation: prove November close-out, December freeze, holiday SHIP exceptions, January re-entry, and February RC intent still describe one build_label story on the root BUILD_RECEIPT before SteamPipe spends wall-clock on a depot partners cannot audit.
Friday November capstone review latched december_freeze_allowed. Thursday row review owns weekly R1–R10 diffs. jq January pointer owns J1–J6 machine proof. This Process & Workflow article defines a fifteen-minute Monday capstone reconciliation: diff January-specific root columns, file january_capstone_reconciliation_receipt_v1.json, set february_upload_allowed: true only when M4–M8 pass—the human gate before first February upload.
Non-repetition note: Thursday owns weekly promotion row diff. Friday November owns N1–N11 freeze latch. jq pointer owns bash/jq guards. January unfreeze listicle owns fourteen-tool audit. This URL owns Monday M1–M10 reconciliation diff across November + December + January capstone columns before February SteamPipe.
Pair December defer playbook, 14 free January unfreeze audit tools, February RC branch label evening, and Lesson 276 capstone forward.
Why this matters now (first Monday / February upload week)
- Receipt sprawl after holiday — November capstone, December defer, SHIP list, re-entry smoke, marketing cap, and jq pointer each filed separate JSON—root BUILD_RECEIPT must reconcile them Monday, not assume Saturday files propagated.
- SteamPipe wall-clock — Upload queue telemetry cousins burn founder hours watching builds when receipt booleans were already RED Monday morning.
- Label lineage — Visible build label policy fails when Monday upload uses
build_labelthat skips SHIP exception integers. - February RC chain — 7-day RC challenge day one assumes Monday reconciliation GREEN—not heroic Tuesday jq archaeology.
- Course 276 milestone — November truth capstone lesson expects reconciliation receipt beside January pointer before February promote.
Direct answer: On first Monday after holiday (default 2027-01-06), run M1–M10 on BUILD_RECEIPT capstone + January columns; write january_capstone_reconciliation_receipt_v1.json; set february_upload_allowed: true only when M4–M8 GREEN—block first February SteamPipe upload when reconciliation diff is RED even if Saturday smoke was GREEN.
Who this ritual is for
| Audience | Outcome |
|---|---|
| Solo founder | Fifteen-minute checklist before Tuesday setlive |
| Release owner | Latch january_capstone_reconciliation_ok + february_upload_allowed same commit |
| Producer | Require Monday diff in partner zip before upload calendar invite |
| Working dev | Machine-readable receipt for CI graph before SteamPipe job |
Time: 15 minutes on first Monday after holiday re-entry (default Jan 6); 5 minutes optional refresh each Monday until February promote week.
Prerequisites: JANUARY_REENTRY_CAPSTONE.json, verify_january_reentry.sh exit 0, JANUARY_REENTRY_SMOKE_RECEIPT.json GREEN, SHIP_EXCEPTION_LIST_RECEIPT.json if any holiday hotfixes, January unfreeze audit optional GREEN.
Ritual map — holiday arc through Monday latch
| Phase | Ritual | Layer | This article |
|---|---|---|---|
| Nov close-out | Friday capstone N1–N11 | december_freeze_allowed |
Prerequisite |
| Dec freeze | Defer H1–H6 | Scope lanes | Prerequisite |
| Holiday | SHIP O1–O6 | Numbered hotfixes | Prerequisite if binaries moved |
| Jan re-entry | Wednesday smoke R1–R6 | Cold-install baseline | Prerequisite |
| Jan pointer | jq J1–J6 | November truth + label transition | Prerequisite |
| First Monday | Capstone reconciliation (this) | Root receipt cross-era columns | M1–M10 |
| Tue+ | February RC label evening | RC branch receipt | Follows GREEN Monday diff |
Saturday smoke GREEN with Monday reconciliation RED still ships upload theater—SteamPipe promotes a depot BUILD_RECEIPT cannot explain across November→January.
Reconciliation row catalog (what Monday diffs)
Store once in release-evidence/05-operations/january-capstone-reconciliation-catalog.md:
| Row key | Era | Must reconcile? | Typical stale pattern |
|---|---|---|---|
november_closeout_ok |
Nov | Yes | true while child stale |
november_closeout_capstone_path |
Nov | Yes | Broken path after folder move |
holiday_defer_ok |
Dec | Yes | true but defer receipt version old |
december_freeze_allowed |
Dec | Yes | still true after unfreeze merges |
ship_exception_list_ok |
Holiday | Yes | Count ≠ ship_exception_count |
ship_exception_count |
Holiday | Yes | Drift from SHIP-00N list |
january_reentry_smoke_ok |
Jan | Yes | Missing after Saturday smoke |
january_reentry_capstone_ok |
Jan | Yes | Missing after jq pointer |
january_unfreeze_audit_ok |
Jan | Optional | U1–U6 adopted but not latched |
marketing_spend_planned |
Jan | Yes | ≠ sum of weekly caps |
marketing_spend_actual |
Jan | Optional | Null is fine pre-ads |
expected_build_label |
Cross | Yes | Skips SHIP build_label_after chain |
february_upload_allowed |
Feb | Output | Set Monday only when M4–M8 GREEN |
february_rc_allowed |
Feb | Pointer | Premature true before RC evening |
january_capstone_reconciliation_ok |
Jan | Output | Latch for Lesson 276 |
Never delete cross-era keys mid-January without receipt_version bump documented in reconciliation notes.
Gates M1–M10 (Monday upload blockers)
| Gate | Name | Pass criteria |
|---|---|---|
| M1 | November capstone | november_closeout_ok true; capstone path exists; November jq re-run exit 0 if label bumped since Friday |
| M2 | January pointer | january_reentry_capstone_ok true; verify_january_reentry.sh exit 0 same ISO week |
| M3 | Re-entry smoke | january_reentry_smoke_ok true; frozen_baseline_label matches SHIP list or defer frozen label |
| M4 | SHIP list parity | ship_exception_list_ok true; last build_label_after equals BUILD_RECEIPT build_label |
| M5 | Defer consistency | holiday_defer_ok true; no open DEFER rows promoted without SHIP seq |
| M6 | Label lineage | Documented chain: Nov label → SHIP exceptions → re-entry smoke → current build_label |
| M7 | Unfreeze audit | january_unfreeze_audit_ok true when U1–U6 adopted; else YELLOW with waiver |
| M8 | Marketing cap | marketing_spend_planned matches JANUARY_MARKETING_CAP_RECEIPT.json sum when cap adopted |
| M9 | Thursday cousin | Latest build_receipt_row_diff_receipt_v1.json GREEN if promotion planned same week |
| M10 | Diff receipt | january_capstone_reconciliation_receipt_v1.json committed; february_upload_allowed set |
M4–M8 are first-upload blockers when RED. M7 YELLOW allows upload only with producer waiver in reconciliation notes.
The fifteen-minute Monday ritual (minute-by-minute)
| Min | Action |
|---|---|
| 0–2 | Open BUILD_RECEIPT + pointer index; confirm Saturday smoke + Sunday jq logs in release-evidence/ops/ |
| 2–4 | M1–M2: November capstone path + January pointer *_ok booleans |
| 4–6 | M3–M4: re-entry smoke baseline vs SHIP list last label |
| 6–9 | M5–M6: defer table cross-check; write label lineage one-liner in notes |
| 9–11 | M7–M8: unfreeze audit optional; marketing cap sum jq |
| 11–13 | M9: attach Thursday diff if same-week promote planned |
| 13–15 | Write reconciliation receipt; set february_upload_allowed + january_capstone_reconciliation_ok |
Calendar invite: "Monday January capstone reconciliation — February upload latch (BUILD_RECEIPT)."
First Monday calendar (recommended)
| When | Block | Minutes |
|---|---|---|
| Sat / Sun | Re-entry smoke + jq pointer | ~60 total |
| Mon AM | Capstone reconciliation M1–M10 | 15 |
| Mon PM | January unfreeze audit if not done | 45 |
| Tue eve | February RC label receipt | ~90 |
| Wed | First SteamPipe upload (if Monday GREEN) | wall-clock |
Fifteen minutes Monday is cheaper than Tuesday rollback when partners ask why November and January receipts disagree.
january_capstone_reconciliation_receipt_v1.json (schema sketch)
{
"schema": "january_capstone_reconciliation_receipt_v1",
"iso_week": "2027-W02",
"reconciliation_date": "2027-01-06",
"label_lineage": [
"fest-demo-2026-11-rc4",
"fest-demo-2026-12-rc3-hotfix2",
"fest-demo-2027-01-rc1"
],
"pointers": {
"november_capstone": "release-evidence/capstone/NOVEMBER_CLOSEOUT_CAPSTONE.json",
"january_pointer_capstone": "release-evidence/capstone/JANUARY_REENTRY_CAPSTONE.json",
"january_reentry_smoke": "release-evidence/smoke/JANUARY_REENTRY_SMOKE_RECEIPT.json",
"ship_exception_list": "release-evidence/ops/SHIP_EXCEPTION_LIST_RECEIPT.json",
"december_defer": "release-evidence/ops/DECEMBER_DEFER_RECEIPT.json",
"january_marketing_cap": "release-evidence/ops/JANUARY_MARKETING_CAP_RECEIPT.json"
},
"gates": {
"M1": "GREEN",
"M2": "GREEN",
"M3": "GREEN",
"M4": "GREEN",
"M5": "GREEN",
"M6": "GREEN",
"M7": "YELLOW",
"M8": "GREEN",
"M9": "GREEN",
"M10": "GREEN"
},
"february_upload_allowed": true,
"row_diff": [
{
"key": "january_capstone_reconciliation_ok",
"before": null,
"after": true,
"reason": "Monday M1–M10 reconciliation GREEN"
},
{
"key": "february_upload_allowed",
"before": false,
"after": true,
"reason": "M4–M8 GREEN; first upload scheduled 2027-01-07"
}
],
"stale_columns": [],
"notes": "M7 YELLOW—january_unfreeze_audit_ok not adopted; waiver producer 2027-01-06"
}
Beginner rule: february_upload_allowed may be true only when stale_columns[] empty and M4–M8 GREEN.
BUILD_RECEIPT root rows to touch same commit
{
"january_capstone_reconciliation_ok": true,
"january_capstone_reconciliation_path": "release-evidence/ops/JANUARY_CAPSTONE_RECONCILIATION_RECEIPT.json",
"january_reentry_capstone_ok": true,
"january_reentry_smoke_ok": true,
"ship_exception_list_ok": true,
"february_upload_allowed": true,
"build_label": "fest-demo-2027-01-rc1",
"expected_build_label": "fest-demo-2027-01-rc1"
}
verify_january_capstone_reconciliation.sh
#!/usr/bin/env bash
set -euo pipefail
REC="${1:-release-evidence/ops/JANUARY_CAPSTONE_RECONCILIATION_RECEIPT.json}"
BR="${2:-BUILD_RECEIPT.json}"
jq -e '.schema == "january_capstone_reconciliation_receipt_v1"' "$REC" || exit 1
jq -e '.january_capstone_reconciliation_ok == true' "$BR" 2>/dev/null || {
jq -e '.gates.M10 == "GREEN"' "$REC" || exit 10
}
# M4 label parity
LAST=$(jq -r '.label_lineage[-1]' "$REC")
BL=$(jq -r '.build_label' "$BR")
[[ "$LAST" == "$BL" ]] || { echo "M6/M4 fail: lineage tail $LAST != build_label $BL"; exit 4; }
jq -e '.february_upload_allowed == true' "$REC" || exit 8
echo "january_capstone_reconciliation verify: OK"
Wire in CI after verify_january_reentry.sh and before SteamPipe promote job.
Label lineage worksheet (beginner)
Copy into reconciliation notes:
## Label lineage — 2027-01-06
1. November freeze: fest-demo-2026-11-rc4 (Friday N11)
2. SHIP-001: fest-demo-2026-12-rc3-hotfix1 (Dec 22 smoke)
3. SHIP-002: fest-demo-2026-12-rc3-hotfix2 (Dec 29 smoke)
4. January re-entry verified: fest-demo-2027-01-rc1 (Jan 4 smoke)
5. Monday BUILD_RECEIPT build_label: fest-demo-2027-01-rc1 ✓
6. Player-visible label screenshot: attached SHIP_002 + re-entry paths
If any step is missing, M6 RED—fix before february_upload_allowed.
jq cross-check pack (working dev)
# M8 marketing cap sum
jq -s '
.[0].marketing_spend_planned as $p
| .[1].weekly_caps | map(.cap_usd) | add as $s
| $p == $s
' BUILD_RECEIPT.json release-evidence/ops/JANUARY_MARKETING_CAP_RECEIPT.json
# M4 exception count
jq -s '
.[0].ship_exception_count == (.[1].exceptions | length)
' BUILD_RECEIPT.json release-evidence/ops/SHIP_EXCEPTION_LIST_RECEIPT.json
Proof table
| Row | Evidence | GREEN when |
|---|---|---|
| P1 | NOVEMBER_CLOSEOUT_CAPSTONE.json |
november_closeout_ok: true |
| P2 | JANUARY_REENTRY_CAPSTONE.json |
january_reentry_capstone_ok: true |
| P3 | JANUARY_REENTRY_SMOKE_RECEIPT.json |
R1–R6 pass |
| P4 | SHIP_EXCEPTION_LIST_RECEIPT.json |
O1–O6 pass if exceptions > 0 |
| P5 | JANUARY_CAPSTONE_RECONCILIATION_RECEIPT.json |
M1–M10 documented |
| P6 | BUILD_RECEIPT root | february_upload_allowed: true after Monday |
Scenarios A–G
A — Zero SHIP exceptions, honest freeze
Label chain: Nov rc4 → re-entry rc1. M4 passes with empty SHIP list. Monday sets upload allowed for Tuesday RC prep only—not feature merges.
B — Two SHIP exceptions, smoke same day
M6 documents hotfix1 → hotfix2 → rc1. M3 verifies re-entry smoke used last SHIP label as baseline notes.
C — Saturday smoke GREEN, Monday BUILD_RECEIPT missing latches
M2/M3 fail on missing booleans—fix root row before SteamPipe; do not re-run full smoke unless label changed.
D — Marketing cap adopted, BUILD_RECEIPT sum drift
M8 RED until marketing_spend_planned updated—block ads and upload same day until fixed.
E — Unfreeze audit not adopted
M7 YELLOW with waiver; producer note required. Upload allowed for engineering-only depot; marketing SR rules still apply.
F — Partner diligence Monday call
Export reconciliation JSON + label lineage markdown—faster than narrating holiday merges from memory.
G — Thursday row review skipped last week
M9 RED if same-week promote—run Thursday R1–R10 before Monday reconciliation or document waiver.
Comparison pack (Monday vs Friday vs Thursday)
| Ritual | Duration | Scope | Output latch |
|---|---|---|---|
| Thursday row review | 10 min | Weekly R1–R10 vs last promote | promotion_allowed |
| Friday November capstone | 10 min | N1–N11 November children | december_freeze_allowed |
| Monday January reconciliation | 15 min | Nov + Dec + Jan cross-era | february_upload_allowed |
| jq January pointer | 3 min | J1–J6 machine proof | january_reentry_capstone_ok |
SteamPipe integration (first February upload)
Before steamcmd / CI upload job:
verify_january_capstone_reconciliation.shexit 0february_upload_allowed: trueon BUILD_RECEIPT- February signup G-gates filed if store event copy references participate date
- February capsule safe-zone Z-gates if art changed since upload
Pair 12 setlive preflight checks—Monday reconciliation is the receipt layer; setlive checks are the Steamworks layer.
Common mistakes
Treating Monday as Thursday — Weekly R-diff does not reconcile November capstone paths or SHIP counts.
Upload Tuesday without Monday latch — february_upload_allowed is not decorative; partners grep for it.
Skipping label lineage — M6 is one markdown block—do not improvise in diligence calls.
Assuming jq replaces Monday — jq proves pointer; Monday proves BUILD_RECEIPT human columns caught up.
Clearing december_freeze_allowed without reconciliation — Freeze era booleans stay for audit; add January latches beside them.
One PR for smoke and upload — Reconciliation receipt should be its own commit for clear partner diff.
Discord template (producer)
Monday capstone reconciliation: M1–M10 run on BUILD_RECEIPT. Label lineage:
{lineage}.february_upload_allowed: {true/false}. Receipt:JANUARY_CAPSTONE_RECONCILIATION_RECEIPT.json. No SteamPipe until GREEN.
Outbound references
- Steamworks builds upload — upload only after internal receipt GREEN
- BUILD_RECEIPT beginner pipeline — schema cousin
Related GamineAI reads
- Friday November capstone row review
- Thursday BUILD_RECEIPT row review
- jq January reentry capstone pointer
- January re-entry Wednesday smoke
- Numbered SHIP exception list opinion
- December defer FREEZE playbook
- 14 free January unfreeze audit tools
- January marketing spend cap
- February RC branch label evening
- 7-day February RC smoke challenge
- Friday March capstone cousin —
april_content_update_allowedlatch patternKey takeaways
- First Monday after holiday needs fifteen-minute capstone reconciliation—not weekly Thursday alone.
january_capstone_reconciliation_receipt_v1.jsonrecords M1–M10 across November, December, and January rows.february_upload_allowedlatches only when M4–M8 GREEN.- Label lineage must chain November → SHIP exceptions → re-entry smoke → current
build_label. - Pair Friday N1–N11, jq J1–J6, and SHIP O1–O6—Monday merges human columns.
verify_january_capstone_reconciliation.shruns before first February SteamPipe job.- Lesson 276 expects reconciliation receipt beside January pointer.
- M7 YELLOW allows upload with unfreeze audit waiver—document in
notes. - M8 blocks upload when marketing cap sum drifts.
- Forward Whisper January batch triage after reconciliation GREEN—playtest backlog triage is next lane.
- Thursday row review M9 cousin when same-week promote.
- Post-live cousin: Sunday February closeout C1–C10 indexes live-week jsonl after D7—pre-live Monday reconciliation + post-live Sunday closeout bookend February fest.
january_capstone_reconciliation_okis the January-era latch distinct fromjanuary_reentry_capstone_ok.
FAQ
Is this the same as Thursday row review?
No—Thursday diffs weekly promotion rows; Monday reconciles cross-era capstone columns before first February upload.
Can I skip Monday if jq exit 0?
No—jq does not set february_upload_allowed or marketing cap parity.
How is this different from Friday November review?
Friday latched December freeze; Monday latches February upload after January re-entry.
Do I need fifteen minutes every Monday in February?
Full M1–M10 on first Monday; 5-minute refresh subsequent Mondays until promote week—diff only changed columns.
What if SHIP list empty?
M4 still passes—document zero exceptions in reconciliation notes.
Does reconciliation approve feature merges?
No—GREEN means upload allowed, not defer resume; DEFER rows need explicit reopen per defer playbook.
Where does Whisper batch triage fit?
After Monday GREEN—backlog #12 strategy owns playtest VOD order, not capstone booleans.
Can partners request reconciliation before upload?
Yes—export JANUARY_CAPSTONE_RECONCILIATION_RECEIPT.json and label lineage markdown; it is the holiday-to-February narrative partners actually read.