Soul's probe_ack.rs reproductions as committed tests, with a Timed child that moves the clock past a poll; they fail at bde8ef6.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Deliveries are told in seq order, so an unanswered one below an answered seq
means nothing answered lies below it; the ack waits for the retold batch's
answer. The test reads the next process's opening line as JSON.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Soul s1 retell-ack-passes-unanswered, between-sessions-read-unpinned and
poll-retell-guard-unpinned. after_echo moves the clock when the echo is
handed out, so a poll falls due while the turn runs and unanswered 1 is
pending; the old during-based test jumped before the driver read the clock.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
act no longer acks. result acks through the highest answered seq of the
process, never past a delivery still told and unanswered (the retold batch or
a line written and not yet echoed), and only forward. Soul s1
retell-ack-passes-unanswered: a newer turn's ack passed a retold batch, so a
session ending first lost it and the retell's answer acked a lower seq.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Soul s1 scratch-symlink-deputy-write: she could plant a link at the
instructions file in the unit's RUNTIME_DIRECTORY and the organ's next write
followed it onto any path the unit's user can write, the hidden trace included.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
stop_all becomes SystemdLauncher::stop(StopScope): a Mind's two exact units,
or the swarm's mind-self@*.service and mind-persona@*.service globs. Both
holds write first, then stop whatever the write's outcome, with the same four
outcomes. Soul s1 swarm-hold-leaves-live-turn-running: a held swarm brake left
a live Persona turn running with its shell until the turn ended.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A 1 ms clock never reaches the session's idle timers (the loop guard fired); the other two new tests passed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Written from mut3's survivors (process-boundary brake read, poll seq bound, flush_text); not yet run when committed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Written from the first mutation run's survivors (unix_ms, the process-boundary brake read, record_refusal, the batch-id arm).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The base is LF; the wip commits rewrote whole files as CRLF, hiding the real diff. Content unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Deletes first: the PostToolBatch and PreCompact hooks, --settings, the inject subcommand, the on-disk spool and its rename claim, close_past as a standing rule, close_told and the result-timed brief closure, Event::Told/PreCompact, Action::CloseBriefs, FLUSH_MARGIN_S.
Then: drive is the only writer into her session (start, tells, flush). decide counts lines written and lines echoed (--replay-user-messages) and derives idle from them; the flush is answered at the first result after its echo, folded or queued; an error before any answer or a blocked result closes at once; rotation and the idle cache end ask the same flush with a why; the grace is clamped so the signal ladder ends before the cap. DISABLE_COMPACT=1 replaces the PreCompact block. Briefs are follow-ups owned by self-run and sourced from a Persona turn; her Self resolves each she answers, the actuator closes only what she left open at an idle end. inbox::backlog lists, and never closes, the one-time sweep.
Tests: the committed 2.1.312 streams replay through read_usage and decide; the unit tables, a ladder sweep and an event-order enumeration pin the rules.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>