| Filename | Latest commit message | Latest commit date |
|---|---|---|
A result ends a turn and marks the session idle; it no longer closes stdin (decide.rs: Result => CloseStdin deleted). The session ends where its prompt cache would be evicted (ruling live-session-floor-cache-evicts: the flush is asked at the last request's TTL less 60 s, stdin closes after the flush's own result), at an idle rotation deadline under the run cap, mid-turn at the cap's flush margin, and at the context ceiling. PreCompact blocks auto-compaction and asks the same flush. self_run/inbox.rs derives her inbox from the mind (in-force follow-ups with owner self-run that no closed run claims), spools them, and claims by rename so the PostToolBatch hook and the actuator's idle tell deliver each once. mind-self-run inject is the hook. Brief closure is not in this commit: the mind refuses a Recorded resolution of a follow-up (question admitted). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> |
||
| .. | ||
| src | ||
| tests | ||
| Cargo.toml | ||
| clippy.toml | ||
| README.md | ||
mind-body
The Mind's body: the control store, the launch primitive, the mind-heartbeat
timeline 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 stops a child that outlives the flush (SIGINT, then SIGTERM and SIGKILL). 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 heartbeat
mind-heartbeat is the one process that decides who wakes and when: each beat falls when the Minds' voted tempo has passed and goes to the Mind that has waited longest, bent by the urgency she declares and a member addressing her; the operator tagging or naming a Persona launches her at once. mind-heartbeat timeline prints its latest record.
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.