Programming & Technical Jul 11, 2026

jq Gate Sketch for november_closeout_capstone_v1.json Child Receipt Crosswalk - 2026

2026 jq gate sketch for november_closeout_capstone_v1.json—child receipt crosswalk Lessons 266–275, build_label jq proof, N1–N6 gates, CI promotion block before December defer freeze.

By GamineAI Team

jq Gate Sketch for november_closeout_capstone_v1.json Child Receipt Crosswalk - 2026

Pixel-art hero for jq gate sketch november closeout capstone child receipt crosswalk 2026

Ten child receipts GREEN in Discord threads. Thursday row review shows demo_smoke_ok: true. December defer list says FREEZE—then a partner asks whether fest-demo-2026-11-rc4 on Whisper issue tags matches VDF LF proof and FMOD menu spot. One receipt still says fest-demo-2026-11-rc3.

November 2026 fest close-out closes the 266–275 playtest-triage arc before December holiday defer and Course 276 capstone forward. Eleven lessons filed individual *_receipt_v1.json files—partners and producers need one jq proof that build_label aligns across the cluster, not eleven manual opens.

This Programming & Technical post is a copy-paste jq + bash sketch: validate child paths, diff build_label, file november_closeout_capstone_v1.json, block CI promote when crosswalk fails—strategy layer above per-lesson evenings and below Lesson 276 BUILD_RECEIPT milestone.

Non-repetition note: October capstone Lesson 265 owns october_ops_truth_capstone_v1 wiring 254–264. jq rclone mirror sketch owns Team Drive ID guards. Addressables jq Lesson 257 owns inventory groups. This URL owns november_closeout_capstone_v1 child crosswalk + build_label jq for 266–275.

Pair BUILD_RECEIPT beginner, GitHub Actions concurrency patterns, and Friday capstone row review.

Why this matters now (November fest close-out / December freeze)

  1. Child receipt sprawl — November arc adds Whisper tags, CSV ingest, CI cancel, VDF LF, setlive dry-run, Blender mirror, SteamPipe wall-clock, loudness spot, Unreal OTLP, FMOD menu spot.
  2. build_label drift — Hotfix bumps one receipt; others stale until someone notices in partner zip.
  3. Holiday defer FREEZEDecember defer playbook assumes stable label through capstone jq.
  4. Capstone wiringLesson 276 forward expects this sketch done first.
  5. CI promotion culture — jq exit 0 before setlive beats heroic manual JSON diff.

Direct answer: Pin november_closeout_capstone_v1.json with receipt_paths for 266–275, run verify_november_closeout.sh (jq proves one build_label), gates J1–J6, set BUILD_RECEIPT november_closeout_ok: true before December freeze.

Who this sketch is for

Audience You will…
Beginner Copy jq one-liner; read exit code table
Solo founder Stop eleven-file manual audit
Engineer Wire bash guard in GitHub Actions
Producer Require capstone JSON before defer FREEZE

Time: ~60 minutes first crosswalk setup; ~3 minutes per promote after script pinned.

Mental model — capstone vs child receipts

Layer File Proves
Child whisper_issue_tag_receipt_v1.json etc. One lane passed
Capstone november_closeout_capstone_v1.json All children + same build_label
BUILD_RECEIPT Root row Promote allowed
Prior arc october_ops_truth_capstone_v1.json October 254–264 not orphaned

Rule: Capstone does not re-run child gates—it indexes child pass fields and jq-unifies build_label.

Child receipt crosswalk (Lessons 266–275)

Lesson Schema Typical path Pass field
266 whisper_issue_tag_receipt_v1 release-evidence/playtest/whisper/WHISPER_ISSUE_TAG_RECEIPT.json whisper_issue_tag_ok
267 playtest_csv_ingest_receipt_v1 release-evidence/playtest/csv/PLAYTEST_CSV_INGEST_RECEIPT.json playtest_csv_ingest_ok
268 ci_cancel_safe_receipt_v1 release-evidence/ci/CI_CANCEL_SAFE_RECEIPT.json ci_cancel_safe_ok
269 vdf_line_ending_receipt_v1 release-evidence/steam/vdf/VDF_LINE_ENDING_RECEIPT.json vdf_lf_ok
270 gm_steam_setlive_dry_run_receipt_v1 release-evidence/steam/setlive/GM_STEAM_SETLIVE_DRY_RUN_RECEIPT.json setlive_dry_run_ok
271 blender_glb_mirror_receipt_v1 release-evidence/art/blender/BLENDER_GLB_MIRROR_RECEIPT.json blender_glb_mirror_ok
272 steampipe_wall_clock_receipt_v1 release-evidence/steam/upload/STEAMPIPE_WALL_CLOCK_RECEIPT.json queue_wait_ok
273 playtest_vod_loudness_spot_receipt_v1 release-evidence/audio/loudness/PLAYTEST_VOD_LOUDNESS_SPOT_RECEIPT.json loudness_spot_ok
274 unreal_otlp_diligence_receipt_v1 release-evidence/telemetry/UNREAL_OTLP_DILIGENCE_RECEIPT.json unreal_otlp_diligence_ok
275 fmod_menu_snapshot_spot_receipt_v1 release-evidence/audio/menu-snapshot/FMOD_MENU_SNAPSHOT_SPOT_RECEIPT.json menu_snapshot_spot_ok

Paths are team conventions—receipt JSON paths must match your release-evidence/ tree.

Prior arc pointers (required)

Pointer Capstone schema Role
265 october_ops_truth_capstone_v1 October 254–264 closed
253 q4_playtest_scale_capstone_v1 Q4 playtest scale
223 h2_fest_hardening_capstone_v1 H2 hardening

Same pattern as Lesson 265 October wiring.

Beginner path — copy/paste jq + exit codes

One-liner — all children share build_label

jq -e '
  .expected_build_label as $exp
  | .receipt_paths
  | to_entries
  | map(.value)
  | map(select(length > 0))
  | length > 0
  | . as $paths
  | [$paths[] | input] 
  | all(.build_label == $exp)
' november_closeout_capstone_v1.json \
  $(jq -r '.receipt_paths | to_entries[] | .value' november_closeout_capstone_v1.json)

Beginner note: The above multi-file jq is advanced—use the bash script below instead.

Exit code table (snippet-friendly)

Exit Meaning Fix
0 jq guard passed Promote allowed
1 jq filter returned false build_label mismatch or missing file
2 jq parse error Invalid JSON in capstone or child
3 bash: child file missing Path wrong in receipt_paths
4 bash: capstone missing Create november_closeout_capstone_v1.json
5 prior arc pointer missing File 265/253/223 path

Five-command beginner path

# 1) Verify capstone exists
test -f release-evidence/capstone/NOVEMBER_CLOSEOUT_CAPSTONE.json

# 2) Run crosswalk script (below)
./scripts/verify_november_closeout.sh

# 3) Read exit code — must be 0
echo $?

# 4) Optional: print unified build_label
jq -r '.expected_build_label' release-evidence/capstone/NOVEMBER_CLOSEOUT_CAPSTONE.json

# 5) Set BUILD_RECEIPT november_closeout_ok after pass

Success check: Script prints OK: all child build_label match fest-demo-2026-11-rc4.

Developer path — gates J1–J6

Gate Check Pass when
J1 november_closeout_capstone_v1.json pinned expected_build_label set
J2 All ten receipt_paths exist on disk bash test -f
J3 Each child *_ok or gate pass field true Per-schema jq
J4 build_label jq unified verify_november_closeout.sh exit 0
J5 Prior arc pointers exist 265, 253, 223 paths
J6 Capstone november_closeout_ok: true BUILD_RECEIPT column

november_closeout_capstone_v1.json

Pin at release-evidence/capstone/NOVEMBER_CLOSEOUT_CAPSTONE.json:

{
  "schema": "november_closeout_capstone_v1",
  "expected_build_label": "fest-demo-2026-11-rc4",
  "arc_lessons": ["266", "267", "268", "269", "270", "271", "272", "273", "274", "275", "276"],
  "receipts": {
    "266": "whisper_issue_tag_receipt_v1.json",
    "267": "playtest_csv_ingest_receipt_v1.json",
    "268": "ci_cancel_safe_receipt_v1.json",
    "269": "vdf_line_ending_receipt_v1.json",
    "270": "gm_steam_setlive_dry_run_receipt_v1.json",
    "271": "blender_glb_mirror_receipt_v1.json",
    "272": "steampipe_wall_clock_receipt_v1.json",
    "273": "playtest_vod_loudness_spot_receipt_v1.json",
    "274": "unreal_otlp_diligence_receipt_v1.json",
    "275": "fmod_menu_snapshot_spot_receipt_v1.json"
  },
  "receipt_paths": {
    "266": "release-evidence/playtest/whisper/WHISPER_ISSUE_TAG_RECEIPT.json",
    "267": "release-evidence/playtest/csv/PLAYTEST_CSV_INGEST_RECEIPT.json",
    "268": "release-evidence/ci/CI_CANCEL_SAFE_RECEIPT.json",
    "269": "release-evidence/steam/vdf/VDF_LINE_ENDING_RECEIPT.json",
    "270": "release-evidence/steam/setlive/GM_STEAM_SETLIVE_DRY_RUN_RECEIPT.json",
    "271": "release-evidence/art/blender/BLENDER_GLB_MIRROR_RECEIPT.json",
    "272": "release-evidence/steam/upload/STEAMPIPE_WALL_CLOCK_RECEIPT.json",
    "273": "release-evidence/audio/loudness/PLAYTEST_VOD_LOUDNESS_SPOT_RECEIPT.json",
    "274": "release-evidence/telemetry/UNREAL_OTLP_DILIGENCE_RECEIPT.json",
    "275": "release-evidence/audio/menu-snapshot/FMOD_MENU_SNAPSHOT_SPOT_RECEIPT.json"
  },
  "prior_arc_pointers": {
    "265": "release-evidence/capstone/OCTOBER_OPS_TRUTH_CAPSTONE.json",
    "253": "release-evidence/capstone/Q4_PLAYTEST_SCALE_CAPSTONE.json",
    "223": "release-evidence/capstone/H2_FEST_HARDENING_CAPSTONE.json"
  },
  "gates": {
    "J1_capstone_pinned": "pass",
    "J2_paths_exist": "pass",
    "J3_child_ok_fields": "pass",
    "J4_build_label_unified": "pass",
    "J5_prior_arcs": "pass",
    "J6_receipt": "pass"
  },
  "november_closeout_ok": true,
  "december_freeze_allowed": true
}

Set december_freeze_allowed: true only after December defer receipt H5 passes on same expected_build_label.

verify_november_closeout.sh (bash + jq)

Save under scripts/verify_november_closeout.sh:

#!/usr/bin/env bash
set -euo pipefail

CAPSTONE="${1:-release-evidence/capstone/NOVEMBER_CLOSEOUT_CAPSTONE.json}"

if [[ ! -f "$CAPSTONE" ]]; then
  echo "MISSING capstone: $CAPSTONE" >&2
  exit 4
fi

EXP=$(jq -r '.expected_build_label' "$CAPSTONE")
if [[ -z "$EXP" || "$EXP" == "null" ]]; then
  echo "MISSING expected_build_label" >&2
  exit 2
fi

# J2 — paths exist
while IFS= read -r path; do
  [[ -z "$path" ]] && continue
  if [[ ! -f "$path" ]]; then
    echo "MISSING child: $path" >&2
    exit 3
  fi
done < <(jq -r '.receipt_paths | to_entries[] | .value' "$CAPSTONE")

# J4 — build_label unified
while IFS= read -r path; do
  [[ -z "$path" ]] && continue
  LABEL=$(jq -r '.build_label // empty' "$path")
  if [[ "$LABEL" != "$EXP" ]]; then
    echo "MISMATCH: $path has build_label=$LABEL expected=$EXP" >&2
    exit 1
  fi
done < <(jq -r '.receipt_paths | to_entries[] | .value' "$CAPSTONE")

# J5 — prior arcs
for key in 265 253 223; do
  PP=$(jq -r --arg k "$key" '.prior_arc_pointers[$k] // empty' "$CAPSTONE")
  if [[ -n "$PP" && ! -f "$PP" ]]; then
    echo "MISSING prior arc $key: $PP" >&2
    exit 5
  fi
done

echo "OK: all child build_label match $EXP"
exit 0
chmod +x scripts/verify_november_closeout.sh
./scripts/verify_november_closeout.sh

GitHub Actions CI gate (working dev)

  verify-november-closeout:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install jq
        run: sudo apt-get update && sudo apt-get install -y jq
      - name: November closeout crosswalk
        run: ./scripts/verify_november_closeout.sh
      - name: Capstone boolean gate
        run: |
          jq -e '.november_closeout_ok == true' \
            release-evidence/capstone/NOVEMBER_CLOSEOUT_CAPSTONE.json

Pair concurrency cancel patterns so verify job does not race Addressables build.

PowerShell variant (Windows CI / local)

$Capstone = "release-evidence/capstone/NOVEMBER_CLOSEOUT_CAPSTONE.json"
if (-not (Test-Path $Capstone)) { Write-Error "MISSING capstone"; exit 4 }

$Exp = (Get-Content $Capstone -Raw | ConvertFrom-Json).expected_build_label
$paths = Get-Content $Capstone -Raw | ConvertFrom-Json
foreach ($p in $paths.receipt_paths.PSObject.Properties.Value) {
  if (-not (Test-Path $p)) { Write-Error "MISSING child: $p"; exit 3 }
  $child = Get-Content $p -Raw | ConvertFrom-Json
  if ($child.build_label -ne $Exp) {
    Write-Error "MISMATCH: $p has $($child.build_label) expected $Exp"
    exit 1
  }
}
Write-Host "OK: all child build_label match $Exp"
exit 0

Use the same exit code table as bash—producers on Windows laptops can audit before push without WSL.

Partial cluster honesty (advanced)

If lessons 269–275 are still in flight, do not set november_closeout_ok: true. Instead:

{
  "deferred_children": ["269", "270", "271", "272", "273", "274", "275"],
  "november_closeout_ok": false,
  "december_freeze_allowed": false,
  "notes": "266–268 GREEN only; capstone jq blocked until VDF LF evening ships"
}

Partners prefer honest partial JSON over a false GREEN capstone. Remove deferred_children entries as each lesson lands; re-run verify_november_closeout.sh when list empty.

BUILD_RECEIPT root row (after J6)

{
  "build_label": "fest-demo-2026-11-rc4",
  "november_closeout_ok": true,
  "november_closeout_capstone_path": "release-evidence/capstone/NOVEMBER_CLOSEOUT_CAPSTONE.json",
  "october_ops_truth_ok": true,
  "holiday_defer_ok": true
}

Thursday row review diff should show november_closeout_ok flip only after verify script exit 0—not when capstone JSON hand-edited.

Troubleshooting matrix

Symptom Exit Lane
MISMATCH: ... rc3 expected rc4 1 Re-file stale child receipt
MISSING child: ... 3 Fix receipt_paths or ship lesson
MISSING prior arc 265 5 Run October capstone first
jq null build_label 1 Child schema missing field
CI passes locally fails Path separators or wrong working directory
Capstone OK but smoke fails Wednesday smoke—orthogonal gate

jq recipes — per-child pass field (J3)

Map each schema's OK boolean—adjust if your child receipt uses different keys:

CAP=release-evidence/capstone/NOVEMBER_CLOSEOUT_CAPSTONE.json

check_ok() {
  local path="$1" field="$2"
  jq -e --arg f "$field" '.[$f] == true' "$path" >/dev/null \
    || { echo "FAIL $field in $path"; exit 1; }
}

check_ok release-evidence/playtest/whisper/WHISPER_ISSUE_TAG_RECEIPT.json whisper_issue_tag_ok
check_ok release-evidence/ci/CI_CANCEL_SAFE_RECEIPT.json ci_cancel_safe_ok
# ... repeat for 267–275 pass fields

Optional: Encode pass_field per lesson in capstone JSON receipts_meta[] for generic loop—Lesson 276 forward may standardize.

Proof table

Evidence Proves Fail signal
NOVEMBER_CLOSEOUT_CAPSTONE.json Index + expected label Missing file
verify_november_closeout.sh log J4 unified label Exit 1 mismatch
CI job green Promote discipline Skipped job
november_closeout_ok on BUILD_RECEIPT Producer sign-off Manual true without script
Prior arc paths Arc continuity Orphan November cluster

Scenarios A–H

ID Situation Playbook move
A Only 266–268 done Partial capstone—list missing lessons in deferred_children[]
B Hotfix bumps label Re-run all child receipts; bump capstone version
C One child missing build_label Fail J4; add field before promote
D October 265 stale Refresh pointer path only—do not merge schemas
E December freeze same week J4 then defer H2
F Monorepo multiple SKUs expected_build_label per SKU capstone file
G Windows paths in JSON Normalize forward slashes for CI
H Lesson 276 ships Blog sketch = preflight; lesson = BUILD_RECEIPT milestone

Relationship to October capstone (format ladder)

Field October Lesson 265 November (this sketch)
Schema october_ops_truth_capstone_v1 november_closeout_capstone_v1
Children 254–264 (11 receipts) 266–275 (10 receipts)
jq script Team-specific verify_november_closeout.sh
BUILD_RECEIPT october_ops_truth_ok november_closeout_ok
Next freeze Store metadata December defer

November close-out week calendar

Day Crosswalk action
Monday Collect child receipt paths into capstone draft
Tuesday CSV ingest + label check
Wednesday Demo smoke on expected_build_label
Thursday Row review + run verify_november_closeout.sh
Friday File capstone; run Friday capstone row review; set december_freeze_allowed
Before Dec 20 Defer receipt FREEZE

Counterarguments (honest limits)

"We only have six lessons done."
Partial clusters fail J2—honest defer until 266–275 complete or document waived_lessons[] with producer sign-off (not default).

"Manual Discord audit is enough."
jq takes three minutes—cheaper than partner call embarrassment.

"Same as October capstone copy-paste."
Different child schemas and paths—reuse pattern, not JSON blob.

Key takeaways

  1. November close-out needs one jq proof—not eleven manual JSON opens.
  2. november_closeout_capstone_v1.json indexes 266–275 child paths.
  3. verify_november_closeout.sh enforces J4 build_label unity.
  4. Exit codes 0–5 map to actionable fixes for beginners.
  5. Prior pointers 265, 253, 223 prevent orphan arcs.
  6. Lesson 276 forward BUILD_RECEIPT milestone follows this sketch.
  7. December defer assumes J4 GREEN before FREEZE.
  8. Thursday row review lists November capstone beside October.
  9. CI gate blocks promote on jq fail—pair concurrency patterns.
  10. Child pass fields differ per schema—J3 loop must map each *_ok key.
  11. jq rclone mirror cousin for diligence paths—not label crosswalk.
  12. Friday capstone row review latches december_freeze_allowed before freeze.
  13. December engineering floor cap for contractor blackout hours.
  14. Hotfix label bump requires all children refreshed—not capstone-only edit.
  15. december_freeze_allowed is capstone field—tie to defer receipt same week.

FAQ

Is this Lesson 276?
276 owns BUILD_RECEIPT milestone + N1–N11 gates; this blog owns copy-paste jq sketch and verify_november_closeout.sh.

How is this different from October Lesson 265?
265 wires 254–264 ops receipts; this wires 266–275 playtest-triage receipts.

Do all ten children need to exist?
Strict J2 yes—for partial November arcs, document waivers explicitly (not recommended for partner zip).

What jq version?
jq 1.6+ on Ubuntu CI; Windows use Git Bash or WSL for script.

Can I use Node instead of bash?
Yes—receipt culture needs reproducible exit codes; bash+jq is lowest dependency.

What if child uses fest_build_label not build_label?
Normalize in child receipts—capstone jq expects .build_label (alias in export script).

Does this run on every commit?
Run on promote branches and pre-freeze tags—not every doc edit.

Where does winter capsule fit?
Art-only upload—does not change build_label if scenario G; still run J4 if any child bumped.

Will jq gate guarantee fest success?
No—it prevents label schizophrenia in evidence folders—execution quality still varies.

Which blog evenings map to child lessons? Lesson Evening / strategy cousin
266 Whisper tag extraction
267 Tuesday CSV ritual
268 12 concurrency patterns
269 Godot VDF LF evening
270 GameMaker setlive evening
271 Blender glb mirror evening
272 SteamPipe wall-clock trend
273 Audacity loudness evening
274 Unreal OTLP case study
275 FMOD five-night challenge

Capstone jq verifies paths and labels—child implementation stays in lessons and cousin blogs.

Closing read (November 2026)

Fest close-out is not "every receipt GREEN in chat." It is one machine-readable proof that the same build_label flows from Whisper tags through VDF LF proofs to FMOD menu spots—before December freeze locks scope.

Micro-studios that pin verify_november_closeout.sh enter holiday defer with capstone evidence partners can jq-verify in thirty seconds. Teams that skip jq learn about rc3 vs rc4 on the first January promote.

Start with expected_build_label and ten paths—run the script before Thursday row review.

Found this useful? Add the CI job beside your Addressables build—not after the holiday hotfix.