Lesson 220: Playtest VOD Facilitator Concat Batch Receipt for Whisper Triage (2026)

Direct answer: Before a multi-session Whisper batch, file facilitator_vod_batch_receipt_v1.json proving every facilitator session in batch_manifest.csv has honest concat_ok on playtest_vod_triage_receipt_v1.json (or a paired ffmpeg_concat_decision_receipt when merge failed)—then set whisper_batch_allowed: true only on the batch aggregate row. This is the H2 BUILD_RECEIPT milestone after Lesson 219, distinct from Lesson 200 (single merge) and Lesson 207 (path when concat fails).

Lesson hero for playtest VOD facilitator concat batch receipt

Why this matters now (August 2026 facilitator batch week)

August 2026 fest playtests run three facilitators × two evenings—ops drops twelve MKV folders into one whisper-batch.ps1 run. OBS ffprobe preflight defines concat_ok per session; 16-free OBS/ffmpeg tools lists the stack—but nobody owns batch-level honesty when session 2 failed concat and session 4 used per-clip Whisper without updating triage receipts.

Blog When ffmpeg concat fails is the decision tree; planned help #5 fixes MKV concat—this lesson wires facilitator_vod_batch_receipt_v1.json on BUILD_RECEIPT before overnight triage (pairs Lesson 206 facilitator SOW).

Beginner path (batch manifest + per-session concat)

Step Action Success check
1 One folder per facilitator session playtest-vod/sessions/<id>/
2 Run normalize + concat per session merged_playtest.wav each
3 File triage receipt per session concat_ok honest
4 Build batch_manifest.csv All rows session_concat_ok
5 File facilitator_vod_batch_receipt_v1.json batch_whisper_allowed: true
6 Thursday row review playtest_vod_batch column GREEN

Time: ~25 min per session × 2 sessions + 20 min manifest—70 minutes first two-session batch.

Developer path (gates B1–B6)

Gate Check Fail when
B1 facilitator_id + build_label pinned Mismatch vs Lesson 206 SOW
B2 batch_manifest.csv complete Missing session row
B3 Per-session concat_ok or decision receipt Silent concat_ok: true after failed merge
B4 ffprobe_concat_ok_fragment linked each session No sha256 on ffprobe table
B5 whisper_batch_allowed policy on batch Batch true while any session false
B6 BUILD_RECEIPT playtest_vod_batch row Ops runs Whisper without batch receipt

batch_manifest.csv (B2)

Column Example Rule
session_id fac-02-2026-08-03-eve Unique
facilitator_id fac-02 Matches contract
surface steam_playtest From SOW
fragment_count 4 Matches folder
concat_ok true From triage receipt
decision_receipt_path "" or path Required when concat_ok false
triage_receipt_path playtest-vod/sessions/.../triage.json Relative to evidence root
merged_wav_sha256 sha256:... After concat

concat_ok on playtest_vod_triage_receipt_v1.json (batch column)

Extend the triage receipt with a batch block (do not overwrite per-session truth):

{
  "schema": "playtest_vod_triage_receipt_v1",
  "build_label": "fest-demo-2026-08-03-rc1",
  "surface": "steam_playtest",
  "concat_ok": true,
  "whisper_batch_allowed": true,
  "ffprobe_concat_ok_fragment": "playtest-vod/sessions/fac-02-eve/ffprobe_concat_ok_fragment_v1.json",
  "facilitator_batch": {
    "batch_id": "batch-2026-08-03-fac-02",
    "session_count": 2,
    "all_sessions_concat_ok": true,
    "facilitator_vod_batch_receipt": "release-evidence/playtest/FACILITATOR_VOD_BATCH_RECEIPT.json"
  }
}

When one session has concat_ok: false, set whisper_batch_allowed: false on the batch receipt until Lesson 207 documents chosen_path and post_path_concat_ok (or exclude that session from batch with facilitator sign-off).

facilitator_vod_batch_receipt_v1.json

{
  "schema": "facilitator_vod_batch_receipt_v1",
  "build_label": "fest-demo-2026-08-03-rc1",
  "batch_id": "batch-2026-08-03-fac-02",
  "facilitator_id": "fac-02",
  "contract_receipt_path": "release-evidence/playtest/facilitator_contract_receipt_v1.json",
  "batch_manifest_csv": "playtest-vod/batch_manifest.csv",
  "sessions": [
    {
      "session_id": "fac-02-2026-08-03-eve",
      "concat_ok": true,
      "triage_receipt_path": "playtest-vod/sessions/fac-02-eve/triage.json",
      "merged_wav_sha256": "sha256:REPLACE"
    },
    {
      "session_id": "fac-02-2026-08-04-eve",
      "concat_ok": true,
      "triage_receipt_path": "playtest-vod/sessions/fac-02-eve2/triage.json",
      "merged_wav_sha256": "sha256:REPLACE"
    }
  ],
  "batch_whisper_allowed": true,
  "whisper_model": "large-v3",
  "consent_readme_present": true,
  "gates": {
    "B1_facilitator_build_label": "pass",
    "B2_manifest": "pass",
    "B3_per_session_concat": "pass",
    "B4_ffprobe_linked": "pass",
    "B5_batch_whisper_policy": "pass",
    "B6_build_receipt": "pass"
  }
}

Pin under release-evidence/playtest/FACILITATOR_VOD_BATCH_RECEIPT.json.

Proof table (two-session batch)

session_id concat_ok decision receipt batch_whisper_allowed
fac-02-eve true n/a
fac-02-eve2 true n/a
batch all true true only if both pass

BUILD_RECEIPT row

Column Green value
playtest_vod_batch facilitator_vod_batch_receipt_v1
batch_whisper_allowed true
concat_ok_aggregate true

Cross-link Thursday row review after Wednesday smoke.

Key takeaways

  1. One batch receipt does not replace per-session triage receipts.
  2. concat_ok must be per session—never average failures away.
  3. batch_manifest.csv is the facilitator-facing audit artifact.
  4. Failed concat → Lesson 207 path before batch whisper_batch_allowed.
  5. OBS E-gates supply ffprobe columns.
  6. Local Whisper pipeline runs only after batch gate passes.
  7. 16-tool listicle is prep, not batch policy.
  8. Facilitator contract VERSION must match B1 build_label.
  9. Cloud Whisper requires consent_readme_present on batch receipt.
  10. H2 capstone 223 wired fest hardening; Q1 224 owns MKV gap reencode on BUILD_RECEIPT when session merge is short.

Common mistakes

  • One concat_ok: true on batch JSON while a session folder has no merged WAV.
  • Mixing facilitators in one batch without separate receipts.
  • Running Whisper on folder tree before B2 manifest exists.
  • Using per-clip transcripts but tagging issues with wrong session_id.
  • Skipping ffprobe_table_sha256 on session 2 because session 1 passed.

Troubleshooting

Symptom Lane
Batch blocked, one session red Fix session; re-file triage; refresh manifest
concat_ok false, urgent triage OBS MKV gap reencode preflight + Lesson 207 + help #5 (planned)
ffprobe columns missing OBS guide E2
Facilitator VERSION drift Lesson 206 contract receipt

Mini exercise (65 minutes)

  1. Seed two session folders with three fragments each.
  2. Pass E-gates + concat per session; file triage receipts.
  3. Author batch_manifest.csv with honest concat_ok.
  4. Deliberately fail session 2 concat—confirm B5 blocks batch Whisper.
  5. Recover with reencode_concat; refresh batch receipt; update BUILD_RECEIPT.

Continuity — H2 2026 arc (218–223)

Lesson Receipt focus
218 Deck static menu
219 Addressables fest string tables
220 (this) Facilitator VOD concat batch
221 Facilitator amendment
222–223 HTML5 + capstone

Previous: Lesson 219 — Addressables string table fest receipt
Next: Lesson 221 — multi-channel facilitator amendment.

FAQ

Same as Lesson 200?
200 is one merge gate; 220 is N sessions under one facilitator batch with facilitator_vod_batch_receipt.

Same as Lesson 207?
207 picks a path when one concat fails; 220 requires every session resolved before batch Whisper.

Can sessions use different Whisper models?
Document per-session overrides in manifest notes—default one whisper_model on batch receipt unless compliance requires split.

October fest only?
Hook is August 2026 multi-facilitator batches; discipline applies whenever batching VOD triage.

What if VERSION changes mid-batch?
Invalidate affected sessions in the batch receipt; file Lesson 221 amendment before re-running Whisper.


A batch Whisper job without facilitator_vod_batch_receipt_v1.json is not “faster triage”—it is unaccountable mixing of broken and healthy sessions.