Lesson 258: OBS Replay Buffer Uniform Fragments Receipt on BUILD_RECEIPT (2026)

Direct answer: Before June–October 2026 batch Whisper nights, promote replay_buffer_uniform_receipt_v1.json proving facilitators share one OBS playtest profile (fixed Replay Buffer seconds, 48 kHz project audio, ≥2 s between saves), replay_buffer_uniform_ladder_v1.json pins the sample-rate ladder, and +genpts is documented on the concat path—distinct from Lesson 200 (concat_ok on playtest_vod_triage_receipt_v1), Lesson 207 (path fork when merge fails), and Lesson 243 (highlight consent). Pair the OBS uniform fragments preflight (Guide #21).

Lesson hero for OBS replay buffer uniform fragments receipt

Why this matters now (batch Whisper nights)

October 2026 facilitators save 12–20 Replay Buffer MKVs per Discord thread—per-clip Whisper works, ffmpeg -f concat fails on mixed 44100 vs 48000 Hz, non-monotonic DTS, and VFR offsets. Teams open MKV concat help at 11pm instead of pinning OBS before capture—258 files replay_buffer_uniform_receipt_v1.json so BUILD_RECEIPT replay_buffer_uniform_ok blocks promotion when fragment policy drifts. Concat decision tree picks paths after concat_ok: false; this lesson prevents the fork.

The OBS uniform fragments preflight is the ninety-second gate—258 is the BUILD_RECEIPT milestone.

Beginner path (OBS profile → ladder → receipt)

Step Action Success check
1 Clone Playtest_48k_120s OBS profile Profile name in README
2 Lock Replay Buffer 120 s, audio 48 kHz R2 screenshot
3 Publish replay_buffer_uniform_ladder_v1.json Ladder sha256 pinned
4 Document +genpts on concat script R4 policy row
5 File receipt + BUILD_RECEIPT replay_buffer_uniform_ok: true

Time: ~55 minutes first batch night; ~12 minutes when profile is cloned.

Developer path (gates R1–R6)

Gate Check Fail when
R1 playtest-vod/README.md names OBS profile Ad-hoc per-host settings
R2 Fixed Replay Buffer length (e.g. 120 s) Mixed 30/60/120 across facilitators
R3 Audio sample rate 48000 on profile 44100 Hz project default
R4 +genpts on MKV concat or WAV ladder first Raw MKV concat without policy
R5 replay_buffer_uniform_ladder_v1.json committed No ladder artifact
R6 Receipt + BUILD_RECEIPT Promote before R3 GREEN

R1 — cousin receipt crosswalk

Field Cousin (200) Cousin (224) Cousin (243) This lesson (258)
Schema playtest_vod_triage_receipt_v1 mkv_gap_reencode_receipt_v1 playtest_clip_consent_receipt_v1 replay_buffer_uniform_receipt_v1
Scope Post-merge concat_ok Gap re-encode Consent log Pre-capture uniform policy
Path release-evidence/playtest/vod/ release-evidence/playtest/mkv-gap/ release-evidence/playtest/consent/ release-evidence/playtest/replay-uniform/

Do not merge schemas—reference paths in cousin_receipts only.

replay_buffer_uniform_ladder_v1.json

{
  "schema": "replay_buffer_uniform_ladder_v1",
  "build_label": "october-fest-2026-playtest-rc3",
  "obs_profile": "Playtest_48k_120s",
  "replay_buffer_seconds": 120,
  "audio": {
    "project_sample_rate_hz": 48000,
    "normalize_target_hz": 48000,
    "channels": "mono",
    "allowed_rates_in_fragments": [48000]
  },
  "save_spacing_seconds_min": 2,
  "concat_policy": {
    "prefer_wav_ladder": true,
    "mkv_remux_genpts": true,
    "ffmpeg_genpts_flag": "+genpts"
  },
  "fragment_manifest_columns": ["clip_id", "wall_time_utc", "duration_s", "sample_rate_hz", "sha256"]
}

Pin under release-evidence/playtest/replay-uniform/REPLAY_BUFFER_UNIFORM_LADDER.json.

R4 — concat policy snippet (WAV ladder + genpts)

# Per-fragment normalize (R3 ladder)
ffmpeg -i "$frag" -ar 48000 -ac 1 "normalized/${base}.wav"

# MKV remux path when WAV skipped — genpts required (R4)
ffmpeg -i "input.mkv" -c copy -fflags +genpts "work/remux_${base}.mkv"

# Concat WAV list (preferred)
ffmpeg -f concat -safe 0 -i fragments.txt -c copy merged_playtest.wav

replay_buffer_uniform_receipt_v1.json

{
  "schema": "replay_buffer_uniform_receipt_v1",
  "build_label": "october-fest-2026-playtest-rc3",
  "ladder_path": "release-evidence/playtest/replay-uniform/REPLAY_BUFFER_UNIFORM_LADDER.json",
  "ladder_sha256": "cc33…",
  "obs_profile_export": "release-evidence/playtest/replay-uniform/obs_profile_Playtest_48k_120s.json",
  "facilitator_roster_sha256": "dd44…",
  "cousin_receipts": {
    "vod_triage_concat_ok": "release-evidence/playtest/vod/PLAYTEST_VOD_TRIAGE_RECEIPT.json",
    "mkv_gap_reencode": "release-evidence/playtest/mkv-gap/MKV_GAP_REENCODE_RECEIPT.json",
    "clip_consent": "release-evidence/playtest/consent/PLAYTEST_CLIP_CONSENT_RECEIPT.json"
  },
  "gates": {
    "R1_readme_profile": "pass",
    "R2_buffer_length": "pass",
    "R3_sample_rate_48k": "pass",
    "R4_genpts_policy": "pass",
    "R5_ladder_committed": "pass",
    "R6_build_receipt": "pass"
  },
  "replay_buffer_uniform_ok": true,
  "whisper_batch_prerequisite_met": true
}

Pin under release-evidence/playtest/replay-uniform/REPLAY_BUFFER_UNIFORM_RECEIPT.json.

BUILD_RECEIPT row (R6)

Column Pass when
replay_buffer_uniform replay_buffer_uniform_ok: true
playtest_vod_concat Cousin 200 concat_ok independent
playtest_clip_consent Cousin 243 independent
ALTER TABLE release_publish_gate ADD COLUMN IF NOT EXISTS
  replay_buffer_uniform_blocked BOOLEAN NOT NULL DEFAULT false;

Thursday row reviewReplay uniform line: profile + 48 kHz Y/N.

Key takeaways

  1. Uniform at capture beats ffmpeg heroics at midnight (R1–R3).
  2. +genpts is policy, not optional trivia (R4).
  3. Lesson 200 — post-merge concat_ok; 258 — pre-night profile.
  4. MKV concat help — reactive triage cousin.
  5. Concat decision tree — path after concat_ok: false.
  6. Lesson 243 — legal consent column.
  7. Cousin: Lesson 259 Bevy menu flush—parallel engine fest column.
  8. Lesson 257 — parallel Unity strip column.
  9. October capstone 265 wires 254–264 including this row.
  10. Top 20 receipts hub — replay uniform row in fest→public map.

Common mistakes

  • Fixing concat only in ffmpeg while OBS profile still 44100 Hz (R3).
  • Mixed Replay Buffer 30 s vs 120 s across facilitators (R2).
  • Filing 200 while uniform receipt RED—merge vs capture are different gates.
  • Merging replay_buffer_uniform_receipt into playtest_vod_triage_receipt.
  • Skipping +genpts on MKV path then blaming Whisper (R4).

Troubleshooting

Symptom Lane
concat_ok false after uniform GREEN Lesson 200 + MKV concat help
Non-monotonic DTS only on some hosts R2 spacing + Lesson 224
Which Whisper path? Lesson 207
Highlight legal block Lesson 243
Zero-duration audio Zero-duration help

Mini exercise (45 minutes)

  1. Export two MKVs from different OBS profiles—confirm sample-rate mismatch in ffprobe.
  2. Clone Playtest_48k_120s—re-export; confirm 48000 Hz only.
  3. Commit ladder JSON; run R5 hash pin.
  4. File receipt; BUILD_RECEIPT GREEN.

Continuity — October–Q4 2026 fest ops truth (254–265)

Lesson Receipt focus
257 Unity Addressables jq inventory audit
258 (this) OBS replay buffer uniform fragments
259 Bevy menu UI flush
265 October ops capstone (queued)

Previous: Lesson 257 — Unity Addressables jq audit
Next: Lesson 260 — Unity UGS/OTLP diligence (queued)

FAQ

Same as Lesson 200?
200 = concat_ok after merge; 258 = uniform OBS policy before capture nights.

Same as Help #5?
Help is reactive ffmpeg; 258 is BUILD_RECEIPT prevention + ladder artifact.

Still need per-clip Whisper?
Yes when decision tree picks per_clip_local—uniform policy reduces how often you fork.

WAV ladder vs MKV +genpts?
Ladder prefers WAV concat; MKV remux with +genpts is documented fallback (R4).


Batch Whisper nights fail when every facilitator uses a different Replay Buffer profile—pin 48 kHz, fixed seconds, genpts policy, ladder JSON, then replay_buffer_uniform_ok before triage promotion.