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>
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user