Files
boxmaker/docs/plans/M4b/16-brokerd-refusing-message.md
kyleandClaude Opus 5.5 f6dd7f1741 M4b review, and follow-up tasks 16 to 18
The review of tasks 01 to 15 goes in the implementer log, with the
device check against the owner's Mattermost. Three follow-ups:

- 16: the refusal without a runner says why.
- 17: the texts that say who asked.
- 18: approvals from non-approvers in direct or group messages go to
  an approver.

Task 14's given serve_approvals.rs becomes serve_approvals.rs-task14,
since task 18 hands over a new version. Tip T31 is added.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-24 11:35:24 -07:00

64 lines
2.3 KiB
Markdown

# M4b task 16: `brokerd`'s refusal without a runner says why
**Branch:** `m4b` (run `git switch m4b`; `git status --short` must be empty, otherwise stop)
**Commit subject:** `brokerd: the refusal without a runner names the missing [runner] section`
## Goal
When `brokerd.toml` has no `[runner]` section, every allowed call is answered with the fixed
sentence `REFUSING`. It still says `the runner arrives in M3b`, which stopped being true when M3b
merged: the model, and the owner reading its answer, are told to wait for something that has
already happened. Found in the M4b device check (review of 2026-09-24, finding 2). The sentence
becomes:
```text
no tool runner is configured: brokerd.toml has no [runner] section
```
It is still a fixed sentence (it reaches the model), so nothing else changes.
## Files
- Copy: a **new version** of the given `crates/brokerd/tests/runner.rs` (one assertion: the new
sentence)
- Modify: `crates/brokerd/src/runner.rs`, `docs/implementer-log.md`
- Do **not** change `crates/loopd/tests/broker_port.rs`: it has the old sentence as test data
only, and `loopd` never checks it.
## The change, exactly
In `crates/brokerd/src/runner.rs`, the line
```rust
pub const REFUSING: &str = "the runner arrives in M3b";
```
becomes
```rust
pub const REFUSING: &str = "no tool runner is configured: brokerd.toml has no [runner] section";
```
The doc comment above it stays as it is.
## Steps
- [ ] **1. Copy.** `git switch m4b`, then
`cp docs/plans/M4b/files/crates/brokerd/tests/runner.rs crates/brokerd/tests/`
- [ ] **2. See it fail.** `cargo test -p brokerd --test runner`. Expected: one test fails,
`the_production_runtime_refuses_every_call`, on the sentence.
- [ ] **3. Make the change.** Run `cargo fmt --all`.
- [ ] **4. See it pass.** `cargo test -p brokerd --test runner`: every test passes. Then
`cargo test -p brokerd`: every suite passes.
- [ ] **5. Run the gate.** `make gate`. Expected last line: `gate: ok`, with the same number of
tests as before this task (about 846).
- [ ] **6. Log and commit.** `git add crates/brokerd docs/implementer-log.md Cargo.lock && git commit`
## Done when
- `cargo test -p brokerd` passes; `make gate` prints `gate: ok`.
## Stop and report if
- Any other test fails because of the sentence. Do not change that test.