Challenges & Community Hooks May 26, 2026

Metadata Survives Mux Challenge - Prove WAV LIST and iXML plus ffprobe Duration After ffmpeg and Audacity Roundtrips 2026

2026 community challenge—45-minute gates to prove VO consent metadata survives Audacity and ffmpeg roundtrips with metadata_survives_mux_receipt_v1.json aligned to Lesson 250 V5.

By GamineAI Team

Metadata Survives Mux Challenge - Prove WAV LIST and iXML plus ffprobe Duration After ffmpeg and Audacity Roundtrips 2026

Pixel-art hero for metadata survives mux challenge WAV LIST iXML ffprobe after roundtrips 2026

You exported facilitator VO from Audacity. consent_record_id looked perfect in the metadata editor. You muxed into the highlight MP4 with ffmpeg. Legal ran the same inspector on the deliverable and opened a ticket: field missing, duration off by 0.4 seconds, BUILD_RECEIPT still showed GREEN from before mux.

June–July 2026 pipelines add automated loudness passes—the July 2026 waveform consent trend playbook explains why this challenge became a default gate., sample-rate converts, and “quick” ffmpeg one-liners between editors. Teams re-trust pre-mux screenshots. This Challenges & Community Hooks sprint is a 45-minute, same-day proof that consent metadata and duration survive your real roundtrip—not a lab WAV on Desktop.

Non-repetition note: VO waveform consent beginner tutorial teaches the first evening export. Top 20 receipts hub lists receipt #5. This URL owns the 45-minute post-mux habit aligned to Lesson 250 gate V5. Cousin case study backlog #16 owns the recovery narrative—do not duplicate here.

Pair Audacity VO preflight, OBS highlight consent, and Thursday BUILD_RECEIPT row review.

Why this matters now (June–July 2026)

  1. Automated conversion steps — New macros “normalize for YouTube” between Audacity and reel mux.
  2. False GREEN V5 — Receipts filed from pre-mux proof only; legal reads post-mux bytes.
  3. July highlight reel scale — More facilitators, more handoffs, more strip points.
  4. 243 vs 250 split — Video clip consent passes while VO lane fails after mux—challenge catches V5 only.
  5. CI gap — Pipelines hash video; few teams assert custom RIFF chunks after AAC encode.

Direct answer: In 45 minutes, run gates M1–M6, produce before/after proof artifacts, file metadata_survives_mux_receipt_v1.json, then update vo_consent_metadata_receipt_v1.json conversion_survival.metadata_survives: true only if post-mux checks pass.

Who this challenge is for

Audience Outcome
Audio lead Know which ffmpeg flags strip LIST/iXML
Producer Block reel upload until M6 pass
Solo dev wearing all hats One documented mux chain, not hope

Time: 45 minutes timed (beginner first run); ~20 minutes when mux command is pinned.
Prerequisites: One VO line exported per VO tutorial; ffprobe on PATH; a real highlight video stub (even 10 s black video).

Challenge rules

  1. One owner signs the challenge log—no anonymous “team pass.”
  2. Fail stops the clock—fix mux settings before claiming M5.
  3. Use production mux command, not a simplified -c copy demo that skips your AAC step.
  4. Archive before and after proof in release-evidence/audio/mux-challenge/<tag>/.
  5. Do not promote BUILD_RECEIPT wav_consent_metadata_ok until M6 ties to VO_CONSENT_METADATA_RECEIPT.json.
  6. Post pass/fail in community thread with build_label only—no player PII in screenshots.

Folder layout (create first — 5 minutes)

release-evidence/audio/mux-challenge/2026-05-26-rc1/
  CHALLENGE_LOG.md
  vo_line_01_pre_mux.wav          # copy from art/voice/
  vo_line_01_pre_mux_proof.txt    # M2 output
  duration_pre.csv                # M3
  highlight_stub.mp4              # 10s test video
  vo_line_01_post_mux.wav         # extracted or handoff lane
  vo_line_01_post_mux_proof.txt   # M4 output
  duration_post.csv               # M5
  metadata_survives_mux_receipt_v1.json

Link folder from release-evidence taxonomy audio/ subtree.

Gate overview (M1–M6)

Gate Minutes Proves
M1 5 Baseline WAV + consent log row pinned
M2 8 Four consent fields present pre-mux
M3 5 ffprobe duration pre-mux matches clip plan
M4 12 Run real mux + extract/post handoff WAV
M5 8 Four fields + duration post-mux
M6 7 Receipt filed + cousin VO receipt updated

Total 45 when mux is already documented; add 15 if you must write mux command from scratch.


M1 — Baseline pin (5 minutes)

Step Action
1 Copy vo_line_01.wav to challenge folder as vo_line_01_pre_mux.wav
2 Copy matching consent_log.csv row to consent_row_snapshot.json
3 Record build_label, mux_step_name, ffmpeg_version in CHALLENGE_LOG.md

Pass when: build_label matches BUILD_RECEIPT and cousin playtest clip consent path exists if marketing uses video clips.

Beginner mistake: Starting challenge with MP3 “because faster.” Restart with WAV.

M2 — Pre-mux metadata proof (8 minutes)

Verify four fields in file bytes (not spreadsheet):

  • consent_record_id
  • consent_scope
  • consent_expires
  • opt_out

Save inspector output to vo_line_01_pre_mux_proof.txt. Note chunk_type: LIST or iXML.

Snippet-friendly check (duration only via ffprobe here):

ffprobe -hide_banner -show_format -show_streams vo_line_01_pre_mux.wav > vo_line_01_pre_mux_ffprobe.txt 2>&1

Pass when: All four fields documented in proof file with values matching consent_row_snapshot.json.

Maps to Lesson 250 gates V2–V3; this challenge does not re-teach export—see VO tutorial if M2 fails.

M3 — Pre-mux duration spot (5 minutes)

ffprobe -v error -show_entries format=duration -of default=nw=1:nk=1 vo_line_01_pre_mux.wav

Write result to duration_pre.csv:

file,duration_sec,expected_sec,pass
vo_line_01_pre_mux.wav,3.21,3.20,true

Tolerance: team policy ±0.05 s unless highlight script documents padding.

Pass when: pass column true. Maps to Lesson 250 V4.

M4 — Production mux roundtrip (12 minutes)

Run the same command you use for July highlight reels. Example pattern (replace paths):

ffmpeg -y -i highlight_stub.mp4 -i vo_line_01_pre_mux.wav \
  -map 0:v:0 -map 1:a:0 -c:v copy -c:a aac -b:a 192k -shortest \
  highlight_mux_out.mp4

Then obtain audio for post-mux verification—pick one lane and document it in the receipt:

Lane Command sketch When teams use it
A — extract ffmpeg -i highlight_mux_out.mp4 -vn -acodec pcm_s16le -ar 48000 post_mux.wav Legal reads extracted WAV
B — parallel WAV Keep separate VO WAV on timeline export DaVinci handoff
C — re-open in Audacity Import deliverable, export WAV Manual QA

Pass M4 when: Deliverable exists and post_mux WAV path is recorded—not when fields are verified yet.

Developer note: If Lane A strips tags, try -c:a pcm_s16le mux to MP4 with separate WAV master—record tradeoff in receipt mux_step field.

M5 — Post-mux metadata + duration (8 minutes)

Repeat M2 on vo_line_01_post_mux.wavvo_line_01_post_mux_proof.txt.
Repeat M3duration_post.csv.

Check Pass when
All four consent fields Present and values match snapshot
Duration Within tolerance vs pre-mux (or documented intentional change)
chunk_type Same family as pre-mux OR documented migration in log

Fail M5 → do not file GREEN conversion_survival. Open mux settings ticket; link forward to case study #16 if strip point is exotic.

This gate is Lesson 250 V5 in challenge form.

M6 — Receipt + BUILD_RECEIPT tie-in (7 minutes)

metadata_survives_mux_receipt_v1.json

{
  "schema": "metadata_survives_mux_receipt_v1",
  "build_label": "playtest-july-2027-rc1",
  "vo_asset_path": "art/voice/facilitator/vo_line_01.wav",
  "mux_step": "ffmpeg_highlight_mp4_lane_a_extract",
  "chunk_type_pre": "WAV_LIST_OR_IXML",
  "chunk_type_post": "WAV_LIST_OR_IXML",
  "consent_fields_pre": true,
  "consent_fields_post": true,
  "duration_pre_sec": 3.21,
  "duration_post_sec": 3.21,
  "duration_within_tolerance": true,
  "gates": {
    "M1_baseline": "pass",
    "M2_pre_metadata": "pass",
    "M3_pre_duration": "pass",
    "M4_mux_executed": "pass",
    "M5_post_metadata_duration": "pass",
    "M6_receipt_filed": "pass"
  },
  "metadata_survives_mux_ok": true,
  "cousin_receipts": {
    "vo_consent_metadata": "release-evidence/audio/VO_CONSENT_METADATA_RECEIPT.json"
  }
}

Update cousin vo_consent_metadata_receipt_v1.json:

"conversion_survival": {
  "mux_step": "ffmpeg_highlight_mp4_lane_a_extract",
  "metadata_survives": true,
  "challenge_receipt": "release-evidence/audio/mux-challenge/2026-05-26-rc1/metadata_survives_mux_receipt_v1.json"
}

Pass M6 when: Both JSON files committed under release-evidence/ and BUILD_RECEIPT row reviewed on Thursday ritual.


Proof table template (paste in CHALLENGE_LOG.md)

Field Pre-mux Post-mux Match
consent_record_id Y/N
consent_scope Y/N
consent_expires Y/N
opt_out Y/N
duration_sec Y/N

Community hook — share format

Post with hashtag #MetadataSurvivesMux2026 (optional):

build_label: playtest-july-2027-rc1
mux_step: ffmpeg_highlight_mp4_lane_a_extract
M5: PASS | duration delta: 0.00s
metadata_survives_mux_ok: true
(receipt path internal only)

Do not paste UUIDs or player names in public threads.

Facilitator team variant (two laptops)

Role Gates
Editor M1–M3 on export laptop
Reel lead M4–M5 on mux laptop
Producer M6 + BUILD_RECEIPT

Sync via shared release-evidence/ drive path—no Slack screenshots as proof.

Audacity roundtrip add-on (+10 minutes)

If your pipeline re-opens deliverable in Audacity for loudness:

  1. Complete M1–M5 on ffmpeg path first.
  2. Import highlight_mux_out.mp4 audio → export vo_line_01_audacity_roundtrip.wav.
  3. Run M2/M3 again; append audacity_roundtrip_pass to receipt.

Document as second mux_step—V5 fails if any production step strips tags.

PowerShell duration spot (Windows)

function Get-WavDuration($path) {
  $d = ffprobe -v error -show_entries format=duration -of csv=p=0 $path
  [pscustomobject]@{ file=$path; duration_sec=[double]$d }
}
Get-WavDuration vo_line_01_pre_mux.wav | Export-Csv duration_pre.csv -NoTypeInformation
Get-WavDuration vo_line_01_post_mux.wav | Export-Csv duration_post.csv -NoTypeInformation

CI hook sketch (optional)

test -f release-evidence/audio/mux-challenge/latest/metadata_survives_mux_receipt_v1.json
jq -e '.metadata_survives_mux_ok == true' release-evidence/audio/mux-challenge/latest/metadata_survives_mux_receipt_v1.json

Symlink latest/ to current tag after M6—pattern from validate-packet scripts.

Common strip points (2026)

Strip point Symptom Mitigation
AAC encode in MP4 Tags gone in extracted WAV Separate WAV master + Lane B
Sample-rate convert Duration drift Pin 48000 Hz before mux
“Cleanup” macro Empty LIST chunk Disable strip in macro
Wrong stream map VO replaced by music bed -map audit in M4
Cloud auto-normalize Fields removed upload-side Run M5 on downloaded file

Relationship to top 20 receipts index

Hub # This challenge
#5 vo_consent_metadata Updates conversion_survival after M6
#4 playtest_clip_consent Independent—run both before reel
#6–#7 smoke + row diff Schedule challenge before Thursday promotion

Anti-patterns

  1. Screenshot pre-mux only in legal packet.
  2. Passing M5 because “it sounds the same.”
  3. Skipping M4 production command for a toy ffmpeg line.
  4. Merging metadata_survives_mux_receipt into clip consent JSON.
  5. Running challenge once per studio—re-run when ffmpeg or Audacity version changes.

Forward pointers (same cluster)

Backlog URL role
#16 case study Legal-block recovery when M5 failed in production
#19 ffprobe matrix Batch duration + sample-rate QA for multi-line reels
#23 Ten-minute ritual before mux

Beginner path — minute-by-minute timer script

Set a 45:00 timer. Read steps aloud in standup practice once before solo run.

Timer Gate Say aloud
0:00 Start “Challenge for build_label, owner [name].”
0:05 M1 done “Baseline WAV and consent row copied.”
0:13 M2 done “Four fields present pre-mux.”
0:18 M3 done “Duration pre within tolerance.”
0:30 M4 done “Production mux executed; post WAV path: [lane].”
0:38 M5 done “Post-mux fields and duration verified.”
0:45 M6 done “Receipts filed; BUILD_RECEIPT row queued for Thursday.”

If M2 fails at 0:13, stop timer—return to VO tutorial Block 2, not this challenge.

Developer path — ffmpeg flag experiment matrix

When M5 fails, run one variable at a time on a copy of vo_line_01_pre_mux.wav:

Test id Variable Hypothesis
T1 -c:a aac vs -c:a pcm_s16le in MP4 AAC path strips LIST
T2 -ar 44100 vs -ar 48000 Resample drops chunk
T3 -af loudnorm filter Filter strips metadata
T4 Map wrong input Music bed replaces VO
T5 Two-pass encode Second pass strips tags

Log each test in CHALLENGE_LOG.md with pass/fail. Attach winning command to metadata_survives_mux_receipt_v1.json mux_step string.

Honest limit: Some platforms re-encode on upload—challenge proves your handoff; platform re-check may still be required for storefront trailers.

DaVinci Resolve lane (M4 variant)

Step Action
1 Import vo_line_01_pre_mux.wav + highlight timeline
2 Deliver WAV master separate from H.264 if legal requires
3 Run M5 on delivered WAV, not only on MP4 audio

Set mux_step: davinci_deliverable_wav_master_v1 in receipt. 14 free LUFS tools may run after M5 if loudness pass is separate—re-run M5 if loudness macro touches metadata.

Multi-line VO sprint (+15 minutes per extra line)

After first line passes M6, clone folder to vo_line_02/ subfolder—do not reuse post-mux proof across lines. Each VO line needs unique consent_record_id in M2/M5 tables.

Producer spreadsheet:

line M5 pass receipt filed
vo_line_01 true true
vo_line_02

Cap at five lines per evening—fatigue causes false PASS on field comparison.

Legal review packet (what to zip)

mux-challenge-<tag>.zip
  metadata_survives_mux_receipt_v1.json
  vo_line_01_pre_mux_proof.txt
  vo_line_01_post_mux_proof.txt
  duration_pre.csv
  duration_post.csv
  CHALLENGE_LOG.md (no player names)

Email template subject: [build_label] metadata survives mux M6 PASS.

Incident response — M5 fail after reel already uploaded

  1. Pull public reel immediately if opt_out or wrong consent_scope risk.
  2. File M5 fail log with strip point from matrix above.
  3. Do not edit receipt to GREEN—file waiver or re-run full M1–M6.
  4. Route narrative to backlog #16 case study doc when root cause is exotic.
  5. Tag vod_consent via Lesson 239.

Comparison to Whisper and concat receipts

Receipt family Proves This challenge
playtest_vod_triage_receipt_v1 Merge for triage Unrelated lane
ffmpeg_concat_decision_receipt_v1 Concat recovery Unrelated lane
vo_consent_metadata_receipt_v1 VO consent + V5 survival Updated at M6

Do not set concat_ok from mux challenge results.

Wednesday / Thursday calendar placement

Day Action
Tuesday VO export tutorial evening
Wednesday Demo smoke on game binary
Wednesday PM This challenge on VO line for upcoming reel
Thursday Row review includes metadata_survives_mux_ok

Never promote fest branch on Thursday if M6 failed Wednesday PM.

Schema crosswalk (Lesson 250 V1–V6 vs M1–M6)

Lesson 250 This challenge
V1 export Assumed before M1 (tutorial)
V2 fields M2 pre, M5 post
V3 values M2/M5 vs snapshot
V4 duration M3 pre, M5 post
V5 conversion M4 + M5
V6 BUILD_RECEIPT M6

Course milestone remains Lesson 250; challenge is repeatable ops habit.

Studio size variants

Size How to run
Solo Full M1–M6 alone in one sitting
2-person Editor M1–M3, reel lead M4–M5
5+ Producer holds timer; one “mux sheriff” owns M4 command doc

Reward hook (community, optional)

Teams that post #MetadataSurvivesMux2026 PASS with build_label (no PII) earn internal “mux sheriff” badge in devlog—purely cultural; receipt JSON remains authoritative.

Extended FAQ — search phrasing

What is metadata survives mux challenge 2026

A 45-minute gated sprint proving playtest VO consent metadata and ffprobe duration remain valid after your real ffmpeg or editor mux—not only after Audacity export.

Why does ffmpeg remove WAV LIST chunks

Some AAC mux paths re-encode audio without copying custom RIFF chunks; the challenge finds your strip point and documents a lane that preserves fields or a parallel WAV master.

How does this relate to vo_consent_metadata_receipt

M6 updates conversion_survival.metadata_survives on the cousin receipt; challenge files metadata_survives_mux_receipt_v1.json as auditable proof.

Gate failure playbooks (what to do when stuck)

M2 fail — fields missing pre-mux

You skipped the VO tutorial. Re-export with metadata preset PlaytestVOConsent2026. Do not continue to M4.

M3 fail — duration drift pre-mux

Clip plan spreadsheet wrong or region includes trailing silence. Trim in Audacity, re-export, restart M1–M3. Check OBS MKV gap preflight if VO was cut from playtest fragments.

M4 fail — ffmpeg error

Log stderr to CHALLENGE_LOG.md. Common fixes: escape Windows paths, add -shortest, verify audio stream exists in stub MP4. 16 OBS/ffmpeg tools for capture stack—not mux legal proof.

M5 fail — fields present pre, missing post

You found the value of this challenge. Walk the T1–T5 matrix, pick Lane B parallel WAV master if AAC always strips. Document in receipt; notify legal before next upload.

M5 fail — duration only

Metadata survived but duration out of tolerance—investigate -shortest cutting VO early or sample-rate mismatch. May still be legal fail if reel sync depends on timing.

M6 fail — JSON not in repo

Receipts in Downloads folder do not count. Commit under release-evidence/ or shared drive path named in facilitator contract.

BUILD_RECEIPT row snippet (paste after M6)

"vo_consent_metadata": {
  "wav_consent_metadata_ok": true,
  "metadata_survives_mux_ok": true,
  "challenge_receipt": "release-evidence/audio/mux-challenge/2026-05-26-rc1/metadata_survives_mux_receipt_v1.json"
}

Thursday row review line: VO / mux survival Y/N.

Friday Block 5 maintenance (+5 minutes weekly)

From Friday Block 5 ritual:

  • Archive challenge folders older than 8 weeks to archive/2026-Q2/.
  • Verify latest/ symlink points to current tag.
  • If ffmpeg minor version changed, schedule re-challenge before next reel.

Outbound technical references

Standup scripts (producer)

PASS: “Metadata survives mux M6 GREEN for build_label; post-mux consent fields match; duration delta [X]s; challenge receipt filed.”

FAIL: “Reel hold—M5 fail on VO line 02; AAC mux strips LIST; testing parallel WAV master; see mux-challenge folder.”

MISROUTE: “This is not concat_ok—route to ffmpeg decision tree instead.”

Sample CHALLENGE_LOG.md header (copy)

# Metadata Survives Mux Challenge Log
build_label: playtest-july-2027-rc1
owner: [team role]
date: 2026-05-26
ffmpeg_version: [ffmpeg -version first line]
audacity_version: 3.7.x
mux_step_final: ffmpeg_highlight_mp4_lane_a_extract
M1: pass
M2: pass
M3: pass
M4: pass
M5: pass
M6: pass
notes: no strip on T1-T3; AAC extract lane preserves LIST

Pairing with playtest isolation and fest scope

Before marketing publishes, confirm playtest isolation receipt scope matches reel audience. Mux challenge does not prove surface—only VO metadata survival. A passing M6 on playtest_invite VO must not appear in fest_public reel without scope review.

AI-generated VO note (2026)

Model-exported WAV may include bogus tags. M2 must still match consent_log.csv—if model invented a UUID, V3 fails even when fields exist. Governance for generator failures: backlog #22 reason-codes. Challenge remains valid: prove your mux does not strip correct tags.

Re-challenge triggers (calendar)

Event Re-run M1–M6
ffmpeg minor bump Yes
Audacity major bump Yes
New loudness macro Yes
New facilitator Yes for their export preset
Copy-paste mux command from new blog post Yes

Skipping re-challenge after ffmpeg bump is the most common regression in July 2026 incident threads.

Quick reference card (printable)

Gate One-line pass
M1 WAV + consent row + build_label pinned
M2 Four fields in pre-mux bytes
M3 ffprobe duration OK pre-mux
M4 Production mux ran; post WAV path known
M5 Four fields + duration OK post-mux
M6 Both JSON receipts filed in release-evidence

Tape beside monitor until July reel season ends.

Key takeaways

  1. Pre-mux GREEN is not enough—challenge proves post-mux bytes.
  2. 45 minutes, gates M1–M6, one real VO line, one real mux command.
  3. M5 = Lesson 250 V5—file metadata_survives_mux_receipt_v1.json.
  4. Archive before/after proof under release-evidence/audio/mux-challenge/.
  5. Update cousin VO_CONSENT_METADATA_RECEIPT.json only after M5 pass.
  6. Duration and metadata both matter—ffprobe twice.
  7. Document mux lane (extract vs parallel WAV vs Audacity roundtrip).
  8. Pair with VO tutorial and receipts hub.
  9. Block public reel upload until M6 and Thursday row review align.
  10. Re-run challenge when automation adds a new conversion step.

FAQ

How long is the metadata survives mux challenge

45 minutes for a pinned mux chain; up to 60 if you must document ffmpeg flags first.

Is this the same as the VO waveform consent tutorial

No. The tutorial teaches export and first proof; this challenge proves survival after your production mux.

What if M5 fails but audio sounds fine

M5 fail is legal/compliance fail for public reels—fix mux or change handoff lane; do not waive without waiver ticket in release-evidence/cert-and-platform/waivers/.

Which receipt schema do I file

metadata_survives_mux_receipt_v1.json plus update vo_consent_metadata_receipt_v1.json conversion_survival.

Do I need video clip consent too

Yes if the reel uses OBS fragments—Lesson 243 is separate from this WAV challenge.

Can we run this in CI

Assert receipt exists and metadata_survives_mux_ok: true on tags you promote; human M2/M5 field reads may stay manual until you script RIFF walks.

Should facilitators run this challenge every playtest night

Run when a new reel muxes VO for public highlight use—not after every internal Whisper triage session. Pair timing with facilitator contract receipt manifest requirements.


Post-mux proof is the habit—forty-five minutes once per mux chain change beats a legal block the night before July reels ship.