Lesson 250: Audacity VO Consent Metadata Receipt on BUILD_RECEIPT (2026)
Direct answer: Before July playtest highlight reels mux VO into public cuts, file vo_consent_metadata_receipt_v1.json proving each VO WAV carries consent_record_id + consent_scope + consent_expires + opt_out, values match consent_log.csv, ffprobe duration aligns with clip plan, metadata survives your mux/conversion step, and cousin playtest_clip_consent_receipt_v1 (Lesson 243) is GREEN—then promote BUILD_RECEIPT vo_consent_metadata_ok. Distinct from 243 (OBS clip concat manifest) and Lesson 234 (store stereo master).

Why this matters now (July 2027 VO in highlight reels)
July 2026–2027 teams scale playtest highlight reels—see July 2026 waveform consent trend playbook for why embedded VO metadata became non-optional beside clip consent. after Q3 capstone 244. Legal blocks reels when OBS concat passes but VO WAV exports lack consent_record_id in embedded metadata—automation cannot join waveform assets to the same rows as video clips. Lesson 243 owns clip-level consent; the Audacity VO consent preflight is the ninety-second checklist; the VO waveform consent metadata beginner tutorial is the evening walkthrough—250 is the BUILD_RECEIPT milestone for vo_consent_metadata.
Pair OBS highlight clip consent preflight and Lesson 239 tag vod_consent when facilitators flag metadata gaps.
Beginner path (export → metadata → receipt)
| Step | Action | Success check |
|---|---|---|
| 1 | Export VO as WAV with metadata writing enabled | V1 pass |
| 2 | Verify consent fields in WAV chunk | V2 pass |
| 3 | Match values to consent_log.csv row |
V3 pass |
| 4 | ffprobe duration spot |
V4 pass |
| 5 | Dry-run mux; re-check metadata | V5 pass |
| 6 | File receipt + BUILD_RECEIPT | wav_consent_metadata_ok: true |
Time: ~54 minutes first VO line; ~12 minutes when export preset is pinned.
Developer path (gates V1–V6)
| Gate | Check | Fail when |
|---|---|---|
| V1 | WAV export + metadata preset | MP3 export or stripped LIST/iXML |
| V2 | Consent fields present in WAV | Missing consent_record_id |
| V3 | Values match consent log | UUID drift vs CSV row |
| V4 | Duration spot | ffprobe ≠ clip plan |
| V5 | Conversion survival | Metadata lost after mux |
| V6 | Receipt + BUILD_RECEIPT | wav_consent_metadata_ok: false |
V1 — cousin receipt crosswalk
| Field | Cousin (243) | This lesson (250) |
|---|---|---|
| Schema | playtest_clip_consent_receipt_v1 |
vo_consent_metadata_receipt_v1 |
| Scope | Video clip concat manifest | VO WAV embedded metadata |
| Path | release-evidence/playtest/vod/PLAYTEST_CLIP_CONSENT_RECEIPT.json |
release-evidence/audio/VO_CONSENT_METADATA_RECEIPT.json |
Do not duplicate C1–C6 clip proof inside VO JSON—reference cousin path and shared consent_record_id.
vo_consent_metadata_receipt_v1.json
{
"schema": "vo_consent_metadata_receipt_v1",
"build_label": "playtest-july-2027-rc1",
"character_id": "facilitator_vo_07",
"vo_asset_path": "art/voice/facilitator/vo_line_01.wav",
"consent_fields": {
"consent_record_id": "a1b2c3d4-0001-4000-8000-000000000001",
"consent_scope": "highlight_reel",
"consent_expires": "2027-12-31",
"opt_out": false
},
"wav_metadata_proof": {
"chunk_type": "WAV_LIST_OR_IXML",
"fields_present": true
},
"duration": {
"duration_seconds": 3.21,
"ffprobe_match": true
},
"cousin_receipts": {
"playtest_clip_consent": "release-evidence/playtest/vod/PLAYTEST_CLIP_CONSENT_RECEIPT.json"
},
"conversion_survival": {
"mux_step": "ffmpeg_highlight_mp4",
"metadata_survives": true
},
"gates": {
"V1_export_settings": "pass",
"V2_fields_present": "pass",
"V3_values_match_consent_log": "pass",
"V4_duration_stable": "pass",
"V5_conversion_survives": "pass",
"V6_build_receipt": "pass"
},
"wav_consent_metadata_ok": true,
"playtest_promotion_allowed": true
}
Pin under release-evidence/audio/VO_CONSENT_METADATA_RECEIPT.json.
BUILD_RECEIPT row (V6)
| Column | Pass when |
|---|---|
vo_consent_metadata |
wav_consent_metadata_ok: true |
playtest_clip_consent |
Cousin Lesson 243 independent column |
micro_trailer_stereo |
Lesson 234 store lane independent |
ALTER TABLE release_publish_gate ADD COLUMN IF NOT EXISTS
vo_consent_metadata_blocked BOOLEAN NOT NULL DEFAULT false;
Thursday row review — VO consent metadata line: WAV fields Y/N.
Key takeaways
- 243 clip consent ≠ 250 VO metadata—both required for public reels with voice.
opt_out: trueexcludes WAV from highlight reel even if audio is usable.- Verify metadata after mux—V5 catches conversion strip; run the Metadata Survives Mux Challenge (M1–M6) when automation changes.
- OBS highlight preflight consumes same
consent_record_id. - Lesson 234 is store stereo—separate column.
- Lesson 249 is 3D hero GLB—unrelated lane.
- Do not glob
inbox/*.mkv—Lesson 243 manifest-only concat still applies to video. playtest_promotion_allowedhere ≠ Q4 capstone 253.- Tag
vod_consentvia Lesson 239. - Forward: Lesson 251 DaVinci trailer handoff BUILD_RECEIPT.
Common mistakes
- Filing 250 while 243 cousin still fails.
- Consent fields in receipt JSON but not embedded in WAV.
- Matching wrong CSV row—V3 UUID typo.
- Skipping V5 after ffmpeg mux strips LIST chunk.
- Merging schemas into
playtest_clip_consent_receipt_v1.
Troubleshooting
| Symptom | Lane |
|---|---|
| Legal blocks reel, OBS GREEN | This lesson V2–V3 |
| Clip in reel, no consent row | Lesson 243 C3 |
| Legal block, OBS GREEN, WAV RED | Missing iXML recovery case study |
| Duration drift in concat | V4 + MKV gap |
| Store embed mute | Lesson 234 |
| Whisper triage blocked | Lesson 220 separate |
Mini exercise (45 minutes)
- Export VO without metadata—confirm V2 fail.
- Add consent fields; match consent log row.
- Link cousin
PLAYTEST_CLIP_CONSENT_RECEIPT.json. - Mux dry-run; verify V5 survival.
- File receipt; BUILD_RECEIPT GREEN.
Continuity — Q4 2027 July playtest scale (245–253)
| Lesson | Receipt focus |
|---|---|
| 249 | Blender hero glTF hash |
| 250 (this) | Audacity VO consent metadata |
| 251 | DaVinci trailer handoff → OBS |
| 253 | Q4 capstone (queued) |
Previous: Lesson 249 — Blender hero glTF export hash
Next: Lesson 251 — DaVinci trailer handoff OBS highlight
FAQ
Same as Lesson 243?
243 = video clip concat + consent log; 250 = VO WAV embedded metadata.
Same as VO consent guide?
Guide = V1–V6 checklist; 250 = BUILD_RECEIPT promotion; top 20 receipts hub lists #5 in the full playtest→public map.
Same as Lesson 234?
234 = store stereo master; 250 = playtest VO consent fields.
Need LIST chunk specifically?
Team may use LIST or iXML—document chunk_type in receipt; fields must survive your mux.
VO in public reels needs waveform-level consent proof—cousin 243, embed metadata, duration spot, conversion survival, then vo_consent_metadata_ok on BUILD_RECEIPT.