Odin admits a signer's presence only above the sequence it last stored,
across the signer's restarts. The sequence is now the observation clock,
which a fresh process cannot restart below.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The command engine orders commands by comparing updated_at strings. A
consumer's RFC 3339 stamp sorts below every `unix-` stamp Muninn writes,
so the first stop request sent tonight lost to a start command stored in
July and Raven kept encoding to nobody. Translated commands now carry
Muninn's own stamp; the test pins the ordering.
Idunn daemon health on the Raven launch is optional now and omitted by
default: no Idunn manages this host, and the publisher only filled
yggdrasil's firewall log.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The loopback capture script the restart ships was still only in Odin's
tree; it lives here now. Both scripts wrote sftp batches that Win32-OpenSSH
rejects today: backslashes in quoted local paths are read as escapes, and
"C:/..." remote paths resolve under the login home rather than the drive.
Local paths go in with slashes and remote Windows paths as "/C:/...".
The alias-carried SSH user is honoured by passing -SshUser "".
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The check asserted ffmpeg video-proof constants in restart-muninn.ps1 that
were removed with the VideoProof task; the encoder profile lives in the
daemon and its tests. It blocked every deploy for a machine that is gone.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
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>
The previous commit fixed the target catalog and the operator alarm, but the
actuators the catalog invokes carried the same E: paths. Idunn would have
resolved every target and then failed on the first restart or deploy it ran,
for exactly the reason the alarm failed.
Rebased 41 references across 27 scripts:
- .cmd bodies invoke their sibling .ps1 through %~dp0 instead of an absolute
drive path, and restart-weksa.cmd reaches its sibling repo the same way.
- .ps1 parameter defaults and assignments derive from $PSScriptRoot: one level
up for paths inside Odin, two for sibling repos under the projects root.
Left deliberately alone: $RemoteViliRoot and $StateRoot in restart-vili.ps1.
Both are consumed inside the EncodedCommand block that restart-vili ssh's to
raven, so they describe raven's filesystem, not starfire's. Whether raven also
moved off E: is an operator question, not something to infer from here.
Verified: all 46 scripts under scripts/ parse clean, and the derivation
resolves to F:\Projects\Odin and F:\Projects on this host.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>