Commit graph Muninn/docs
Author SHA1 Message Date
Meta Vens
2742b4ddcf Correct stale health text, pin per-host boundary identity, note deploy order
The MuninnRecords comment claimed muninn-contracts decides every muninn.*
binding; today odin-core registers identical strings first and the
registration is inert until Odin deletes its copies. The help text no
longer describes the retired --idunn flags, the health-*.cmd stubs no
longer claim daemon-published health, and docs/muninn.md says to install
the binary and the scripts together. A test now pins daemon_id, state and
current_transport for raven, starfire and nightwing.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-09-30 00:17:51 +02:00
Meta Vens
e9580009ea Retire --idunn-rudp-health and the daemon-health publisher
The flag family (--idunn-rudp-health, --idunn-daemon,
--idunn-health-contract), IdunnRudpHealthOptions, the health worker
thread, idunn_health_payload, the RUDP health connection and the
idunn.daemon_health document had no consumer since the previous Idunn
generation. The raven-muninn recipe never passed them; liveness is the
runtime-presence publisher. Removes the IdunnDaemonHealthRecord odin-core
symbol (three remain).

The daemon id is now derived from the host alone. The transport profile
and command-boundary records no longer carry health_publication, and
health_contract is null. The starfire, nightwing and raven health and
restart scripts stop passing and checking the flags; muninn.md follows.

Tests: the retired flags are unknown arguments; the boundary record
carries the host-derived daemon id and no health_publication.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 23:17:13 +02:00
Meta Vens
bd69598503 Merge Cut 2: bounded sender, one deadline owner, a drivable seam
Audio priority per payload, deadlines per payload, every sender-side drop
consumes a frame_id, the latency budget clamped to 2000 ms, a departed
receiver drops out without stopping the others. Soul pass 3: merge with
follow-ups (mid-group leaver order unpinned; per-receiver I/O errors still
stop the loop; raw budget persists in the command record).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 21:31:34 +02:00
Meta Vens
96b64cba97 Send media one payload per step: audio first, per-payload deadlines, clamped budget
The send loop now moves one payload per step and chooses it afresh: audio,
then repairs, then video. A video group in progress or a full socket no
longer holds audio back for more than the payload in progress; a full
socket hands control back instead of spinning to the group deadline.
Repairs are queued by feedback intake and sent by the same step, each
checked against its own frame's deadline at send time and only to the
receiver that asked. The group deadline is checked before every payload; a
group that outlives it mid-send is abandoned and counted groups_cut_short.
A request's latency budget is clamped to 1..=2000 ms.

Tests pin the cap values, the clamp, per-payload audio priority (mid-frame,
full socket, between repairs), the send-time deadline for groups and
repairs, repairs going only to the asker, and the frame-id gap left by a
queue-cap, expiry or overflow drop.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 20:37:31 +02:00
Meta Vens
95b84a8102 Record the Cut 2 Soul pass and the loss-signalling owner
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 20:24:31 +02:00
Meta Vens
f4f1fcdad7 Merge origin/main into hands/muninn-cut2
Bring H3, the Sleipnir import and the recipe merge into the Cut 2 branch.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 20:24:29 +02:00
Meta Vens
d564543b70 State the stream rule once: consumers dial the producing Muninn
The input firewall rule is what any producing Muninn needs, not an input
exception or an accepted cost of Q10.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 20:05:34 +02:00
Meta Vens
70f838dfb9 Describe the group send queue and the 250 ms default in the media doc
The streaming doc still said a request naming no latency budget got 2,000 ms
and did not mention that the sender queue is bounded, per-group, and owns the
deadline that repairs inherit. Re-anchor the two main.rs references it moved.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 20:04:39 +02:00
Meta Vens
8d869ca8df Record Q13: no live Sleipnir on Raven, H2 and H4 merge independently
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 20:01:33 +02:00
Meta Vens
83b3947a8f Record Q11 (muninn-contracts) and Q12 (fold Move evidence in)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 19:58:10 +02:00
Meta Vens
fe33ce7f10 Re-map the HID cuts H0-H5 to Q9 and Q10 (Imagination pass 3)
Sleipnir moves into the Muninn workspace with its history. Input mirrors
the media request path: Muninn advertises an input stream on CultMesh, the
consumer requests it and dials. Opens Q11-Q13.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 19:55:22 +02:00
Meta Vens
c3520d10a1 Merge realtime robustness Cuts 0-1: maps corrected, receiver residue deleted
Soul: merge after doc fixes (done in b607592). -565 lines from the producer;
no consumer of the deleted symbols in Muninn, Ratatoskr, Odin, Mimir or
StreamPixels; the bluetoothctl-dependent test now runs through a seam.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 16:09:40 +02:00
Meta Vens
b607592be2 Correct keyframe, GOP, and provenance claims in the media docs
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-29 16:02:33 +02:00
Meta Vens
66e8642f59 Record HID rulings Q9 (Sleipnir in Muninn's workspace) and Q10 (Muninn advertises input streams)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 16:02:10 +02:00
Meta Vens
36d6a79a2a Map Cut 6 (native encoder) and the remote-play HID cuts H0-H5
Cut 6: the donor encoder behind a C ABI in an off-default package, typed
encoder-command records on stdin, built and accepted on Raven by Idunn. HID:
muninn-contracts crate, edges carried on the latest channel with the state, no
Odin main change. Q9 (Sleipnir's home) and Q10 (who dials) open.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 14:11:04 +02:00
Meta Vens
eb332b0d2e Record realtime robustness rulings Q1-Q8 (2026-09-30)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 13:55:27 +02:00
Meta Vens
2c120c96d7 Correct the Muninn maps against git (RR Cut 0)
teardown-map.md: mark the extraction-era claims as history in place (pin,
symbol counts, diamond, live-exercise note) and correct the false claim that
the sender turns keyframe requests into an IDR. muninn-media-streaming.md:
preset p5, 848-byte chunks, 30 ms resend inside the latency-budget expiry.
Docs only.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-29 13:47:40 +02:00
Meta Vens
e70db69d76 Map the realtime robustness campaign (Imagination, 2026-09-30)
Operator made the Odin muninn-bounded-realtime-send donor a campaign. FEC moves
to a CultLib cultnet-rs media_fec codec (reed-solomon-erasure) used by both
Muninn and Ratatoskr; bounded whole-frame sender; one latency owner. Q1-Q8 open.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 13:46:42 +02:00
Meta Vens
70fe005247 Raven's operator launcher and deploy scripts retire; Idunn owns the host
restart-muninn.ps1, its cmd alias, deploy-raven-muninn-binary.ps1 and
repair-raven-muninn-task-actions.ps1 started and replaced serve on Raven by
hand through a scheduled task and a VBS launcher. Idunn's host actuator is
the only thing that starts serve there now, so they leave rather than stay
as a second launch path. Docs say what replaced them and what remains.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-11 14:43:38 +02:00
Meta Vens
3cea88417d A running command is not re-stamped every tick
The "kept existing capture stream" branch wrote the running command back
with the current time on every tick, which made a running command the
newest forever: no request sent tonight could outrank the July start until
this was cut. The spawn transition keeps the command's stamp too. The
teardown map records the audio result: 860 frames and 2,756 audio packets
in 29 s, nothing expired, on a producer host at 93% CPU.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-11 01:33:05 +02:00
Meta Vens
8c97437a93 Record the first frames across Raven to Starfire
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-11 01:01:19 +02:00
Meta Vens
a8d4416737 Say where the Muninn target records actually live
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-10 23:43:17 +02:00
Meta Vens
85e4c31810 Record that Muninn has one body now
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-10 23:40:09 +02:00
Meta Vens
07c70ac4e9 Muninn listens for receivers instead of dialling them
The activation child binds one CultNet RUDP hub on --media-rudp-bind and
serve advertises it as the stream's media_endpoint; receivers dial it and
are known by their connect payload. Video rides the media channel lossy
under parity, audio the new audio channel reliably with the assembly
deadline as expiry, both on one session per receiver. Repairs go back to
the receiver that asked; a receiver silent for 6 s is dropped.

Gone: --obs-target-host/--obs-port (refused with the reason), the second
audio connection, the Odin provider-catalog lookup of an OBS receiver, the
receiver advertisement request-stream used to publish, and the cultmesh://
target requirement on activate. The consumer's host no longer needs a
firewall rule; Raven opens one UDP port, and restart-muninn.ps1 adds it
beside the HID controller rule.

CultLib pin c84cb2e.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-10 23:03:14 +02:00
Meta Vens
8141eb8663 Record the OBS source and what still blocks a live frame
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-10 22:22:48 +02:00
Meta Vens
faeb5d7efb Record that the receiver feedback path exists
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-10 21:39:39 +02:00
Meta Vens
34776ea27a Cut the receiver half of the packetizer; it lives in Ratatoskr now
Frame assembly, the assembly set, reassembly, expired-frame feedback and
their tests were kept here after the September dead-code cut as the seed
for Ratatoskr's reassembly. That seed has been planted (Ratatoskr
2618184, crates/ratatoskr-core/src/video.rs), so the producer stops
carrying code only a consumer runs. 705 lines. What stays is the producer
half: packetize, XOR stripe parity, and build_receiver_feedback, which the
sender's repair-cache tests use to construct what a receiver would say.

Also removes adts_frame, a test helper orphaned by the AAC cut.

  cargo test -p muninn-daemon -> 151 passed, no warnings

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-10 21:23:33 +02:00
Meta Vens
a619bd5be9 Point the fragment-fuse record at the merged commits
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-10 12:01:09 +02:00
Meta Vens
455650639d Record the fragment-set fuse and the measured amplification
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-10 11:58:55 +02:00
Meta Vens
fdfddc56e4 Record where the pass ended
Three repos, one contract none of them owns, and one pin standing between Muninn
and a clean build. Names what is blocked, who owns unblocking it, what is next
and which two breaks are deliberate.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-10 02:38:58 +02:00
Meta Vens
2f13c6fed5 Record Ratatoskr, and what still blocks it
The receiving end now has a repo. The wire envelope does not: MuninnMediaWireRecord
and encode_media_wire_record are still here, both ends need them, and until they
reach CultLib beside the gamecult.media_* records Ratatoskr cannot decode a real
stream.

Also corrects this session's claim that no audio decoder existed. There is one --
an ffmpeg child with a hardcoded -f aac. Opus is that becoming codec-driven, and
it measures 16.8x against PCM.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-10 01:42:57 +02:00
Meta Vens
97e7b35865 Record what the impairment run measured
The map argued congestion collapse: a reliable channel retransmitting under
loss until it starved itself. The measurement refutes the mechanism and keeps
the conclusion. Reliable loses 31% of a clean 12 Mbps offer with no loss and no
congestion present, and barely moves as loss rises.

Also corrects the claim that June tuning was fitted against the VPS path. The
July acceptance ledger records those runs as direct LAN with no WireGuard route;
the hairpin arrived with the relocation, afterwards.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-10 01:08:59 +02:00
Meta Vens
7975634a1f Give the extracted Muninn a root of its own
Muninn's three crates carried 268 commits inside Odin, from "Add lazy Muninn
telemetry organ" on 2026-06-08 to the Idunn extraction merge on 2026-09-05.
That history is the evidence trail for everything the rebuild has to answer,
so it moves intact rather than being flattened into an initial commit.

Adds only what a standalone repository needs: a workspace manifest, a README
stating the authority Muninn actually holds, and the working teardown map.

Nothing is cut here and nothing builds yet. muninn-daemon still depends on
odin-core by path for twenty record types, which is one of the inversions
being removed. Deleting the old-generation deployment scripts is a separate
intent and waits on the Idunn recipe that replaces them, because three of
them are still the Restart actuators for live Idunn target records.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-09 23:04:41 +02:00
Meta Vens
e65969d29c Reject implausible Move optical observations 2026-07-14 01:06:57 +01:00
Meta Vens
4057e595e5 Rework Odin transport ownership and service names 2026-07-04 22:38:43 +01:00
Meta Vens
8215de8b29 Align Raven Muninn Idunn keepalive defaults 2026-06-29 22:02:35 +01:00
Meta Vens
3edceb7f3a Checkpoint working Muninn OBS discovery state 2026-06-23 02:57:29 +01:00
Meta Vens
19523e4518 Align Raven Muninn health target with live launcher 2026-06-19 22:19:14 +01:00
Meta Vens
f1c8af5585 Expose Muninn sender resend cadence in RUDP URL 2026-06-18 22:42:30 +01:00
Meta Vens
4b640a2515 Publish Muninn RUDP media resend cadence 2026-06-18 22:38:51 +01:00
Meta Vens
a4269f8990 Verify Muninn Raven media profile 2026-06-18 22:30:46 +01:00
Meta Vens
cd3d201eda Set Muninn RUDP media fragment ceiling 2026-06-18 22:23:07 +01:00
Meta Vens
e5a750b460 Keep Muninn RUDP media packets under MTU 2026-06-18 22:09:27 +01:00
Meta Vens
081cd69644 Expose Muninn RUDP resend budget in stream URL 2026-06-18 21:53:39 +01:00
Meta Vens
5cecf2effb Use frame-budgeted VBV for Muninn RUDP video 2026-06-18 21:42:23 +01:00
Meta Vens
487578f8e8 Name Muninn low latency RUDP media profile 2026-06-18 21:35:19 +01:00
Meta Vens
e558c3c29c Clarify Muninn low-latency codec strategy 2026-06-18 17:02:40 +01:00
Meta Vens
465acc247b Add chunk-level Muninn media feedback 2026-06-18 16:45:45 +01:00
Meta Vens
0f6cdf8d6a Map Muninn media streaming authority 2026-06-18 16:30:23 +01:00
Meta Vens
a6118aba69 Fix Raven Muninn hidden launcher deployment 2026-06-16 21:21:08 +01:00