We Recovered Missing iXML Fields After VO Conversion - From Legal Blocked Reel to BUILD_RECEIPT Green 2026 Case Study
This is a synthesized case study—a field pattern seen across June–July 2026 playtest highlight reels where video clip consent passed automation but facilitator VO failed legal review after an intermediate loudness or format conversion step. It is not a named studio turnaround. There are no invented revenue figures, no fake legal quotes, and no made-up view counts.
What follows is the failure signature (OBS GREEN, WAV RED), the isolation order that found the strip point, the artifacts that proved recovery, and how the pattern maps to your pipeline if legal says “consent_record_id not found in deliverable.”
Pair with Lesson 243 — playtest clip consent, Lesson 250 — VO consent metadata, VO waveform consent tutorial, Metadata Survives Mux Challenge, and top 20 receipts hub receipt #5.
Non-repetition note: The mux challenge teaches 45-minute prevention. This case study narrates recovery after legal block when teams trusted pre-conversion screenshots—different primary keyword and intent.
Why this matters now (June–July 2026)
- Highlight reel velocity — Marketing muxes VO the same week playtest ends; conversion macros run between editors.
- Split consent lanes — Lesson 243 GREEN does not imply Lesson 250 GREEN.
- iXML vs LIST confusion — Teams prove LIST in Audacity; legal reads post-conversion iXML in handoff WAV.
- False BUILD_RECEIPT —
wav_consent_metadata_okfiled from export night, not from reel deliverable lane. - Automation blind spot — Pipelines hash MP4 video; custom RIFF chunks in parallel VO master were never re-checked.
Direct answer: Recovery required identifying which conversion step stripped consent_record_id, re-exporting or changing handoff lane, filing vo_ixml_recovery_receipt_v1.json, passing mux challenge M5, and only then promoting BUILD_RECEIPT vo_consent_metadata_ok.
Beginner quick start — what recovered means here
Recovered in this pattern means:
- Legal unblock — Public highlight reel approved for upload with documented VO consent proof on deliverable bytes.
- Cousin receipts aligned —
PLAYTEST_CLIP_CONSENT_RECEIPT.jsonstill valid;VO_CONSENT_METADATA_RECEIPT.jsonupdated with trueconversion_survival. - Strip point documented — Named tool/step (not “ffmpeg broke”).
- Re-challenge filed —
metadata_survives_mux_receipt_v1.jsonreflects new mux command. - Qualitative calm — No new legal tickets on same
build_labelfor seven days (pattern observation, not a fabricated SLA %).
It does not mean retroactive consent for players who opted out—opt_out: true lines stay cut.
The failure (typical signals)
| Channel | Typical wording |
|---|---|
| Legal review | “VO WAV missing consent_record_id in deliverable” |
| Producer standup | “OBS consent passed—why blocked?” |
| Audio lead | “Sounds fine in timeline” |
| BUILD_RECEIPT row | playtest_clip_consent_ok: true, wav_consent_metadata_ok: true (stale) |
| Facilitator | “I exported with tags Tuesday” |
Internal blind spot: proof screenshots from Tuesday export, reel uploaded Thursday after loudness batch.
Starting state (synthesized table)
| Layer | State before recovery |
|---|---|
| Video clips | Manifest consent GREEN (OBS highlight preflight C1–C4) |
| VO export | Tuesday WAV showed four fields in Audacity |
| Conversion | Wednesday batch normalize macro on all VO lines |
| Mux | Thursday ffmpeg AAC into highlight MP4 |
| Legal read | Friday inspector on extracted post-mux WAV |
| BUILD_RECEIPT | Promoted from Tuesday JSON |
Gameplay and clip video were fine. Compliance on VO lane was not.
Root cause pattern (three recurring strip points)
| Strip point | Mechanism | How teams confirmed |
|---|---|---|
| S1 — Loudness macro | “Cleanup” chain rewrites WAV without metadata preset | A/B: macro on vs off |
| S2 — Wrong ffmpeg audio codec | AAC mux path drops custom chunks | M5 fail in mux challenge |
| S3 — Handoff lane mistake | Legal reads extracted audio; team proved pre-mux only | Lane A vs B in mux challenge M4 |
Most June 2026 incidents combined S1 + S2: macro then AAC, while LIST proof still existed on archived Tuesday file in art/voice/.
Cousin contrast — 243 vs 250 (why OBS GREEN did not save the reel)
| Question | Lesson 243 (clip) | Lesson 250 (VO WAV) |
|---|---|---|
| What failed here? | No — manifest still valid | Yes — iXML empty post-conversion |
| File legal read | MKV fragment map | Facilitator VO deliverable |
| Receipt | playtest_clip_consent_receipt_v1 |
vo_consent_metadata_receipt_v1 |
| Typical false comfort | “Clips are in the reel” | “We have a spreadsheet UUID” |
Triage rule: If legal cites waveform or iXML, do not reopen clip manifest first—open VO lane.
Timeline (five working days — pattern timing)
| Day | Focus | Output |
|---|---|---|
| D1 | Legal hold + evidence pull | Block upload; preserve Tuesday WAV |
| D2 | Strip point matrix S1–S3 | strip_point_audit.log |
| D3 | Fix conversion + re-export | vo_line_01_v2.wav with tags |
| D4 | Mux challenge M1–M6 | metadata_survives_mux_receipt_v1.json |
| D5 | Recovery receipt + BUILD_RECEIPT | vo_ixml_recovery_receipt_v1.json GREEN |
Teams with pinned mux command recovered D4 in one afternoon; first-time documentation added D2.
D1 — Legal hold without deleting artifacts (beginner)
| Step | Action |
|---|---|
| 1 | Stop public reel distribution (unlist or draft). |
| 2 | Copy all WAV versions to release-evidence/audio/incident-<tag>/ (Tuesday, Wednesday, Thursday). |
| 3 | Do not delete “bad” files—legal may need strip comparison. |
| 4 | Snapshot BUILD_RECEIPT row into build_receipt_pre_incident.json. |
Developer: Add legal_hold: true note in incident README until D5.
D2 — Strip point audit (developer path)
Run field presence on each archived WAV:
| File | consent_record_id | consent_scope | consent_expires | opt_out |
|---|---|---|---|---|
| tuesday_export.wav | present | present | present | present |
| post_macro.wav | missing | … | … | … |
| post_mux_extract.wav | missing | … | … | … |
Save table to strip_point_audit.log. First row where consent_record_id disappears names the strip step.
ffprobe duration on each row—drift here suggests separate duration matrix backlog #19, not this incident.
S1 confirmation — disable macro test
Re-run one line through macro off → if tags survive, macro is strip point. Document macro name and version in recovery receipt.
S2 confirmation — mux challenge T1
From challenge ffmpeg matrix: AAC extract vs PCM handoff. If PCM master preserves tags, adopt Lane B parallel WAV for legal packet.
D3 — Fix path (two valid recoveries)
| Path | When to use | Tradeoff |
|---|---|---|
| R1 — Re-export | Macro was destructive | Fast; requires facilitator time |
| R2 — Lane change | Tags survive on master WAV | Legal reads separate file; mux unchanged visually |
Both paths require new proof files—do not edit Tuesday JSON timestamps only.
R1 steps (beginner)
- Open Audacity with metadata preset pinned (VO tutorial Block 2).
- Re-export affected lines only (
vo_line_01_v2.wav). - Match
consent_log.csvrow—V3 UUID check. - Skip macro or use metadata-safe macro version.
R2 steps (developer)
- Deliver
vo_master_consent.wavbeside MP4 in legal zip. - Update receipt
mux_step: parallel_wav_master_v1. - Mux MP4 for social; legal signs WAV lane.
D4 — Mux challenge as gate (mandatory)
Do not skip because “we fixed export.” Run full Metadata Survives Mux Challenge on R1 or R2 output.
Pass signal: M5 post-mux table all Y; metadata_survives_mux_ok: true.
If M5 fails after R1, strip point was S2 not S1—return to D2 matrix.
D5 — vo_ixml_recovery_receipt_v1.json
{
"schema": "vo_ixml_recovery_receipt_v1",
"build_label": "playtest-july-2027-rc1",
"incident_class": "ixml_stripped_post_conversion",
"strip_point": "loudness_macro_v3_then_aac_mux",
"recovery_path": "R1_reexport_plus_mux_lane_a",
"files": {
"preserved_archive": "release-evidence/audio/incident-2026-05-26/tuesday_export.wav",
"recovered_asset": "art/voice/facilitator/vo_line_01_v2.wav"
},
"consent_fields_recovered": {
"consent_record_id": true,
"consent_scope": true,
"consent_expires": true,
"opt_out": true
},
"cousin_receipts": {
"playtest_clip_consent": "release-evidence/playtest/vod/PLAYTEST_CLIP_CONSENT_RECEIPT.json",
"vo_consent_metadata": "release-evidence/audio/VO_CONSENT_METADATA_RECEIPT.json",
"metadata_survives_mux": "release-evidence/audio/mux-challenge/2026-05-26-rc1/metadata_survives_mux_receipt_v1.json"
},
"gates": {
"D1_legal_hold": "pass",
"D2_strip_identified": "pass",
"D3_reexport_or_lane": "pass",
"D4_mux_challenge_M5": "pass",
"D5_build_receipt": "pass"
},
"vo_ixml_recovery_ok": true,
"legal_unblock": true
}
Update cousin vo_consent_metadata_receipt_v1.json:
"conversion_survival": {
"metadata_survives": true,
"recovery_receipt": "release-evidence/audio/vo_ixml_recovery_receipt_v1.json",
"strip_point_documented": "loudness_macro_v3_then_aac_mux"
}
Thursday row review: VO / iXML recovery line GREEN with link to recovery receipt.
Evidence folder layout (after recovery)
release-evidence/audio/incident-2026-05-26/
README.md
strip_point_audit.log
tuesday_export.wav
post_macro.wav
post_mux_extract.wav
vo_line_01_v2.wav
vo_ixml_recovery_receipt_v1.json
legal_packet.zip # redacted for external share
Release-evidence taxonomy audio/ subtree—do not file under marketing-and-demo/ alone.
What we did not do (anti-patterns)
- Re-open Lesson 243 and re-concat all MKVs when video manifest was already valid.
- Paste UUID into spreadsheet only without re-embedding in WAV.
- Mark BUILD_RECEIPT GREEN before M5 post-mux pass.
- Blame legal tooling without strip_point_audit.log.
- Delete post_macro.wav to “reduce clutter.”
Producer standup scripts (after D5)
PASS: “Legal unblock on build_label; strip point was loudness macro v3; R1 re-export + mux challenge M5 pass; recovery receipt filed.”
STILL BLOCKED: “M5 fail after R2—escalate to parallel WAV master; reel stays down.”
Facilitator contract addendum (prevention)
Add to multi-channel facilitator contract evidence section:
- No third-party batch normalize on consent-tagged WAV without metadata-safe preset.
- Post-conversion proof required before reel handoff (link mux challenge).
Relationship to automation and CI
| Check | Before incident | After recovery |
|---|---|---|
| Hash MP4 only | Passed | Insufficient |
| Assert recovery receipt on promote | Missing | jq -e '.vo_ixml_recovery_ok' on incident close |
| Mux challenge on tag | Optional | Required on vo_consent_metadata column |
Validate-packet scripts can grep for metadata_survives_mux_ok—human field reads may remain until RIFF tooling matures.
Engine and scope boundaries
Godot, Unity, and Construct do not write facilitator iXML—this incident is audio pipeline only. Playtest isolation still applies: recovered VO for fest_public must match surface on consent row.
Comparison to other “we recovered” case studies
| Case study | Lane |
|---|---|
| Mismatched save slots | Persistence UI vs keys |
| MangoHud GPU idle | Deck metrics |
| This URL | VO iXML after conversion |
Same synthesized ethics: pattern timing, no invented metrics.
Forward cluster (same spine)
| Backlog | Role |
|---|---|
| #17 | July trend playbook—why waveform proof became non-optional |
| #19 | ffprobe duration matrix when drift co-occurred |
| #21 opinion | Metadata copy ≠ build artifact done |
| #23 | Ten-minute ritual before mux |
Mini exercise (team retrospective — 60 minutes)
- List every conversion between Audacity export and legal read.
- Run strip matrix on archived files if incident already happened.
- If no incident, run mux challenge once on production chain.
- Add strip_point line to
CHALLENGE_LOG.mdtemplate. - Schedule Friday Block 5 archive of incident folder after 8 weeks.
Field-by-field legal read (what inspectors check)
Legal tooling varies by studio; the synthesized checklist rhymes across reviewers:
| Field | Pass when | Typical fail message |
|---|---|---|
consent_record_id |
UUID matches consent_log.csv |
“No record id in WAV” |
consent_scope |
highlight_reel or documented scope |
“Scope missing” |
consent_expires |
ISO date ≥ reel publish date | “Expired consent” |
opt_out |
false for public lines |
“Opt-out line in reel” |
Missing only consent_record_id after macro while other fields remain is still fail—do not argue partial credit.
Audacity Metadata Editor vs iXML block (beginner)
Teams screenshot the Metadata Editor window but legal parses iXML chunk bytes inside the file. Recovery includes:
- Open Metadata Editor on deliverable WAV (post all conversions).
- Export inspector text to
deliverable_metadata_proof.txt. - Compare to Tuesday archive—diff highlights strip.
Audacity manual — Metadata for UI; recovery receipt stores both UI proof and chunk type note.
ffmpeg extract lane that fooled teams (S2 deep dive)
Common command:
ffmpeg -i highlight.mp4 -vn -acodec pcm_s16le post_mux_extract.wav
If consent tags exist only on pre-mux parallel master, extract from MP4 will always fail M5—legal is correct, engineering proof was wrong lane.
Fix: Add vo_master_consent.wav to legal zip; keep MP4 for distribution.
Loudness macro variant (S1 deep dive)
| Macro behavior | Tags after macro |
|---|---|
| Normalize peak only | Often survives |
| “Clean + export” chain | Often strips |
| Third-party plugin batch | Unpredictable |
Document macro name and version in vo_ixml_recovery_receipt_v1.json strip_point string—future you will forget.
BUILD_RECEIPT before/after row (example structure)
| Column | Pre-incident | Post-recovery |
|---|---|---|
playtest_clip_consent_ok |
true | true |
wav_consent_metadata_ok |
true (stale) | true (verified) |
metadata_survives_mux_ok |
absent or false | true |
legal_hold |
n/a | cleared D5 |
Stale true is worse than false—Thursday review exists to catch drift.
Communication templates (no PII)
Legal (internal):
Subject: [build_label] VO iXML recovery complete
Strip: loudness_macro_v3 → AAC extract
Recovery: R1 re-export + mux M5 pass
Receipts: vo_ixml_recovery + updated VO_CONSENT_METADATA
Request: unblock public reel upload
Facilitator:
Do not run batch normalize on consent WAV.
Re-export lines 01-03 with PlaytestVOConsent2026 preset.
Drop files in release-evidence/audio/incident-<tag>/incoming/
Multi-line incident scope
When three VO lines failed but only one was in the reel:
| Line | In reel | Recovery |
|---|---|---|
| vo_line_01 | yes | R1 full |
| vo_line_02 | no | Document opt_out or scope |
| vo_line_03 | yes | R1 full |
Do not re-export entire library—scope to manifest + reel timeline.
Discord / community optics (qualitative)
Pattern observation: public channels calmed when studio posted “reel down for compliance fix, not content change” with no player data. Avoid debating legal tooling in public threads.
Relationship to Whisper and concat lanes
| If symptom | Route |
|---|---|
| Whisper batch skipped | concat decision tree |
| Legal VO block | This case study |
| Both | Fix VOD first, then VO consent—order reduces confusion |
Receipt hub cross-reference
| Hub # | This incident |
|---|---|
| #4 | Unchanged if manifest valid |
| #5 | Updated after recovery |
| #6–#7 | Run after legal unblock before fest promote |
Prevention calendar (after recovery)
| Week | Action |
|---|---|
| W0 | Close incident D5 |
| W1 | Pin metadata-safe macro version |
| W2 | All facilitators run mux challenge once |
| W3 | Add strip matrix to onboarding doc |
| W4 | July trend playbook backlog #17 when published |
Synthesized metrics disclaimer (read once)
This article cites seven-day qualitative calm and five-day recovery timing as pattern observations from multiple micro-team postmortems—not a single measured study. Do not cite “GamineAI said X%” in press posts.
PowerShell helper — copy archived WAV set
$tag = "2026-05-26"
$dest = "release-evidence/audio/incident-$tag"
New-Item -ItemType Directory -Force -Path $dest
Copy-Item art/voice/facilitator/*.wav $dest
Run before re-export overwrites Tuesday files in place.
Gate checklist R1–R5 (recovery sprint)
| Gate | Owner | Pass signal |
|---|---|---|
| R1 | Producer | Legal hold acknowledged; uploads stopped |
| R2 | Audio lead | strip_point_audit.log complete |
| R3 | Audio lead | vo_line_*_v2.wav passes V2–V3 |
| R4 | Reel lead | Mux challenge M5 GREEN |
| R5 | Producer | vo_ixml_recovery_ok + BUILD_RECEIPT row |
No gate may be skipped because “we understand the bug now.”
LIST vs iXML in recovery (developer)
Some teams export LIST/INFO tags; legal tooling expects iXML. Recovery may require:
- Document
chunk_typechange in receipt. - Re-export with team policy iXML preset if legal mandates XML block.
- Re-run M5—chunk family may change while fields remain valid.
Do not assume LIST proof satisfies iXML-only reviewers—read your contract.
Incident retro questions (60-minute meeting)
- Why was BUILD_RECEIPT promoted before mux deliverable proof?
- Who approved batch macro on consent WAV?
- Did facilitator contract mention conversion survival?
- Was top 20 receipts hub indexed for new producers?
- Will ffmpeg version bump trigger re-challenge?
Write answers in incident-<tag>/retro.md—not in public devlog.
Extended FAQ — search phrasing
What does legal blocked reel mean when OBS consent passed
Marketing video fragments were allowed by clip manifest consent, but facilitator voice WAV in the deliverable lacked embedded consent metadata after a conversion step—fix the VO lane, not the MKV manifest.
How is vo_ixml_recovery_receipt different from vo_consent_metadata_receipt
Recovery receipt documents incident strip point and fix; cousin receipt remains the ongoing BUILD_RECEIPT boolean source after honest conversion_survival update.
Should we re-run playtest clip consent after VO recovery
Only if clip manifest was wrong—when #4 stayed GREEN, do not re-concat; focus on #5 and mux proof.
Timeline diagram (ASCII)
Tue: Audacity export (tags present) → receipt filed (premature)
Wed: Batch macro (tags stripped) → no re-check
Thu: ffmpeg mux + upload → legal opens deliverable
Fri: Legal BLOCK → D1 hold
Mon: Strip audit S1 → R1 re-export
Tue: Mux challenge M5 PASS → recovery receipt
Wed: BUILD_RECEIPT row + upload → legal unblock
Use this shape in retro slides—timelines beat debating whose tool is “wrong.”
Pair with 18 playtest feedback tools
Feedback tools capture player sentiment; they do not replace consent receipts. Incidents where Discord said “great reel” while legal blocked are common—separate channels, separate artifacts.
Producer one-page incident summary (paste)
Incident: iXML stripped post VO conversion
Clip consent (243): GREEN — no re-concat
VO consent (250): recovered via R1 + mux M5
Strip point: [macro name] + [mux lane]
Receipts: vo_ixml_recovery + updated VO_CONSENT_METADATA
Legal: unblocked [date]
Next: ban batch macro on consent WAV; quarterly mux re-challenge
Developer diff habit (prevent recurrence)
After any VO processing change, run:
diff vo_line_01_pre_mux_proof.txt vo_line_01_post_mux_proof.txt
Non-empty diff on consent_record_id line blocks merge to fest_public branch until recovery gates pass—treat like failing unit tests.
Honest limits of synthesized case studies
Patterns compress many teams into one timeline; your strip point may be S3 only or a cloud re-encode not listed here. The recovery shape (audit → fix → mux proof → receipts) still applies—swap labels, keep gates.
Key takeaways
- OBS clip consent GREEN ≠ VO iXML GREEN—243 and 250 are separate receipts.
- Legal reads deliverable bytes—Tuesday screenshots are not proof.
- Strip point audit (S1 macro, S2 codec, S3 lane) names the failure.
- Recovery paths R1 re-export or R2 parallel WAV master.
- Mux challenge M5 is mandatory after fix—not optional.
- File
vo_ixml_recovery_receipt_v1.jsonbeside cousin receipts. - Update
conversion_survivalonVO_CONSENT_METADATA_RECEIPT.jsonhonestly. - Thursday row review documents legal unblock.
- Prevention: VO tutorial + mux challenge.
- Synthesized pattern only—verify on your conversion chain.
- Archive Tuesday WAV before macros—incident folders need before/after bytes.
- Tag Lesson 239
vod_consentwhen routing similar tickets.
FAQ
Why was the reel legal-blocked when OBS consent passed
Video fragment consent (Lesson 243) does not prove facilitator VO consent_record_id survived conversion (Lesson 250).
What is the most common strip point in this pattern
Batch loudness normalize macros that rewrite WAV without metadata preset, followed by AAC mux that drops chunks on extracted audio.
How long did recovery take in the pattern
Five working days first time; one to two days when mux challenge was already pinned and strip matrix was routine.
Do we need a new receipt schema
Use vo_ixml_recovery_receipt_v1.json for incident recovery narrative; keep vo_consent_metadata_receipt_v1.json as ongoing BUILD_RECEIPT cousin.
Is this the same as metadata survives mux challenge
Challenge prevents recurrence; this case study describes legal block recovery after trusting pre-conversion proof.
Can we waive iXML if clip consent is GREEN
No for public marketing reels with facilitator VO—legal lane is independent; waiver belongs in release-evidence/cert-and-platform/waivers/ with explicit scope, not silent skip.
What file should legal receive after recovery
A zip with vo_ixml_recovery_receipt_v1.json, updated VO_CONSENT_METADATA_RECEIPT.json, metadata_survives_mux_receipt_v1.json, before/after metadata proof text files, and the actual deliverable WAV or parallel master legal reads—not only the MP4.
Does recovery require re-shooting playtest video
Usually no—re-export facilitator VO and remux; clip manifest from OBS remains valid when #4 was already GREEN and fragments unchanged.
Who owns strip point audit
Audio lead runs S1–S3 matrix; producer owns legal comms; reel lead owns mux challenge M4–M5. Clear ownership prevents three engineers repeating the same ffprobe without updating the audit log.
Legal blocked reels with GREEN OBS consent usually mean VO conversion stripped iXML—audit the strip point, re-prove post-mux, file recovery JSON, then promote BUILD_RECEIPT.