Publishing & Deployment Issues Jul 13, 2026

Post-Fest Debrief Facilitator Card Empty After Closeout Annex Path Index Missing - How to Fix

Fix post-fest debrief facilitator card empty when Sunday closeout jsonl_annex path index is missing. Rebuild annex_index.json, normalize paths, post_fest_debrief_facilitator_receipt_v1 annex_index_ok, BUILD_RECEIPT post_fest_debrief_card_ok for March 2027.

By GamineAI Team

Post-Fest Debrief Facilitator Card Empty After Closeout Annex Path Index Missing - How to Fix

Problem: Sunday February fest closeout filed february_fest_closeout_ok and post_fest_debrief_allowed: true, but Monday’s printable facilitator card shows an empty annex table, 404 paths, or CI verify_post_fest_debrief_facilitator exits 3 on missing files. Partners ask for hour-one CSV or OBS pager receipts; facilitation freezes.

Who is affected now: Teams in the March 2027 post-fest debrief sprint running Monday facilitator card evening or the OBS annex→card preflight (Guide #43). This is path-index recovery after a GREEN closeout, not empty-annex partner-review theater when jsonl_annex[] was never filled, and not live-week HOTFIX / setlive gates.

Fastest safe fix: Re-export annex_index.json from Sunday jsonl_annex[] → normalize every path to the evidence root → run the D3 path walk → refresh post_fest_debrief_facilitator_receipt_v1.json with annex_index_ok: true → regenerate the card → set BUILD_RECEIPT post_fest_debrief_card_ok: true.

Direct answer

An empty or broken Monday card means closeout indexed evidence that the card exporter cannot resolve—not that Sunday C1–C10 failed. Rebuild the annex path index from the committed closeout receipt, make paths real on this machine/CI runner, then re-file the facilitator receipt. Do not invent annex rows to fill the table.

Why this issue spikes in March 2027 Monday debrief

  1. Sunday ≠ Monday-readypost_fest_debrief_allowed proves closeout ran; post_fest_debrief_card_ok proves paths still resolve for the call.
  2. Repo tidy Monday AM — engineers move release-evidence/ after the closeout commit; absolute laptop paths die.
  3. Hand-edited annex_index — someone “fixed” a row and dropped path keys.
  4. Wrong schema — March card jq expects February closeout shape but reads a pre-closeout stub.
  5. OBS annex skipped — funnel CSV row exists; pager clip receipt path drifted—partners challenge VOD first.

Symptoms and search phrases

  • Facilitator card annex table blank / “no paths.”
  • verify_post_fest_debrief_facilitator exit 3 / MISSING: release-evidence/....
  • post_fest_debrief_card_ok false while post_fest_debrief_allowed true.
  • annex_index.json length 0 or rows without "path".
  • Partner: “Where is the jq hourly jsonl for D5?” while closeout receipt is GREEN.
  • Render script wrote only Call metadata—no Block B rows.

Root causes (check in order)

  1. Never extracted D2 — closeout GREEN; annex_index.json never written (Guide #43 D2).
  2. Stale annex — index from a pre-closeout branch still in post-fest/debrief/.
  3. Missing path keys — schema drift / partial jq select.
  4. Relative path drift — cwd changed; paths were cwd-relative, not evidence-root-relative.
  5. Absolute Windows paths on Linux CI — runner cannot test -f C:\Users\....
  6. Truly empty jsonl_annex[] — different failure → empty annex case study; re-run Sunday C5–C8 first.
  7. Bool flipped without path walk — theater GREEN; verify still fails.

Beginner path (first 20 minutes)

Prerequisites: Sunday closeout receipt on disk, jq, write access to release-evidence/post-fest/debrief/, Monday tutorial or Guide #43 open.

  1. Confirm closeout is real (not a stub):
jq -e '.post_fest_debrief_allowed == true and (.jsonl_annex | length >= 2)' \
  release-evidence/february-live/FEBRUARY_FEST_CLOSEOUT_RECEIPT.json
  1. Rebuild the index from that file (overwrite stale copies):
mkdir -p release-evidence/post-fest/debrief
jq '.jsonl_annex' release-evidence/february-live/FEBRUARY_FEST_CLOSEOUT_RECEIPT.json \
  > release-evidence/post-fest/debrief/annex_index.json
  1. Open annex_index.json—every row needs a path. If a path is absolute to another machine, rewrite to release-evidence/... under the repo.
  2. Run the path walk (below). Fix any MISSING lines by restoring files or correcting the path string—do not delete the annex row.
  3. Re-render the facilitator card → refresh receipt → set post_fest_debrief_card_ok.

Common mistake: Hand-typing annex rows from memory to “look full”—partners spot path/hash mismatch; use Sunday’s jsonl_annex[] only.

Fastest safe fix path

Step 1 — Prove Sunday annex exists (not empty theater)

jq '.jsonl_annex | length' release-evidence/february-live/FEBRUARY_FEST_CLOSEOUT_RECEIPT.json
jq -r '.jsonl_annex[] | "\(.key)\t\(.path)"' \
  release-evidence/february-live/FEBRUARY_FEST_CLOSEOUT_RECEIPT.json

If length is 0: stop—this help cannot invent evidence. Follow empty annex recovery / re-run Sunday closeout C5–C8.

Step 2 — Rebuild annex_index.json (D2)

Always re-extract from the committed closeout receipt:

jq '.jsonl_annex' release-evidence/february-live/FEBRUARY_FEST_CLOSEOUT_RECEIPT.json \
  > release-evidence/post-fest/debrief/annex_index.json
jq -e 'all(.[]; has("path") and (.path|length) > 0)' \
  release-evidence/post-fest/debrief/annex_index.json

Fail: repair closeout jsonl_annex[] first—do not patch only the card renderer.

Step 3 — Normalize paths to evidence root

Pick one root (repo-relative) and rewrite:

# Example: strip drive / home prefixes so CI and laptops share strings
jq '[.[] | .path = (.path
  | sub("^.*release-evidence/"; "release-evidence/")
  | sub("^\\\\"; "")
)]' release-evidence/post-fest/debrief/annex_index.json \
  > release-evidence/post-fest/debrief/annex_index.normalized.json \
&& mv release-evidence/post-fest/debrief/annex_index.normalized.json \
     release-evidence/post-fest/debrief/annex_index.json

PowerShell spot-check:

$idx = Get-Content release-evidence/post-fest/debrief/annex_index.json -Raw | ConvertFrom-Json
$idx | ForEach-Object { "{0}`t{1}" -f $_.key, $_.path }

Prefer including at least one OBS/pager key when live week filed clips (Guide #43 D2 WARN).

Step 4 — Path walk (D3) until exit 0

#!/usr/bin/env bash
set -euo pipefail
INDEX="${1:-release-evidence/post-fest/debrief/annex_index.json}"
while IFS= read -r path; do
  test -f "$path" || { echo "MISSING: $path"; exit 1; }
done < <(jq -r '.[].path' "$INDEX")
echo "annex paths: OK"

Restore missing artifacts from backup / diligence zip, or correct the path string to where the file actually lives—then re-hash.

Step 5 — Receipt + card + BUILD_RECEIPT

  1. Re-render post_fest_debrief_facilitator_card.md from the fixed index (Monday D4 / Guide #43 D4).
  2. Update POST_FEST_DEBRIEF_FACILITATOR_RECEIPT.json:
{
  "schema": "post_fest_debrief_facilitator_receipt_v1",
  "annex_index_path": "release-evidence/post-fest/debrief/annex_index.json",
  "annex_index_sha256": "…recomputed…",
  "annex_index_ok": true,
  "gates": {
    "D2_annex_index": "pass",
    "D3_paths_exist": "pass",
    "D4_card_generated": "pass",
    "D5_card_hash": "pass",
    "D6_receipt": "pass"
  },
  "post_fest_debrief_card_ok": true
}
  1. Latch BUILD_RECEIPT:
jq -e '.post_fest_debrief_card_ok == true' release-evidence/BUILD_RECEIPT.json
bash scripts/verify_post_fest_debrief_facilitator.sh

Verification

Check Pass when
Closeout cousin post_fest_debrief_allowed true; jsonl_annex length ≥ 2
Index annex_index.json row count == closeout jsonl_annex length
Keys Every row has non-empty path
Path walk Exit 0; no MISSING
Card Annex table lists every key; spot-check open ≥1 path
OBS spot (recommended) ≥1 pager/clips/obs/replay key when live week used OBS
Verify script Exit 0
BUILD_RECEIPT post_fest_debrief_card_ok: true

Alternative fixes (edge cases)

Branch A — Closeout GREEN, annex truly empty

Not this article’s primary path. Restore annex during Sunday closeout (case study); then return here for card export.

Branch B — Paths OK locally, CI exit 3

CI clone missing LFS / large evidence files. Commit small receipts under release-evidence/ or fetch the diligence zip on the runner before verify.

Branch C — Card full, partner still 404

Printed PDF captured old relative links. Re-export after D5 hash; attach card sha256 in the invite (Monday tutorial).

Branch D — OBS pager path only missing

Funnel rows resolve; VOD claim fails. Restore pager receipt / clips_index path into closeout annex, re-extract D2–D6.

Branch E — Schema assumes February keys on March stub

Wrong file opened (november_closeout or draft). Point scripts at FEBRUARY_FEST_CLOSEOUT_RECEIPT.json for this fest window.

Prevention

  • Pin annex_index_sha256 on BUILD_RECEIPT Sunday night after D2–D3 (Guide #43).
  • Store evidence-root-relative paths only—no machine-absolute strings in committed index.
  • Wire verify_post_fest_debrief_facilitator.sh as a required check before Monday invite sends.
  • Do not tidy release-evidence/ trees Monday morning before the partner call.
  • Prefer Guide #43 ninety-second gate after every Sunday closeout.

Related problems

FAQ

Closeout passed—why is the card empty?
Closeout latches post_fest_debrief_allowed. The card needs a separate annex index + path walk and post_fest_debrief_card_ok.

Can we paste paths from Slack into the card?
No—rebuild from Sunday jsonl_annex[] so hashes and verify scripts stay honest.

Is this the same as the empty-annex case study?
No—case study = no annex rows. This page = annex exists but export/index/paths broke.

Do we need OBS rows?
Strongly recommended if live week used pager/Replay Buffer; partners challenge VOD claims first.

Bookmark this page for Monday debrief mornings. Share it with the facilitator if Sunday was GREEN and the card still prints blank.


Monday debrief cards stay empty until annex_index.json matches Sunday jsonl_annex[], every path resolves, and verify exit 0—then latch post_fest_debrief_card_ok and start the call.