review: M5c-2 review, lessons T59 and T60, and the gate-count rule

Co-Authored-By: Grok 4.6 <noreply@x.ai>
This commit is contained in:
2026-10-02 20:24:43 -07:00
co-authored by Grok 4.6
parent f80842640c
commit 1938b746ab
4 changed files with 71 additions and 7 deletions
+53
View File
@@ -942,3 +942,56 @@ What was good: every given file and every whole edit arrived exactly as written,
a row with no stop, including task 15's thirty edits over seventeen test files. Where Ornith filled
bodies from comments, the code agreed with the reference in behaviour everywhere checked. All six
findings were in the plan, and the reference had each of them.
### M5c-2, tasks 01 to 12 — reviewed 2026-10-02 by the design model (Grok 4.6)
Accepted, with one test-only fix made in review (below). Tasks 01 to 12 by Ornith-1.5-35B-A3B
through `tools/run-plan.sh`, run on talos 2026-09-28 to 2026-09-29, device-checked on straylight
2026-10-02 (UTC 2026-10-03). The branch differs from the reference (`~/boxmaker-refs/m5c2-ref.bundle`
on straylight, `d051c89`) in three skeleton bodies only (`honcho/recalled.rs`, `search.rs`,
`ask.rs`), each an equivalent rewrite; `read.rs`, `client.rs`, `config.rs` and `start.rs` match
the reference, including task 05's `read.rs` against both the given file and the reference.
| Check | Result |
|---|---|
| 12 task commits, each with `Co-Authored-By: ornith-1.5-35b-a3b <agent@wntrmute.dev>` | pass |
| Runbook and `Cargo.toml` / `Cargo.lock` identical to the reference | pass |
| Log rows | 12, all `done`; first gate pass in every row (task 01 ran the gate twice, both pass) |
| `make gate` on talos (rustc 1.98.1), 2026-10-02 | `gate: ok`, 1454 tests at task 12, the plan's count; 1456 after the review's two tests |
| Independent review of `git diff master m5c2 -- crates` against the spec (T58) | one finding, below; sound: fleet and untrusted-read hits taint, a trusted read workspace's do not; own workspaces never searched by `recall`; a key-shaped query or question sends nothing; no Honcho call under the state lock; keys and bodies never logged; Honcho and local text one indented line (T37); `ask_memory` at most two workspaces at `minimal`; waits 170 s / 180 s |
Task 05's run log `.state/runs/M5c2/05-memoryd-honcho-readers.log` is a resume after HEAD was
already at task 12 (power loss wiped the original transcript). Commit `b370c60` matches the task
and the reference; Laguna did not re-commit. Task 06's row records an import reorder by the edit
layer, restored to rustfmt's order before the commit; `d8c396e` only adds `pub mod recalled` and
makes `when` `pub(crate)`. The `honcho_worker` flake listed in the plan README did not fire.
| # | Severity | Where | Finding | Resolution |
|---|---|---|---|---|
| 1 | medium | plan (task 12; the reference too) | Spec 8 and 13: a `secret` session's `recall` and `ask_memory` still query Honcho. `serve.rs` ignores `MemoryCall.taint` on those paths, and the unit tests cover `has_secret`, but nothing at the serve layer against the fake Honcho pinned a `secret` taint (T58). | Review `f808426`: `a_secret_session_still_asks_honcho` in `honcho_recall_serve.rs` and `honcho_ask_serve.rs` |
| 2 | nit | tests | A few recall tests share the fleet fixture with a read-agent workspace, so they do not isolate an untrusted read-agent from the fleet. Behaviour is still labelled by source. | Noted |
| 3 | process | driver (task 05) | A power-loss resume truncated the task's run log and continued from HEAD at task 12. The commit itself is complete. | Tip T60; AGENTS.md: stop if the task's commit and a `done` row are already in HEAD |
Device check, 2026-10-02, on straylight (a `nix build` of `m5c2` at `f808426`; Ornith slot 0;
gatewayd connected to the owner's Mattermost as `boxmaker0`; recall and `ask_memory` were driven
by `bxctl chat --say`, not a Mattermost post; rift, in the check's workspaces only,
`boxmaker-check-*` and `boxmaker-check2-*`, deleted afterwards). Every item of the spec's section
13 for M5c-2 passed:
| Check | Result |
|---|---|
| Agent 2 writes a fleet note | `MemoryCall` with `untrusted: true` to agent 2's `run/broker-memory/memory.sock`; in `boxmaker-check-fleet` as peer `boxmaker-check2`, text `M5c2-check: boxmaker-check2 tea stocks are low`, within 2 s |
| `recall` of that note | Direct `MemoryCall` and a `bxctl chat` turn: `[1] memory-tainted · fleet: boxmaker-check2 said, 2026-10-03 03:18 UTC · private`; `TurnDone.untrusted` true |
| `ask_memory` of `own` | First `bxctl` turn: `own: unavailable` (HTTP 404; the trusted workspace did not exist yet, the same answer the tests give a missing workspace). After that turn had been mirrored: `[1] memory · own · private` with a dialectic paragraph, within the limit; `TurnDone.untrusted` false |
| Honcho unreachable | agent 1's `memoryd` restarted with `HONCHO_URL=http://127.0.0.1:1`; `recall` of `tea stocks` returned two local hits plus `boxmaker-check2: unavailable` and `fleet: unavailable`; log: `Honcho is unreachable (connect)` |
| `make verify-device` | 6 passed in 24 s, `verify-device: ok` (slot 0, `UPSTREAM=127.0.0.1:11434`); the baseline with `ask_memory`'s schema still fits the 3,000-token budget |
What was good: twelve tasks, first-gate pass in every row, no stop, skeletons filled to match the
reference in behaviour. The one product finding was a missing test of a path the code already
took.
Open items carried forward: rift's dialectic at `reasoning: low` still returns raw tool-call
markup (`ask_memory` stays at `minimal`); turn numbers restart per epoch; a `bxcore` function for
`sanitize::refuse`'s secret rules to replace `has_secret`; Mattermost usernames `a.b` and `a_b`
map to the same Honcho peer; queries from `secret` sessions go to Honcho on the assumption in
spec 8 and `docs/egress.md`.