Given tests: Action::Turn (not To), send_turn of epoch 1, clippy on
compact_summary, jsonl-without-baseline, live turn after compact sends
the carry. send_turn maps Damaged to Local("log") as read_turn did.
Gate counts 1484 → 1508. Mutations recorded in the README.
Co-Authored-By: Grok 4.6 <noreply@x.ai>
Eight closed tasks for epochs and compaction, then ten for the scheduler,
ToolSummary, and tiers. Given tests first. Gate 1456 → 1507 → 1572.
Co-Authored-By: Grok 4.6 <noreply@x.ai>
Spec 13 requires that a secret session's query is sent unless the query
itself holds a known-prefix secret. serve.rs already ignores MemoryCall
taint on both read tools; the serve tests always sent Private. A skip of
Honcho for Secret would not have failed. Each suite now has one call at
class secret that asserts the fake received the search or chat.
Co-Authored-By: Grok 4.6 <noreply@x.ai>
json_prints_only_json_and_never_asks_brokerd failed once under load: the helper wrote the typed
input to a `bxctl chat --json` that never reads stdin and had already exited, and unwrapped the
broken pipe. A broken pipe on that write is now accepted; any other error still fails the test,
and a test whose input must be read checks the output.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
From M5c-2 task 00's recordings on rift: a chat at reasoning low returned raw tool-call markup,
and a search with no match still returned the nearest messages.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Workspace search with a limit and with no match, conclusion queries for the owner's and another
agent's peer, and what a workspace that does not exist answers to search, query, chat and delete.
Recorded through roncho 1.0.0's blocking client in the throwaway workspace boxmaker-plan-probe,
deleted afterwards.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Owner, 2026-09-28: recall and ask_memory query Honcho from a session of any class, since Honcho
stores no query and rift's models and telemetry stay on the owner's hosts; the assumption is
written down, with what changes if rift's configuration does. A query holding a known-prefix
secret is refused. ask_memory names at most two workspaces, both asked at once inside brokerd's
wait. A session keeps the tools array it started with, so M5c-2 needs no new epoch.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Every M5c-1 item of the spec's section 13 passed against a build of m5c1 with the review's fixes:
clean, untrusted and secret turns routed as decided, a remembered fact concluded at once and
deleted by undo, a secret session's memory write skipped, and an outage waited out and drained
with nothing sent twice. The check's three rift workspaces were deleted afterwards.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The serve tests waited for the socket file, then killed `loopd` and read its stderr, but the
socket is bound before its mode is set and before "serving on" and the broker notice are printed,
so a kill in between lost those lines (`pointers` failed once under load in M5c-1 task 15). The
broker notice now comes before the bind, so "serving on" is the last startup line, and the tests
wait for it (`tests/support/serving.rs`).
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Every path that told the loop `Ended` did so while the handler still held the receiver of the
approver's answer; it was dropped only when the handler returned. An answer sent in between was
taken, reported to the approver as sent, and lost. `end` now takes the receiver and drops it
first. `brokerd_closing_first_ends_it_as_no_longer_pending` failed 10 of 60 runs under load
before, and 0 of 100 after.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The review of tasks 01 to 15 in the implementer log, with the six findings fixed in review. Nine
tips for writing tasks from the run's transcripts and the review, new evidence for I16 and I17,
and four rules in AGENTS.md: the Cargo registry is outside the repository, `git stash -u` and the
README's flaky tests, an edit never anchors on another line, and what a test count includes.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The worker marked a turn failed on any error reading its log. A missing log,
a damaged line or a turn not found still fail it; any other I/O error is now
waited out with the outage's doubling wait, logged once when it starts and
once when the log reads again (pointer session-log-damaged, whose runbook
entry now covers it), shown by bxctl memory sync, and the turn stays waiting.
read_records tells an unreadable file from a damaged line (read_log is
unchanged). The message helpers move from worker.rs to honcho/messages.rs,
re-exported, to keep worker.rs under 500 lines.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
has_secret masked each character a character rule matches to a space, so one
zero-width space inside a key cut it into two runs too short to match. The
secret rules now also run on the text with those characters deleted, and the
text is a secret if either matches.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>