review: M6b consult

This commit is contained in:
2026-10-04 00:44:55 -07:00
parent 50b24cd42b
commit fa795ed894
3 changed files with 48 additions and 5 deletions
+35
View File
@@ -1210,3 +1210,38 @@ and a runbook entry, no new crate.
Known M6a limits, left as the README lists them: no Mattermost delivery of the child's log; one
background slot (nested children serialise); `brokerd` does not see the spawn; `consult` is M6b.
### M6b, tasks 01 to 06 — reviewed 2026-10-04 by the design model (Grok 4.6)
Accepted. No product finding. Ornith-1.5-35B-A3B through `tools/run-plan.sh` on straylight, branch
`m6b`. The product files match the reference (`~/boxmaker-refs/m6b-ref.bundle`, `5fb05f0`) in
behaviour. The remaining delta is rustfmt import order in `args.rs`, the order of
`SECRET_POINTER` and `NOT_CONFIGURED` in `consult.rs`, a blank line in `main.rs`, and a missing
blank line before `## consult-not-configured` in `docs/runbook.md`. Log rows are the other delta.
The two owner docs commits ahead of the plan (`docs/decisions.md` cloud-led row, `docs/egress.md`
loopback dummy) sit on the branch and were outside the reference. Spec 7 device check is later
(loopback dummy on straylight, no internet).
| Check | Result |
|---|---|
| 6 done task commits, each with `Co-Authored-By: ornith-1.5-35b-a3b <agent@wntrmute.dev>` | pass (plus the plan commit `50e9cc2` and the two section-10 docs commits) |
| Given tests byte-identical to `docs/plans/M6b/files/` (the runbook fragment is appended into `docs/runbook.md`) | pass |
| Protected files (`docs/design.md`, `docs/decisions.md`, `docs/inference-contract.md`, `docs/specs/`, `docs/plans/`, `AGENTS.md`, `CLAUDE.md`) untouched by Ornith | pass |
| Log rows | 6 `done`, newest first, first-gate pass, one gate each. Task 03 notes the given tests were written in place; they `cmp` identical. Task 05's row says `NOT_CONFIGURED` was inserted before `SECRET_POINTER`; the file has it after. Same strings. |
| No `unwrap`, `expect`, `panic!`, `#[allow]` or `unsafe` in new library code; every source file ≤ 500 lines; no new crate | pass |
| `make gate` on this host (rustc 1.98.1 / clippy 0.1.98) | `gate: ok`, 1611 tests, the plan's count |
| Independent review of `git diff 50e9cc2 HEAD -- crates docs/runbook.md` against spec sections 4, 5, 6, 7 (M6b) and 8 | `consult` is not core; `m5c()` pushes it after `subagent`; the epoch tools array is `core_schemas()`; `timeout_for("consult")` is `max` with `CONSULT_WAIT` 180 s and `[broker] timeout_ms` still 120_000; `[consult]` denies unknown keys, stores temperature as `temperature_milli` (default 600, ceiling 0.6), and accepts only `http://127.0.0.1` or `http://localhost`; `load_secret` runs only when the table is present, role `"brokerd"`, and a missing or too-open secret names `consult-secret-unreadable`; `ToolName::Consult` is parsed and is outside `ALL` and `is_memory`; grants reject consult paths and hosts; `covers` returns `Some(None)`; `Podman` refuses with `IN_CONSULT`; `AuditEvent::Decision` carries optional `body` and `Approval` does not; no `[consult]` is `decide_forced` `InvalidArguments` with `consult-not-configured` and still records the body (empty model, 0.6); a matching grant goes through `decide_with_body`; `wire_body` is model, temperature, one user message, no tools; `HttpTransport` is loopback TCP HTTP/1.1; `ConsultStack` wraps `Routed`; the answer is tag-neutralised and capped; posted bytes equal the audit body; `untrusted` default true and `result_class` default `private`; both runbook headings exist. |
No numbered product finding. Task 03's in-place tests and task 05's const-order log line are
process notes. `rule_3`'s unknown-tool sentence still names the four container tools.
Device check is owner-side after this review: a loopback OpenAI-compatible dummy the check starts
on straylight; a clean session's audit body matches a captured request; a session that first
recalled an untrusted note is refused. No internet consult. Production daemons stay untouched.
What was good: six tasks, six first-gate passes, no stops, given tests unedited, every
review-focus case in the plan is covered by a given test and holds, both consult runbook entries
have pointers, no new crate, no vendor names in code.
Known M6b limits, left as the README lists them: no internet consult, no HTTPS, cloud-led
sessions later.