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

Lesson hero for Unity March post-fest sprint weekly jsonl receipt

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

  1. March weekly needs jsonl, not Slack archaeology.
  2. march_post_fest_sprint_weekly_ok gates Friday GREEN.
  3. Guide #46 paints append; 287 promotes on BUILD_RECEIPT.
  4. February closeout pointer + E7 evidence are March-specific blockers.
  5. Hourly 280 and velocity 286 stay cousins—not substitutes.
  6. 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


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.