diff --git a/CLAUDE.md b/CLAUDE.md index de9658d..75cbe75 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -12,9 +12,10 @@ M3a (`brokerd`'s decision path, spec `docs/specs/2026-09-18-m3a-decision-path.md merged, reviewed in `docs/implementer-log.md`; its open findings (17, 18, 20) are listed there; 14 was closed by M3b task 02. M3b (the container runner and the four tools, `docs/specs/2026-09-22-m3b-runner.md`) is done and merged: tool containers run from the image `deploy/tools-image.nix` builds, checked on straylight. -M4 is split: M4a (`gatewayd`, conversations over Mattermost) is specified in -`docs/specs/2026-09-23-m4a-gateway.md` (approved) and planned in `docs/plans/M4a/` (15 tasks, -branch `m4a`); M4b (approvals over Mattermost) follows. The owner's Mattermost settings and the +M4 is split: M4a (`gatewayd`, conversations over Mattermost, spec +`docs/specs/2026-09-23-m4a-gateway.md`) is done and merged, reviewed in `docs/implementer-log.md` +and checked end to end against the owner's Mattermost; no finding is open. M4b (approvals over +Mattermost, summarised in the M4a spec, section 12) is next and not yet specified. The owner's Mattermost settings and the bot's token are in `mattermost.env` at the repository root: ignored by git, never committed, and the token is never printed. Straylight now serves Ornith as four slots over one 262,144-token pool; see @@ -58,8 +59,8 @@ requests, check `GET /slots?model=ornith-1.5-35b-a3b` so you do not evict someon runs `brokerd`, `loopd` and an approval end to end against it. - `bxctl` is the owner CLI: `bxctl chat` talks to a running `loopd serve --config `; `bxctl approvals`, `approve`, `refuse`, `grants check` and `audit verify` talk to `brokerd serve` - (or read the audit log directly); `bxctl reindex` comes in M5. `gatewayd` prints "not - implemented" and exits 2 until M4a task 15. + (or read the audit log directly); `bxctl reindex` comes in M5. `gatewayd serve --config ` is the + Mattermost channel (M4a). ## Architecture in brief