Huginn/crates/mind-body/README.md
Meta Vens 8f15aad458 mind-body: the Self-run actuator, mind-self-run
self_run::carry finds her one open Self run through launch::holders, starts
claude over stream-json with a fixed argument list (session id UUIDv5 of the
run id, budget the run's own), writes the start message, counts the main
thread's requests once per message id, asks for the flush once at the 300k
ceiling, closes stdin at the first result and interrupts at most once after the
grace or at the hard limit. It admits nothing. Fixtures are Claude Code
2.1.268's own records. Builds; tests/public_surface.txt follows.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22 17:44:33 +02:00

2.2 KiB

mind-body

The Mind's body: the control store, the launch primitive, the mind-wake one-shot and the mind-self-run actuator.

mind-self-run --instance <slug> [--endpoint rudp://<ip>:<port>] runs inside mind-self@<instance>. It finds her one open Self run, starts claude over stream-json with a fixed argument list, asks for the flush once at the context ceiling and interrupts after a grace. It exits 0 when the child exited 0, 1 otherwise, 3 when she has no single open Self run and 2 when the arguments are wrong or the mind cannot be reached.

The container lane

tests/wake.rs holds one #[ignore]d test that runs the real mind-wake binary against the real huginn-daemon and a real store at the brake's root, and asserts that the host a run records is the kernel's hostname. It writes /etc/gamecult/minds, so it runs in a container only (/.dockerenv), as root, with the daemon built beside the binary. A plain cargo test skips it, and so does cargo mutants, which therefore reports the three host() mutants in src/bin/mind-wake.rs as missed. The lane that kills them:

cargo build -p huginn-daemon -p mind-body --all-targets \
  && cargo test -p mind-body --test wake -- --include-ignored

On Yggdrasil, run it through the verify stopgap in the Rust image (ygg-verify.sh <worktree> <rev> rust '<the command above>').

Mutation testing of the waker needs the glob form, because -f src/wake.rs finds no mutants in this workspace: cargo mutants -p mind-body -f "**/src/wake.rs" -f "**/src/bin/mind-wake.rs". The second glob reaches host(), whose mutants only the container lane kills.

The actuator has its own ignored test, the_real_bin_finds_her_run_... in tests/self_run.rs: the real mind-self-run against the real daemon with a fake claude first on PATH. It needs the daemon built beside the binary and a POSIX shell, not root:

cargo build -p huginn-daemon -p mind-body --all-targets   && cargo test -p mind-body --test self_run -- --include-ignored

Mutation testing of the actuator, with the globs that reach the library and the binary: cargo mutants -p mind-body -f "**/src/self_run.rs" -f "**/src/bin/mind-self-run.rs". The binary's mutants are killed only by the lane above.