Post-Fest Whisper Batch Handoff From february_live_whisper Triage Clips Index - 2026 Strategy

Monday W10: Friday March capstone set april_content_update_allowed: true and forward_whisper_handoff to a path that does not exist yet. playtest-vod/february-live/deferred/ holds forty-seven clips someone labeled “run January batch.” January holiday batch strategy sorts by capture_date from December inbox—not by deferred_to_post_fest_batch[] rows that February same-day triage filed with fest_day and build_label lineage.
March 2027 post-fest sprint inherits clips_index[] from february_live_whisper_triage_receipt_v1.json—P1/P2/P3 clips deliberately deferred during D1–D7 so P0 could ship same-day. Teams that restart with January JB1–JB3 calendar transcribe stale menu tours while progression soft-locks from D4 wait behind holiday P2 rows. Whisper tag map opens GitHub issues on summaries without handoff transcripts; Monday debrief facilitator annex cites empty whisper_clips_index.
This AI Integration / Workflow strategy defines post-fest batch handoff: consume clips_index[] from February live-week triage, apply handoff W1–W6 gates (distinct schema from same-day and January batch), file post_fest_whisper_handoff_receipt_v1.json, set BUILD_RECEIPT post_fest_whisper_handoff_ok: true—closing March cluster #1–#12 with honest playtest drain order after capstone latch.
Non-repetition note: February same-day owns P0-only D1–D7 (february_live_whisper_triage_receipt_v1). January batch owns holiday inbox P0–P3 (january_whisper_batch_receipt_v1). Whisper tags owns GitHub quote discipline. This URL owns clips_index[] inheritance + post-fest drain order (post_fest_whisper_handoff_receipt_v1).
Pair Sunday February closeout, 7-day evidence sprint, Audacity loudness evening, Loudness preflight Guide #35, Lesson 273, and local Whisper pipeline.
Why this matters now (March 2027 post-fest sprint)
deferred_to_post_fest_batch[]is the queue — February same-day triage named what to drain after fest—not a fresh inbox sort.- January batch wrong schema — Holiday receipt uses
inbox_manifest[]from December paths; handoff needsclips_index[]withfest_day+source_receipt. - Capstone pointer — Friday March capstone
forward_whisper_handoffexpects this receipt before April engineering focuses on Addressables. - Tag map timing — Whisper tags after handoff transcripts—not on facilitator paraphrase from live week.
- October prep distraction — October RC label evening competes for GPU nights—undrained
clips_index[]becomes summer scope creep.
Direct answer: After March capstone GREEN, import clips_index[] from february_live_whisper_triage_receipt_v1.json (and Sunday closeout annex pointer); sort P1→P2→P3 by fest_day then priority; run loudness spot on P1/P2 batches; file post_fest_whisper_handoff_receipt_v1.json with W1–W6 pass; set post_fest_whisper_handoff_ok: true only when handoff queue is empty or waived with producer note.
Who this strategy is for
| Audience | Outcome |
|---|---|
| Solo founder | One-week post-fest drain plan without re-inventing January calendar |
| Facilitator | Handoff manifest with fest_day + build_label preserved |
| Producer | Receipt proving deferred clips consumed before April content sprint |
| Working dev | verify_post_fest_whisper_handoff.sh fail-closed before tag-map burst |
Time: ~90 minutes first handoff inventory + receipt; ~45–60 minutes per GPU batch night.
Prerequisites: February same-day triage filed; Sunday closeout clips_index[] annex; March capstone forward_whisper_handoff path set.
Format ladder — Whisper cluster (four receipts)
| Artifact | Window | Schema | Primary output |
|---|---|---|---|
| January batch | Holiday inbox | january_whisper_batch_receipt_v1 |
january_whisper_batch_ok |
| February same-day | D1–D7 P0 | february_live_whisper_triage_receipt_v1 |
february_live_whisper_p0_ok + deferred_to_post_fest_batch[] |
| Post-fest handoff (this) | W10–W13 March | post_fest_whisper_handoff_receipt_v1 |
post_fest_whisper_handoff_ok |
| Whisper tags | After transcripts | whisper_issue_tag_receipt_v1 |
whisper_issue_tag_ok |
Rule: Handoff imports February clips_index[]—does not re-scan playtest-vod/inbox/holiday-2026/ unless producer documents orphan waiver in notes.
Beginner path — handoff rubric in 30 minutes
Step 1 — Load source clips_index (W1)
jq '.deferred_to_post_fest_batch, .same_day_manifest' \
release-evidence/ai/FEBRUARY_LIVE_WHISPER_TRIAGE_RECEIPT.json
Cross-check Sunday closeout annex whisper_clips_index path—paths must match or waiver documented.
Step 2 — Build handoff manifest (W2)
Copy into playtest-vod/post-fest/handoff-manifest-2027.md:
| fragment_id | fest_day | priority | build_label | deferred_reason | batch_night |
|---|---|---|---|---|---|
| fragment_menu_12 | D2 | P3 | february-fest-2027-live-rc3 | ui_nit | batch_3 |
| fragment_p1_04 | D4 | P1 | february-fest-2027-live-rc3-hotfix1 | soft_lock | batch_1 |
| fragment_p2_09 | D5 | P2 | february-fest-2027-live-rc3-hotfix1 | confusion | batch_2 |
Drain order: P1 → P2 → P3; within priority sort fest_day ascending (earlier fest day first).
Step 3 — Reject January batch sort (W3)
| January batch habit | Post-fest handoff rule |
|---|---|
Sort by capture_date only |
Sort by priority then fest_day |
| Mix holiday + fest clips | Only clips_index[] rows with source: february_live |
| JB3 Thursday calendar | Batch_1 first GPU night after capstone |
| Fresh inbox inventory | Import deferred rows—no re-classify without facilitator note |
Step 4 — Loudness before Whisper (W4)
Run Audacity loudness spot or Guide #35 preflight on P1/P2 merges:
ffmpeg -i batch_1_merged.wav -af loudnorm=I=-14:TP=-1:LRA=11 -f null -
W4 fail → fix concat path per OBS concat evening—not Whisper on silent merge.
Step 5 — Whisper batch nights (W5)
whisper batch_1_merged.wav --model medium --language en \
--output_dir playtest-vod/post-fest/transcripts/batch_1/
Max 8 sessions per night—log batch_night on each clips_index[] row when whisper_done: true.
Step 6 — File handoff receipt (W6)
./scripts/verify_post_fest_whisper_handoff.sh
jq -e '.post_fest_whisper_handoff_ok == true' \
release-evidence/ai/POST_FEST_WHISPER_HANDOFF_RECEIPT.json
Update BUILD_RECEIPT post_fest_whisper_handoff_ok and clips_index_remaining_count: 0.
Developer path — gates W1–W6 (handoff schema)
| Gate | Check | Fail when |
|---|---|---|
| W1 | clips_index[] imported from february_live_whisper_source_path |
Empty index without waiver |
| W2 | Every row has fest_day, priority, build_label, fragment_id |
Orphan clip without manifest row |
| W3 | drain_order is P1→P2→P3; no P3 before P1 complete |
January-style date-only sort detected |
| W4 | P1/P2 rows have loudness_spot_ok or documented skip |
Whisper on bad audio |
| W5 | transcript_path exists for completed rows |
whisper_done: true without file |
| W6 | post_fest_whisper_handoff_receipt_v1.json filed; capstone pointer resolves |
forward_whisper_handoff broken |
Align Lesson 273 loudness_spot_ok on BUILD_RECEIPT—lesson = milestone; this strategy = post-fest drain policy.
post_fest_whisper_handoff_receipt_v1.json (template)
{
"schema": "post_fest_whisper_handoff_receipt_v1",
"sprint_window": "2027-03-post-fest-sprint",
"generated_at": "2027-03-28T10:00:00Z",
"february_live_whisper_source_path": "release-evidence/ai/FEBRUARY_LIVE_WHISPER_TRIAGE_RECEIPT.json",
"march_capstone_pointer": "release-evidence/post-fest/MARCH_CAPSTONE_CLOSEOUT_RECEIPT.json",
"clips_index": [
{
"fragment_id": "fragment_p1_04",
"fest_day": "D4",
"priority": "P1",
"build_label": "february-fest-2027-live-rc3-hotfix1",
"deferred_reason": "soft_lock",
"source": "february_live",
"batch_night": "batch_1",
"loudness_spot_ok": true,
"whisper_done": true,
"transcript_path": "playtest-vod/post-fest/transcripts/batch_1/fragment_p1_04.txt",
"tag_map_done": false
},
{
"fragment_id": "fragment_menu_12",
"fest_day": "D2",
"priority": "P3",
"build_label": "february-fest-2027-live-rc3",
"deferred_reason": "ui_nit",
"source": "february_live",
"batch_night": "batch_3",
"loudness_spot_ok": true,
"whisper_done": false,
"transcript_path": null,
"tag_map_done": false
}
],
"drain_order": ["P1", "P2", "P3"],
"batches": [
{
"batch_id": "batch_1",
"priority_lane": "P1",
"whisper_model": "medium",
"device": "cuda",
"completed_utc": "2027-03-29T22:00:00Z"
}
],
"cousin_receipts": {
"february_same_day": "release-evidence/ai/FEBRUARY_LIVE_WHISPER_TRIAGE_RECEIPT.json",
"january_batch": "release-evidence/ai/JANUARY_WHISPER_BATCH_RECEIPT.json",
"whisper_tags": "release-evidence/ai/WHISPER_ISSUE_TAG_RECEIPT.json"
},
"gates": {
"W1": "pass",
"W2": "pass",
"W3": "pass",
"W4": "pass",
"W5": "yellow",
"W6": "pass"
},
"clips_index_remaining_count": 1,
"post_fest_whisper_handoff_ok": true,
"notes": "P3 batch_3 scheduled W13; waiver allows handoff_ok with remaining P3 if producer sign-off attached"
}
Pin under release-evidence/ai/POST_FEST_WHISPER_HANDOFF_RECEIPT.json.
BUILD_RECEIPT row
{
"post_fest_whisper_handoff_ok": true,
"post_fest_whisper_handoff_receipt": "release-evidence/ai/POST_FEST_WHISPER_HANDOFF_RECEIPT.json",
"clips_index_remaining_count": 0,
"february_live_whisper_p0_ok": true,
"march_capstone_closeout_ok": true
}
Fail-closed: If clips_index_remaining_count > 0 and no producer waiver in receipt notes, handoff gate fails before Whisper tag map.
verify_post_fest_whisper_handoff.sh
#!/usr/bin/env bash
set -euo pipefail
HAND="${1:-release-evidence/ai/POST_FEST_WHISPER_HANDOFF_RECEIPT.json}"
SRC="${2:-release-evidence/ai/FEBRUARY_LIVE_WHISPER_TRIAGE_RECEIPT.json}"
jq -e '.schema == "post_fest_whisper_handoff_receipt_v1"' "$HAND" || exit 1
jq -e '.february_live_whisper_source_path != null' "$HAND" || { echo "W1 fail"; exit 2; }
test -f "$SRC" || { echo "W1 fail: source missing"; exit 2; }
jq -e '
[.clips_index[] | select(.whisper_done == true)
| .transcript_path] | all(. != null)
' "$HAND" || { echo "W5 fail: whisper_done without transcript"; exit 5; }
jq -e '.drain_order == ["P1","P2","P3"]' "$HAND" || { echo "W3 fail: drain order"; exit 3; }
jq -e '.post_fest_whisper_handoff_ok == true' "$HAND" || exit 6
echo "post_fest_whisper_handoff verify: OK"
Exit codes: 1 schema, 2 W1 source, 3 W3 drain order, 4 W4 loudness, 5 W5 transcript, 6 W6 latch.
clips_index[] construction (from February receipt)
Merge these February same-day fields into handoff clips_index[]:
| Source field | Handoff column |
|---|---|
deferred_to_post_fest_batch[].fragment_id |
fragment_id |
deferred_to_post_fest_batch[].priority |
priority |
fest_day from parent receipt |
fest_day |
build_label from parent receipt |
build_label |
deferred_to_post_fest_batch[].reason |
deferred_reason |
| constant | source: "february_live" |
jq import sketch:
jq -s '
.[0] as $handoff |
.[1] as $feb |
$handoff | .clips_index = (
$feb.deferred_to_post_fest_batch | map(
. + {
fest_day: $feb.fest_day,
build_label: $feb.build_label,
source: "february_live",
whisper_done: false,
transcript_path: null
}
)
)
' POST_FEST_WHISPER_HANDOFF_RECEIPT.json FEBRUARY_LIVE_WHISPER_TRIAGE_RECEIPT.json
For multi-day fest, slurp all D1–D7 triage receipts or use Sunday closeout consolidated clips_index[] annex—handoff W1 accepts either path if documented in february_live_whisper_source_path.
March cluster integration (closes #1–#12)
| Backlog | URL | Handoff touchpoint |
|---|---|---|
| #1 Monday debrief | Facilitator card | whisper_clips_index annex row |
| #8 jq weekly | March sprint diff | Optional clips_index_remaining_count column |
| #11 Friday capstone | March capstone | forward_whisper_handoff → this receipt |
| #12 Handoff | This URL | W1–W6 + post_fest_whisper_handoff_ok |
March cluster #1–#12 closes when this receipt is GREEN and BUILD_RECEIPT latch set—next cluster requires Blog-Planner critical refill.
Comparison pack — three Whisper strategies
| Dimension | January batch | February same-day | Post-fest handoff (this) |
|---|---|---|---|
| Queue source | Holiday inbox | Live-week P0 inbox | deferred_to_post_fest_batch[] |
| Priority lanes | P0–P3 all weeks | P0 only same-day | P1→P2→P3 drain |
| Sort key | capture_date | fest_day + P0 SLA | priority + fest_day |
| Receipt schema | january_whisper_batch_receipt_v1 |
february_live_whisper_triage_receipt_v1 |
post_fest_whisper_handoff_receipt_v1 |
| BUILD_RECEIPT | january_whisper_batch_ok |
february_live_whisper_p0_ok |
post_fest_whisper_handoff_ok |
| When | January | D1–D7 | W10–W13 after capstone |
Worked example — synthesized handoff week
| Day | Action | Result |
|---|---|---|
| W10 Fri | March capstone GREEN | forward_whisper_handoff path set |
| W11 Mon | W1 import clips_index | 12 deferred rows from D2–D6 |
| W11 Tue | Batch_1 P1 Whisper | 4 transcripts; W5 partial |
| W12 Thu | Batch_2 P2 Whisper | 5 transcripts |
| W13 Sat | Batch_3 P3 + receipt | clips_index_remaining_count: 0 |
| W13 Sun | Tag map on P1/P2 only | Whisper tags W1–W6 |
Producer rule: No April feature stand-up cites “player said X” without transcript_path on handoff row.
Proof table
| Evidence | Proves | Fail signal |
|---|---|---|
february_live_whisper_source_path |
W1 lineage | Handoff without February receipt |
clips_index[] rows |
W2 manifest | Re-invented inbox sort |
drain_order |
W3 policy | P3 before P1 |
loudness_spot_ok |
W4 audio gate | Whisper on silent merge |
transcript_path |
W5 completion | whisper_done without file |
| Capstone pointer | W6 latch chain | Broken forward_whisper_handoff |
| verify exit 0 | CI gate | Verbal “backlog drained” |
Scenarios A–G
| ID | Situation | Move |
|---|---|---|
| A | Standard post-fest drain | Full W1–W6 after capstone |
| B | Zero deferred clips | clips_index: []; post_fest_whisper_handoff_ok: true with note |
| C | Empty Sunday annex recovery | Import from case study backfill paths |
| D | Solo dev, small queue | Same gates—one batch night |
| E | Mixed holiday + fest clips | Exclude holiday rows from handoff—January batch owns those |
| F | P3 waiver at W13 | notes + producer sign-off; clips_index_remaining_count may be >0 |
| G | Tag map before handoff | Reject—transcripts must exist (W5) |
Tag map handoff (after W5 GREEN)
Only open Whisper tag extraction when:
transcript_pathexists on rowbuild_labelmatches current trunk or documented MERGE label- Quote-only scrub passes Help #13 cousin if GitHub 422
jq -r '.clips_index[] | select(.whisper_done==true) | .transcript_path' \
release-evidence/ai/POST_FEST_WHISPER_HANDOFF_RECEIPT.json
CI sketch (post-capstone Monday)
- name: Post-fest Whisper handoff verify
run: |
test -f release-evidence/post-fest/MARCH_CAPSTONE_CLOSEOUT_RECEIPT.json
./scripts/verify_post_fest_whisper_handoff.sh
Block whisper-tag-burst workflow unless handoff verify exit 0 or documented F-scenario waiver.
Printable facilitator card
# Post-fest Whisper handoff (after March capstone)
[ ] Capstone forward_whisper_handoff path exists
[ ] clips_index imported from February same-day (not January inbox)
[ ] Drain order P1 → P2 → P3 by fest_day
[ ] Loudness spot on P1/P2 batches
[ ] Whisper batch nights logged in receipt
[ ] post_fest_whisper_handoff_ok on BUILD_RECEIPT
[ ] Tag map only after transcript_path set
Signed: __________
Outbound references
- OpenAI Whisper — local ASR model
- ffmpeg loudnorm — pre-Whisper audio gate
Related GamineAI reads
- February same-day triage
- January batch triage
- Friday March capstone
- Sunday February closeout
- Whisper tag extraction
- Audacity loudness evening
- Local Whisper pipeline
- Monday debrief facilitator
Key takeaways
- March 2027 post-fest drain inherits
clips_index[]from February same-day triage—not January inbox sort. post_fest_whisper_handoff_receipt_v1.jsongates W1–W6 with distinct handoff schema.post_fest_whisper_handoff_okon BUILD_RECEIPT closes March cluster #12.- Drain order P1→P2→P3 by
fest_day—reject Januarycapture_date-only calendar. - March capstone
forward_whisper_handoffmust resolve before handoff starts. - Sunday closeout annex validates
clips_index[]source paths. - Loudness spot (Guide #35 / Lesson 273) gates P1/P2 batches before Whisper.
- Whisper tags run after handoff transcripts—not before.
- Empty
clips_index[]is valid when zero deferred clips—still file receipt. verify_post_fest_whisper_handoff.shgives CI one exit code.- P3 waiver allowed at W13 with producer
notes—P1/P2 cannot waive silently. - March cluster #1–#12 complete—Blog-Planner critical refill is next
gowhen backlog hits 0. - Prevention beats April GitHub issues opened on fest-week facilitator paraphrase.
FAQ
Is this the same as January batch W1–W6?
No—different schema (post_fest_whisper_handoff_receipt_v1), queue source (clips_index[]), and drain order.
Is this the same as February same-day W1–W6?
No—February owns P0 same-day; handoff owns deferred P1–P3 post-fest drain.
Can we run handoff before March capstone?
No—W6 requires capstone forward_whisper_handoff pointer GREEN.
What if deferred_to_post_fest_batch was empty?
File receipt with clips_index: [], post_fest_whisper_handoff_ok: true, clips_index_remaining_count: 0.
Does this replace Whisper tag map?
No—tag map follows handoff when transcript_path exists.
When does Blog-Planner refill trigger?
After this publish—backlog #0 triggers critical refill on next go.
RED / YELLOW / GREEN routing (W gates)
| Signal | Route |
|---|---|
| W1 RED | Re-open February same-day or Sunday annex |
| W3 RED | Re-sort manifest P1→P2→P3 |
| W4 RED | Loudness spot |
| W5 RED | Complete Whisper batch before tag map |
| W6 RED | March capstone pointer |
| All GREEN | Set post_fest_whisper_handoff_ok; optional tag map burst |
Closing
Post-fest playtest backlog is not a fresh January inbox—it is deferred_to_post_fest_batch[] with fest_day and build_label lineage from February same-day triage. After March capstone latch, import clips_index[], drain P1→P2→P3, file post_fest_whisper_handoff_receipt_v1.json, and set post_fest_whisper_handoff_ok before Whisper tag map opens GitHub. Beginners use the handoff manifest; facilitators preserve fest-day order; working devs wire verify after capstone. March cluster #1–#12 closes here—honest transcripts beat April issues built on live-week memory.