Lesson 287: Unity March Post-Fest Sprint Weekly jsonl Receipt on BUILD_RECEIPT (2026)
Direct answer: Before March 2027 Friday stand-up declares post-fest sprint GREEN, promote march_post_fest_sprint_receipt_v1.json with J1–J6—point at February closeout, prove evidence latch, recompute honest row_diff[] with Unity build_label, append march_post_fest_sprint_weekly_log.jsonl, and fail-close march_post_fest_sprint_weekly_ok on BUILD_RECEIPT so Slack folklore cannot replace a weekly line. Pair Guide #46, jq March weekly, and cousin Lesson 280 (hourly live-week—not weekly March schema).

Why this matters now (March ISO weeks after February fest)
March week two is when post-fest MERGEs bump Unity Application.version while producers ask whether the sprint drifted from February closeout. Lesson 286 owns daily wishlist velocity; 287 owns the weekly sprint jsonl BUILD_RECEIPT latch for the same RPG track—without reusing february_fest_live_ops_hourly_log.jsonl paths from Lesson 280.
Guide #46 is the ninety-second Unity append gate; this lesson is the BUILD_RECEIPT milestone + verify script for the course project.
Beginner path (55-minute weekly latch)
| Step | Action | Success check |
|---|---|---|
| 1 | Export weekly fields from Unity smoke | build_label present |
| 2 | Write MARCH_SPRINT_RECEIPT_LATEST.json |
Schema + sprint window |
| 3 | Prove February closeout pointer | Path exists; closeout OK |
| 4 | Confirm evidence latch E7 | march_post_fest_evidence_ok |
| 5 | Recompute row_diff[] vs prior week |
build_label row present |
| 6 | Append weekly jsonl + run verify | Exit 0 |
| 7 | Latch BUILD_RECEIPT march_post_fest_sprint_weekly_ok |
Boolean after verify |
Time: ~55 minutes first March week; ~15 minutes when append script exists.
Prerequisites: Unity 6.x post-fest player; jq + Bash/Git Bash; release-evidence/post-fest/ + February closeout file; Guide #46 bookmarked.
Developer path (gates J1–J6)
| Gate | Check | Fail when |
|---|---|---|
| J1 | Schema + sprint window | Hourly February schema reused |
| J2 | February closeout pointer | Path missing / closeout false |
| J3 | Prior ISO week or first-week waiver | Gap without notes |
| J4 | Evidence latch | Weekly GREEN without E7 |
| J5 | Honest row_diff[] |
Chat-invented diffs; missing build_label |
| J6 | Verify + jsonl append | march_post_fest_sprint_weekly_ok without verify |
Cross-cutting: Do not mix hourly live-ops jsonl with weekly March paths. Do not promote Friday GREEN without a new jsonl line for the ISO week.
Cousin receipt crosswalk
| Field | Lesson 280 February hourly | Lesson 286 wishlist velocity | This lesson (287) |
|---|---|---|---|
| Schema | february_fest_live_ops_receipt_v1 |
post_fest_wishlist_velocity_receipt_v1 |
march_post_fest_sprint_receipt_v1 |
| Window | Fest live hours | Daily D+1…D+14 | March ISO weeks |
| Pass field | february_fest_live_ops_hourly_ok |
post_fest_wishlist_velocity_ok |
march_post_fest_sprint_weekly_ok |
Reference cousins in cousin_receipts—do not flatten schemas.
J1–J2 — MARCH_SPRINT_RECEIPT_LATEST.json (course project)
{
"schema": "march_post_fest_sprint_receipt_v1",
"sprint_window": "2027-03-post-fest-sprint",
"iso_week": "2027-W11",
"build_label": "fest-demo-2027-02-rc3-postfest-1",
"february_closeout_pointer": {
"path": "release-evidence/february-live/FEBRUARY_FEST_CLOSEOUT_RECEIPT.json",
"february_fest_closeout_ok": true,
"post_fest_debrief_allowed": true
},
"snapshot": {
"march_post_fest_evidence_ok": true,
"wishlist_velocity_baseline_ok": true,
"merge_exception_list_ok": false,
"build_label": "fest-demo-2027-02-rc3-postfest-1"
},
"row_diff": [],
"cousin_receipts": {
"february_hourly": "release-evidence/february-live/FEBRUARY_FEST_LIVE_OPS_HOURLY_RECEIPT.json",
"wishlist_velocity": "release-evidence/analytics/POST_FEST_WISHLIST_VELOCITY_RECEIPT.json"
},
"march_post_fest_sprint_weekly_ok": false
}
Pin working copy at release-evidence/post-fest/MARCH_SPRINT_RECEIPT_LATEST.json.
Unity convenience log:
// Tools → Fest → Log Build Label For March Weekly Receipt
Debug.Log($"build_label={Application.version}+{GitSha}");
J2 — Closeout pointer before append
CLO=$(jq -r '.february_closeout_pointer.path' release-evidence/post-fest/MARCH_SPRINT_RECEIPT_LATEST.json)
test -f "$CLO"
jq -e '.february_fest_closeout_ok == true' "$CLO"
If annex is empty, stop—pair empty annex recovery before weekly GREEN.
J4–J5 — Evidence + row_diff honesty
Require snapshot.march_post_fest_evidence_ok == true from 7-day March evidence sprint. Recompute row_diff[] with the jq March weekly sketch—never invent rows from Discord.
J6 — Append + verify + BUILD_RECEIPT
./scripts/append_march_post_fest_sprint_week.sh \
release-evidence/post-fest/MARCH_SPRINT_RECEIPT_LATEST.json \
release-evidence/post-fest/march_post_fest_sprint_weekly_log.jsonl
./scripts/verify_march_post_fest_sprint.sh \
release-evidence/post-fest/MARCH_SPRINT_RECEIPT_LATEST.json
Latch:
{
"march_post_fest_sprint_weekly_ok": true,
"march_post_fest_sprint_receipt": "release-evidence/post-fest/MARCH_SPRINT_RECEIPT_LATEST.json",
"march_post_fest_sprint_weekly_log": "release-evidence/post-fest/march_post_fest_sprint_weekly_log.jsonl"
}
Minimum verify sketch:
#!/usr/bin/env bash
set -euo pipefail
REC="${1:-release-evidence/post-fest/MARCH_SPRINT_RECEIPT_LATEST.json}"
jq -e '.schema == "march_post_fest_sprint_receipt_v1"' "$REC"
jq -e '.february_closeout_pointer.february_fest_closeout_ok == true' "$REC"
jq -e '.snapshot.march_post_fest_evidence_ok == true' "$REC"
jq -e '.build_label == .snapshot.build_label' "$REC"
jq -e '.march_post_fest_sprint_weekly_ok == true' "$REC"
echo "march_post_fest_sprint verify: OK"
Relationship to Guide / jq / Help / hourly
| Artifact | Role |
|---|---|
| Guide #46 | Ninety-second Unity append gate |
| jq March weekly | Strategy + copy-paste jq |
| This lesson | BUILD_RECEIPT milestone |
| Lesson 280 | Hourly live-week cousin |
| Help #45 forward | Weekly jq missing February pointer recovery |
Order: Unity smoke → Guide #46 J1–J6 → this lesson latch → Friday March capstone.
Common mistakes
- Reusing February hourly jsonl paths for March weeks.
- Flipping weekly OK without closeout pointer.
- Inventing
row_diff[]from stand-up chat. - Declaring GREEN without E7 evidence latch.
- Treating Lesson 286 velocity GREEN as weekly sprint proof.
Troubleshooting
| Symptom | Lane |
|---|---|
| Closeout path missing | Sunday February closeout / empty-annex case study |
build_label empty in row_diff |
Guide #46 J3 + visible label discipline |
| Weekly jq missing February pointer | Help #45 forward |
| CI Library poison vs catalog hash | Library cache ContentState |
| April warm after weekly GREEN | Warm catalog Guide #51 |
Key takeaways
- March weekly needs jsonl, not Slack archaeology.
march_post_fest_sprint_weekly_okgates Friday GREEN.- Guide #46 paints append; 287 promotes on BUILD_RECEIPT.
- February closeout pointer + E7 evidence are March-specific blockers.
- Hourly 280 and velocity 286 stay cousins—not substitutes.
- Next March prep continues at Lesson 288 (Whisper clips_index handoff).
Continuity — March debrief + October prep (284–288)
| Lesson | Receipt focus |
|---|---|
| 284 | Post-fest debrief facilitator card |
| 285 | GameMaker October RC branch label |
| 286 | Construct post-fest wishlist velocity |
| 287 (this) | Unity March weekly sprint jsonl |
| 288 | OBS post-fest Whisper clips_index handoff |
Previous: Lesson 286 — Construct post-fest wishlist velocity
Next: Lesson 288 — OBS post-fest Whisper clips_index handoff
FAQ
Does 287 replace Lesson 280?
No—280 is February hourly live-ops; 287 is March weekly sprint with closeout pointer.
Can we skip the first ISO week prior line?
Only with a documented J3 first-week waiver in notes—not silent gaps.
Is Help #45 required first?
Only when the February pointer already broke jq—prevention is Guide #46 + this lesson.
Related GamineAI reads
- jq March post-fest sprint weekly row diff
- Unity March weekly jsonl append (Guide #46)
- February hourly Lesson 280
- Wishlist velocity Lesson 286
- 7-day March evidence sprint
- Friday March capstone closeout
- Thursday BUILD_RECEIPT row review
- Help #45 forward — weekly jq missing February closeout pointer
- Official: Unity Addressables · Steamworks
March post-fest lies when Friday is GREEN without a weekly jsonl line—export Unity smoke fields, prove closeout + evidence, recompute row_diff[], append the log, verify, then latch march_post_fest_sprint_weekly_ok.