Sunday February Fest Closeout BUILD_RECEIPT Row Review - Ten Minutes Before Post-Fest Debrief - 2026

Sunday 9:30 p.m., February fest week: #fest-live-ops is quiet. Monday's stand-up already lists new enemy AI and Spring sale prep. BUILD_RECEIPT.json still shows refund_spike_watch_ok: true from D4 while refund daily jsonl stops at D5. jq hourly log has a gap Saturday afternoon. HOTFIX-002 shipped Friday but hotfix_exception_count on the root row still says 1.
February 2027 live week ends with evidence sprawl—timebox actuals, funnel CSV, queue receipts, overlay passes, pager nights, hourly ops jsonl, refund mornings, and HOTFIX integers each filed in separate paths. Teams that skip Sunday closeout jump to feature work and lose the one BUILD_RECEIPT story partners need for post-fest debrief—not because engineers forgot to ship, but because nobody ran C1–C10 on the root receipt before Monday planning.
Friday November capstone latched december_freeze_allowed before holiday. Monday January reconciliation latched february_upload_allowed before first upload. Thursday row review owns weekly promotion diff. This Process & Workflow article defines a ten-minute Sunday closeout row review: diff February live-week root columns, consume cluster jsonl annexes, file february_fest_closeout_receipt_v1.json, set post_fest_debrief_allowed: true only when C4–C8 pass—the last human gate before post-fest debrief and feature sprint planning.
Non-repetition note: Friday November owns N1–N11 pre-freeze capstone. Monday January owns M1–M10 cross-era reconciliation. jq hourly owns J1–J6 per-hour diff. Refund worksheet owns R1–R6 daily %. HOTFIX opinion owns H1–H6 mid-fest promotion. This URL owns Sunday C1–C10 closeout diff + jsonl annex latch after D1–D7 live week ends.
Pair February live week timebox, hour-one funnel, 5-night pager, cluster #1–#10, Course 281 forward, and BUILD_RECEIPT beginner pipeline.
Why this matters now (February 2027 fest ends Sunday)
- jsonl annex debt — Hourly ops, refund mornings, and pager nights produced timestamped logs—closeout must index them on BUILD_RECEIPT, not leave them orphaned in
release-evidence/february-live/. - HOTFIX count drift — HOTFIX list
exceptions[].lengthmust match roothotfix_exception_countbefore partners read debrief slides. - Funnel + refund narrative — Hour-one funnel D1–D7 CSV and refund daily log are the quantitative debrief—without closeout, producers reconstruct from Steamworks screenshots.
- Feature sprint temptation — Monday stand-ups reward new work; Sunday ten minutes rewards honest close—same tradeoff November Friday solved before freeze.
- Course 281 milestone — Forward lesson expects
february_fest_closeout_receipt_v1.jsonbeside live-week cluster receipts before post-fest narrative ships.
Direct answer: On fest Sunday night (default 2027-02-28), run C1–C10 on BUILD_RECEIPT February live columns; write february_fest_closeout_receipt_v1.json with jsonl_annex[] pointers; set post_fest_debrief_allowed: true only when C4–C8 GREEN—block Monday debrief deck when closeout diff is RED even if D7 pager was GREEN.
Who this ritual is for
| Audience | Outcome |
|---|---|
| Solo founder | Ten-minute checklist before "back to features Monday" |
| Producer | Partner zip with closeout receipt + jsonl annex index |
| Release owner | Latch february_fest_closeout_ok + post_fest_debrief_allowed same commit |
| Working dev | Machine-readable receipt for CI before post-fest branch merge |
Time: 10 minutes every Sunday after February live fest ends (D7 night); 5 minutes optional if mid-fest Sunday checkpoint adopted.
Prerequisites: Cluster #1–#10 receipts filed (waivers documented), D7 pager P5 sign-off, last jq hourly line for D7.
Ritual map — live week through Sunday latch
| Phase | Artifact | Layer | This article |
|---|---|---|---|
| Pre-live | Monday reconciliation M1–M10 | february_upload_allowed |
Prerequisite |
| D1–D7 | Timebox T1–T6 | Planned lanes + actuals CSV | Indexed C6 |
| D1–D7 | Funnel F1–F6 | Daily CSV | Indexed C5 |
| D1–D7 | Refund R1–R6 | Daily jsonl | Indexed C5 |
| D1–D7 | jq hourly J1–J6 | Hourly jsonl | Indexed C7 |
| D1–D7 | HOTFIX H1–H6 | Exception list | Indexed C4 |
| D1–D7 | Pager P1–P5 | Nightly receipts | Indexed C6 |
| Sunday D7 | Closeout row review (this) | Root receipt + jsonl annex | C1–C10 |
| Monday+ | Post-fest debrief / feature sprint | Narrative | Follows GREEN closeout |
D7 pager GREEN with Sunday closeout RED still ships debrief theater—slides claim success while BUILD_RECEIPT booleans disagree with jsonl tails.
Closeout row catalog (what Sunday diffs)
Store once in release-evidence/february-live/february-closeout-row-catalog.md:
| Row key | Source cluster | Must latch? | Typical stale pattern |
|---|---|---|---|
february_live_timebox_ok |
#1 timebox | Yes | true while actuals CSV incomplete |
hour_one_funnel_snapshot_ok |
#2 funnel | Yes | D7 CSV missing |
fest_live_moderation_ok |
#3 moderation | Yes | Roster not exported |
february_live_ops_challenge_ok |
#4 pager | Yes | P5 sign-off missing |
fest_day_setlive_recovery_ok |
#5 setlive (if used) | If incident | true without case study path |
february_live_queue_wall_clock_ok |
#6 queue | Yes | Q6 path broken |
fest_stream_overlay_safe_zone_ok |
#7 overlay | Yes | O6 not re-run after HOTFIX |
february_fest_live_ops_hourly_ok |
#8 jq hourly | Yes | jsonl gap undocumented |
refund_spike_watch_ok |
#9 refund | Yes | Daily log stops before D7 |
hotfix_exception_list_ok |
#10 HOTFIX | Yes | Count drift vs list JSON |
hotfix_exception_count |
#10 | Yes | ≠ exceptions[].length |
build_label |
Cross | Yes | ≠ last HOTFIX build_label_after |
post_fest_debrief_allowed |
Output | Set Sunday | Premature true Monday AM |
february_fest_closeout_ok |
Output | Set Sunday | Missing after D7 |
Add rows when Course 281 ships—never delete live-week keys without receipt_version bump in closeout notes.
Gates C1–C10 (Sunday debrief blockers)
| Gate | Name | Pass criteria |
|---|---|---|
| C1 | Fest window | fest_window == 2027-02-next-fest-live on closeout receipt |
| C2 | Cluster index | All adopted cluster receipt paths exist on disk (see catalog) |
| C3 | D7 completeness | fest_day: D7 documented; pager P5 sign-off path attached |
| C4 | HOTFIX parity | hotfix_exception_list_ok true; count matches list; last label matches BUILD_RECEIPT |
| C5 | Funnel + refund | Funnel D1–D7 CSV path + refund daily jsonl path; no undocumented morning gaps |
| C6 | Timebox + pager | february-live-actuals-2027.csv + pager challenge receipt GREEN |
| C7 | Hourly jsonl | february_fest_live_ops_hourly_log.jsonl line count documented; gaps waived in notes |
| C8 | Child booleans | Indexed cluster *_ok fields true on BUILD_RECEIPT or waived with producer note |
| C9 | Thursday cousin | Latest weekly row diff GREEN if post-fest promote planned same week |
| C10 | Diff receipt | february_fest_closeout_receipt_v1.json committed; post_fest_debrief_allowed set |
C4–C8 are debrief blockers when RED. C9 YELLOW allows debrief only with written waiver—post-fest promote without weekly diff.
The ten-minute Sunday ritual (minute-by-minute)
| Min | Action |
|---|---|
| 0–1 | Confirm D7 pager P5 sign-off + last jq hourly line timestamp |
| 1–2 | C1–C2: open BUILD_RECEIPT; verify cluster path index |
| 2–4 | C4: HOTFIX list count + build_label parity |
| 4–6 | C5: funnel CSV tail + refund jsonl wc -l vs documented mornings |
| 6–8 | C6–C7: timebox actuals CSV + hourly jsonl gap check |
| 8–9 | C8: loop catalog *_ok booleans; mark child_stale[] |
| 9–10 | Write february_fest_closeout_receipt_v1.json; set post_fest_debrief_allowed |
Calendar invite: "Sunday February fest closeout row review — post-fest debrief latch (BUILD_RECEIPT)."
Live-week close-out calendar (recommended)
| When | Block | Minutes |
|---|---|---|
| D1–D6 daily | Morning refund + funnel | 8+8 |
| D1–D7 hourly | jq stand-up append | 2×24 |
| N1–N5 nightly | Pager challenge | 20 |
| Sunday D7 PM | Closeout C1–C10 | 10 |
| Monday AM | Post-fest debrief | 30–60 |
Total live-week ops truth is hours—Sunday ten minutes prevents days of partner reconstruction.
february_fest_closeout_receipt_v1.json (schema sketch)
{
"schema": "february_fest_closeout_receipt_v1",
"fest_window": "2027-02-next-fest-live",
"fest_day_closeout": "D7",
"generated_at": "2027-02-28T21:30:00Z",
"expected_build_label": "fest-demo-2027-02-hotfix2",
"gates": {
"C1": "GREEN",
"C2": "GREEN",
"C3": "GREEN",
"C4": "GREEN",
"C5": "GREEN",
"C6": "GREEN",
"C7": "YELLOW",
"C8": "GREEN",
"C9": "GREEN",
"C10": "GREEN"
},
"post_fest_debrief_allowed": true,
"jsonl_annex": [
{
"name": "february_fest_live_ops_hourly",
"path": "release-evidence/february-live/february_fest_live_ops_hourly_log.jsonl",
"line_count": 142,
"gaps_waived": ["2027-02-26T14:00:00Z facilitator sick"]
},
{
"name": "february_refund_spike_daily",
"path": "release-evidence/february-live/february_refund_spike_daily_log.jsonl",
"line_count": 7
}
],
"row_diff": [
{
"key": "post_fest_debrief_allowed",
"before": null,
"after": true,
"reason": "Sunday closeout C1–C10 GREEN (C7 YELLOW waived)"
}
],
"child_stale": [],
"cluster_paths": {
"timebox": "release-evidence/ops/FEBRUARY_LIVE_TIMEBOX_RECEIPT.json",
"funnel": "release-evidence/funnel/HOUR_ONE_FUNNEL_D1_D7.csv",
"pager": "release-evidence/february-live/FEBRUARY_LIVE_OPS_CHALLENGE_RECEIPT.json",
"hotfix_list": "release-evidence/february-live/HOTFIX_EXCEPTION_LIST_RECEIPT.json",
"refund_latest": "release-evidence/february-live/FEBRUARY_REFUND_SPIKE_RECEIPT_LATEST.json"
},
"notes": "C7: one hourly gap waived—documented in jq receipt notes D3"
}
Beginner rule: post_fest_debrief_allowed may be true only when no undeclared child_stale[] entries and C4–C8 are GREEN (C7 YELLOW requires producer waiver in notes).
BUILD_RECEIPT root rows to touch same commit
{
"february_fest_closeout_ok": true,
"february_fest_closeout_receipt": "release-evidence/february-live/FEBRUARY_FEST_CLOSEOUT_RECEIPT.json",
"post_fest_debrief_allowed": true,
"build_label": "fest-demo-2027-02-hotfix2",
"hotfix_exception_count": 2,
"jsonl_annex_indexed": true
}
verify_february_fest_closeout.sh
#!/usr/bin/env bash
set -euo pipefail
CLO="${1:-release-evidence/february-live/FEBRUARY_FEST_CLOSEOUT_RECEIPT.json}"
BR="${2:-BUILD_RECEIPT.json}"
jq -e '.schema == "february_fest_closeout_receipt_v1"' "$CLO" || exit 1
jq -e '.fest_window == "2027-02-next-fest-live"' "$CLO" || exit 2
jq -e '.jsonl_annex | length >= 2' "$CLO" || exit 3
jq -e '.cluster_paths.hotfix_list != null' "$CLO" || exit 4
# C4: HOTFIX list parity
HL="release-evidence/february-live/HOTFIX_EXCEPTION_LIST_RECEIPT.json"
COUNT=$(jq '.exceptions | length' "$HL")
BR_COUNT=$(jq -r '.hotfix_exception_count // 0' "$BR")
[[ "$COUNT" == "$BR_COUNT" ]] || { echo "C4 fail: hotfix count"; exit 5; }
LAST=$(jq -r '.exceptions[-1].build_label_after' "$HL")
BL=$(jq -r '.build_label' "$BR")
[[ "$LAST" == "$BL" ]] || { echo "C4 fail: label"; exit 6; }
jq -e '.post_fest_debrief_allowed == true' "$CLO" || exit 7
echo "february_fest_closeout verify: OK"
Exit codes: 1 schema, 2 fest_window, 3 annex, 4 hotfix path, 5–6 C4, 7 latch.
PowerShell verify cousin
$Cl = "release-evidence/february-live/FEBRUARY_FEST_CLOSEOUT_RECEIPT.json"
$j = Get-Content $Cl -Raw | ConvertFrom-Json
if ($j.schema -ne "february_fest_closeout_receipt_v1") { exit 1 }
if (-not $j.post_fest_debrief_allowed) { exit 7 }
Write-Host "february_fest_closeout verify: OK"
jq annex sketches (jsonl consumption)
Hourly log line count vs fest hours
wc -l release-evidence/february-live/february_fest_live_ops_hourly_log.jsonl
jq -s 'length' release-evidence/february-live/february_fest_live_ops_hourly_log.jsonl
Refund daily log fest days covered
jq -s '[.[].fest_day] | unique | sort' \
release-evidence/february-live/february_refund_spike_daily_log.jsonl
# expect ["D1","D2","D3","D4","D5","D6","D7"]
Funnel CSV row count
tail -n +2 release-evidence/funnel/HOUR_ONE_FUNNEL_D1_D7.csv | wc -l
# expect 7 for D1–D7
Pair jq hourly sketch for gap waiver documentation in closeout notes.
Integration with February cluster #1–#10
| Row | Closeout coupling |
|---|---|
| #1 timebox | february-live-actuals-2027.csv in C6 |
| #2 funnel | D1–D7 CSV in C5; debrief charts |
| #3 moderation | #mod-log export path in cluster_paths |
| #4 pager | P5 sign-off C3 |
| #5 setlive | Recovery receipt if C4 label incident |
| #6 queue | Q6 path in C2 |
| #7 overlay | Re-run O2–O4 if HOTFIX touched layout |
| #8 jq hourly | jsonl annex C7 |
| #9 refund | daily jsonl annex C5 |
| #10 HOTFIX | C4 count + label |
Comparison pack (closeout cousins)
| Ritual | When | Latch | Gates |
|---|---|---|---|
| Friday November | Pre-holiday | december_freeze_allowed |
N1–N11 |
| Monday January | Pre-upload | february_upload_allowed |
M1–M10 |
| Thursday weekly | Weekly | promotion_allowed |
R1–R10 |
| Sunday February | Post-live fest | post_fest_debrief_allowed |
C1–C10 |
Proof table
| Row | Evidence | GREEN when |
|---|---|---|
| P1 | Closeout receipt JSON | C1–C10 pass |
| P2 | jsonl annex array | ≥2 paths indexed |
| P3 | HOTFIX list parity | C4 exit 0 |
| P4 | Funnel D1–D7 CSV | Seven data rows |
| P5 | Refund daily jsonl | Seven morning lines |
| P6 | verify_february_fest_closeout.sh |
Exit 0 |
Scenarios A–G
A — Zero HOTFIXs, stable fest — C4 trivial; still file closeout with empty HOTFIX path noted.
B — HOTFIX-002 Friday, debrief Sunday — C4 requires count 2 on BUILD_RECEIPT.
C — Hourly jsonl gap Saturday — C7 YELLOW with waiver; do not hide gap.
D — Refund RED D4, GREEN D7 — Closeout indexes jsonl; debrief discusses SR4—not rewrites history.
E — Setlive incident mid-fest — Attach #5 case study path in cluster_paths.
F — Moderation log export missing — C8 RED until #mod-log export filed.
G — Monday promote planned — C9 requires Thursday diff GREEN.
Common mistakes
Skipping Sunday because D7 was quiet — Quiet fest still needs annex index.
Debrief deck before closeout receipt — Slides without post_fest_debrief_allowed are theater.
Merging HOTFIX count by hand — C4 fails; use list JSON length.
Dropping jsonl after export — Annex paths must remain on disk for diligence zip.
Feature branch Monday AM — Closeout commit should land Sunday night same as receipt.
Printable facilitator card
# Sunday february_fest_closeout (10 min)
1. P5 pager sign-off path attached?
2. HOTFIX count == list length == build_label?
3. Funnel CSV 7 rows + refund jsonl 7 lines?
4. Hourly jsonl wc -l documented; gaps waived?
5. Timebox actuals CSV present?
6. verify_february_fest_closeout.sh → exit 0
7. post_fest_debrief_allowed on BUILD_RECEIPT
8. Schedule Monday debrief only after GREEN
Post-fest debrief handoff (Monday)
When closeout GREEN, attach to debrief invite:
FEBRUARY_FEST_CLOSEOUT_RECEIPT.json- Funnel D1–D7 chart export (from CSV)
- Refund jsonl summary table
- HOTFIX list markdown PDF
- Pager challenge receipt + sign-offs
- Whisper same-day triage clips index
Use same-day P0 triage when post-fest playtest backlog needs same-day P0 discipline—not January batch cadence.
Related GamineAI reads
- Friday November capstone
- Monday January reconciliation
- Thursday row review
- February live week timebox
- Hour-one funnel
- Refund spike worksheet
- jq hourly live ops
- HOTFIX exception opinion
- Whisper same-day live-week triage (blog #12 — published)
Key takeaways
- February fest ends Sunday—ten-minute closeout prevents Monday debrief folklore.
february_fest_closeout_receipt_v1.jsongates C1–C10 withjsonl_annex[].post_fest_debrief_allowedlatches only when C4–C8 GREEN (C7 waiver allowed).- C4 cross-checks HOTFIX list count +
build_label. - C5 indexes funnel D1–D7 + refund daily jsonl.
- C7 consumes jq hourly jsonl—gaps need waiver notes.
- Cousin Friday November + Monday January bookend pre live week; this bookends post.
verify_february_fest_closeout.shgives CI one exit code before debrief zip.- Course 281 forward owns milestone cousin.
- Whisper same-day triage supplies post-fest clip backlog index.
- Cluster #1–#11 consumed—closeout is the capstone index, not a replacement.
- February cluster #12 published—Blog-Planner refill critical on next
go.
FAQ
Is this the same as Thursday row review?
No—Thursday is weekly promotion diff; Sunday is live-week closeout + jsonl annex.
Can we run closeout Monday morning?
Prefer Sunday night—Monday stand-ups bias toward new features over evidence latch.
What if we skipped a refund morning?
Document waiver in closeout notes—undeclared gaps fail C5.
Do we need closeout with zero HOTFIXs?
Yes—proves fest ran with indexed evidence even when stable.
What ships next in February cluster?
February cluster #1–#12 closed July 12, 2026—same-day Whisper live-week triage was the final row.
Closing
Live fest evidence is only useful if it survives the Sunday night urge to "move on." One ten-minute closeout, one jsonl annex index, and C1–C10 turn seven days of receipts into a debrief partners can audit—beginners copy the checklist, working devs wire verify + jq annex, producers get post_fest_debrief_allowed before the Monday deck ships.