Record Muninn loss recovery authority

This commit is contained in:
Meta Vens 2026-07-16 21:04:52 +01:00
commit 6a7aaea019
3 changed files with 33 additions and 2 deletions

View file

@ -456,13 +456,25 @@ encoder keyframe actuation, production parity recovery, audio FEC/concealment,
bounded long-disconnect edge admission, adaptive sender response, and the
fault-injected socket timeline harness.
The socket harness and bounded PCM loss recovery have now landed. Odin's
`cultnet-impair` proxy supplies deterministic seeded loss/burst/reorder/
duplicate/jitter/stall profiles around real CultNet endpoints. Muninn emits a
typed fixed 4+2 audio parity block after each four constant-size PCM packets;
the production Mimir OBS receiver reconstructs up to two missing packets inside
the 40 ms reorder budget and feeds them through the existing playout owner.
Both sides use the experimental CultLib/CultMesh snapshot lineage used by Eve,
Aetheria, and VoidBot; no stable-branch transport shim was introduced.
The production receiver follow-up fixed two contract contradictions: early
video repair no longer declares the frame late (which had made Odin discard all
repair requests), and the OBS audio decoder now consumes Muninn's actual float
PCM contract rather than treating it as AAC. Audio reorder is bounded to 40 ms
with short silence concealment. The next audio cut is Opus with explicit
FEC/PLC; the next video cut is a controllable encoder owner that can force IDR
without restarting the A/V session.
FEC/PLC for variable-rate compressed audio; PCM now has bounded 4+2 erasure
recovery plus concealment. The next video cut is a controllable encoder owner
that can force IDR without restarting the video session. Receiver keyframe
pressure is deliberately not allowed to restart the whole A/V stream and hide
the missing authority.
1. Replace the frame-event diagnostic bridge with concrete direct capture
drivers for Leap stereo IR first, then the

View file

@ -190,3 +190,4 @@
{"ts": "2026-07-16T20:03:50+01:00", "type": "decision", "status": "ok", "note": "Moonlight common-c study at commit 82e2514 found Muninn already has media-aware packetization, deadlines, parity, receiver feedback, repair caching, and keyframe pressure. Preserve those foundations; close feedback into sender policy, replace the two-second realtime default with consumer-derived deadlines, and split Sleipnir input into replaceable latest state versus ordered non-replaceable edges. Research: docs/research/moonlight-muninn-sleipnir-study-2026-07-16.md."}
{"ts": "2026-07-16T20:29:03+01:00", "type": "verification", "status": "ok", "note": "Moonlight-derived reliability cut implemented in Odin against experimental CultLib snapshot 8965f3c0: HID epoch/latest-state/ordered-edge/application-ack semantics; wall clock demoted from ordering; Muninn A/V uses CultNet realtime lane with 100ms default LAN deadline; bounded producer/pending queues; expiring and receiver-late-aware repair cache; decode-chain-only keyframe pressure. Verification passed 168 Muninn, 25 Sleipnir, and 35 vendored experimental CultNet tests."}
{"ts": "2026-07-16T20:48:32+01:00", "type": "verification", "status": "ok", "note": "Production Muninn receiver audit fixed two live contract failures: early video repair feedback no longer places live frames in late_frame_ids (which made Odin refuse every repair), with a C++-emitted fixture decoded by Rust; OBS local audio decoder now consumes Muninn's actual f32le stereo 48kHz packets rather than AAC, default reorder is 40ms instead of 2000ms, and short gaps receive bounded silence concealment. Native plugin build and two CTests passed; Odin cross-fixture tests passed."}
{"ts": "2026-07-16T21:03:13+01:00", "type": "verification", "status": "ok", "note": "Muninn production audio recovery now uses typed 4+2 GF(256) PCM parity from Odin and a bounded Mimir receiver cache feeding the existing 40 ms reorder owner; native OBS DLL builds and 3/3 CTests pass. Odin cultnet-impair adds deterministic real-socket loss/burst/reorder/duplicate/jitter/stall profiles. Experimental CultLib snapshot lineage remains pinned at 8965f3c0."}

View file

@ -87,6 +87,24 @@ invariants:
are temporary smoke/bootstrap edges only.
accepted_design:
- The 2026-07-16 loss-recovery cut is now live on both sides of the Muninn
audio boundary. Odin emits typed `muninn.media_audio_parity_shard.v1`
records using fixed 4+2 GF(256) parity for constant-size 10 ms PCM packets.
Mimir's production OBS receiver retains a bounded recent data window,
reconstructs up to two erased packets per block before the 40 ms playout
deadline, and then hands recovered packets to the same reorder queue that
owns normal playout. The FEC cache is not a second timeline. Native tests
exhaust every one- and two-erasure permutation, and the production plugin
DLL builds with all three native suites passing. The OBS input ceiling is
now 500 ms and the default remains 100 ms; old 1.2-2.0 second test/config
assumptions are not realtime authority.
- Odin now carries a deterministic bidirectional UDP impairment proxy with
seeded clean, iid loss, burst loss, delay/jitter, reorder, duplicate, and
stall profiles. This is the acceptance substrate for real CultNet endpoints,
not a simulated transport replacement. The remaining critical sender gap
is an encoder owner that can actuate a receiver-requested next IDR without
restarting the video session; stock FFmpeg CLI capture cannot own that
command dynamically.
- The 2026-07-16 production receiver audit cut two false contracts. Native
Mimir/OBS early video repair feedback no longer marks live frames late, so
Odin can actually return cached missing chunks; only assembly expiry emits