Step::Failed carries the decoded reply's intent into the closing rationale. The retell note
is rendered inside the line after the instruction. A flush written alone opens with the
instruction; flush_ask owns the flush text. recent_runs indents after every line break a
reader splits on, not only newline.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A flush written alone shows the people and open items the session's lines showed; which of
those are still open is read when a reply is decoded. A settle on a shown item that an
earlier turn closed is dropped with a trace note and the rest of the reply is admitted.
The flush no longer reads the mind at write time, so flush_text returns a String again.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
TURN_INSTRUCTION heads every line; MESSAGES_HEADER replaces the three mailbox lines and prints only with messages; WAKE_QUESTION or TRAFFIC_QUESTION closes the line. PersonaReply.intent is required and first, bounded 1..=600, traced first, and her last intent closes the run and returns in recent_runs for her own turns too. The flush no longer says to be silent.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PersonaInbox.seen accumulates every person a write() showed; flush_text
becomes fallible and, when no line awaits its echo, sets Written for the
flush line from seen plus the open items and people read now.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Eyes facts: reconstructed wake and traffic inputs with file:line, reply schema,
per-Mind behaviour since persona-session went live, refused flush replies.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A brake hold that stops her unit left an in-force run that counted as busy
forever; the row was never launched, so slot step 0 never closed it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The one conflict was the public-surface snapshot: the branch's new
launch::StopScope line beside main's LaunchOutcome::Tripped { run } line;
both kept.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The single retell slot becomes one merged Retell (every refused delivery not yet told again, in seq order, with the refusals of the most-refused one), so the ack rule's lowest unanswered seq never loses a batch. The refusal count travels with the batch through its Written line and echo instead of resetting on any answer; a batch's third refusal ends the session by the existing failure path.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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>
open_and_launch decides what an open question holds, once, after the breaker reads and just before the admission: LaunchRequest.held and Held's Default are gone, so no caller can launch a held item and a caller's earlier read (claimable) is advisory only. launch::retire_answered and its heartbeat call are deleted: whoever answers retire resolves the claims, and the hold persists until they do. The retire option text is restored to the r4 wording.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>