Files
boxmaker/docs/plans/M5c1/files/runbook-honcho-config-invalid.md
T
kyleandClaude Opus 5.5 0e1e070fc3 M5c-1 plan: task 06, memoryd checks [honcho] and its keys at start
memoryd.toml gains an optional [honcho] section, [[honcho.read]] and the
Honcho keys in [secrets.<name>], checked at start into
memoryd::honcho::config::HonchoConfig (13 reasons, runbook entry
honcho-config-invalid given as a fragment), and [sockets] state for
brokerd's state.sock. Keys are checked, never read; no [honcho] leaves
memoryd as it was. memoryd enables bxcore's feature secrets.

Checks: a reference at ref 05 + this task passes make gate with 1188
tests (1171 + 17); /tmp unchanged around the gate; the given tests fail
before as the task says (two targets do not compile, 4 start tests
fail); 49 one-line mutations of the reference, all caught (one gap, a
URL with a user and no password, found and closed); the new tests 40
times under CPU load, no failure; a replay from the task text on a fresh
ref-05 worktree with its own target is byte-identical and passes the
gate, and every before block was found once; given files pass fmt and
the 500-line limit; no chat-template tag in any file.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 02:48:16 -07:00

51 lines
2.8 KiB
Markdown

## honcho-config-invalid
**What you see.** `memoryd` exits 1 at start, before it takes its lock or touches its home, with
one line naming its config file and the reason, then this entry:
```text
memoryd: /etc/boxmaker/memoryd.toml: [honcho] agent and owner are both "kyle": the agent's peer must not be the owner's
see docs/runbook.md#honcho-config-invalid
```
**Why.** `[honcho]` in `memoryd.toml` names this agent's peer, the owner's peer and the
workspaces the agent writes to and reads in Honcho, and `[secrets.<name>]` where each workspace's
key comes from (M5c spec, section 10). A wrong name would send turns and memory to a workspace
they do not belong in, so `memoryd` checks the section before it starts. The reasons:
- `url` is not `http://` or `https://`, a host (letters, digits, `.` and `-`) and an optional
port (1 to 65535), and nothing else: no path, not even a `/`, and no user or password. The line
does not repeat the URL.
- A name (`agent`, `owner`, `trusted`, `untrusted`, `fleet`, and each `[[honcho.read]]`'s `agent`
and `workspace`) is not 1 to 512 of `a-z`, `A-Z`, `0-9`, `_` and `-`, Honcho's own rule: a `.`
or a space is not allowed.
- `agent` and `owner` are the same peer, or two of `trusted`, `untrusted` and `fleet` are the same
workspace.
- A `[[honcho.read]]` names this agent, names an agent twice, or names one of this agent's three
workspaces; or its `trust` is not `trusted` or `untrusted`, or its `class` not `public`,
`private` or `secret` (all lower case).
- A `[secrets.<name>]` is not `honcho_trusted`, `honcho_untrusted`, `honcho_fleet` or
`honcho_read_<agent>` for an agent in `[[honcho.read]]`; or it does not name exactly one
well-formed `credential`, `env` or `file` (as in `secret-unavailable`); or there is no
`[honcho]` section for it.
A key missing from `[honcho]` or `[[honcho.read]]`, an unknown key, or a value of the wrong type
is a parse error instead, and points to `memoryd-start-failed`. A key's value is not read here,
only where it comes from, and it is never printed. While `memoryd` is stopped nothing is synced,
and `bxctl memory sync` cannot reach it.
**Confirm.** The line quotes the table and the value. Open the file it names and compare the
section with the M5c spec, section 10 (`docs/specs/2026-09-27-m5c-honcho.md`):
```sh
grep -n -A6 -e '^\[honcho\]' -e '^\[\[honcho.read\]\]' -e '^\[secrets\.' <config path>
```
**Fix.** Correct the value. Keep a name that is already in use as it is: a new `trusted`,
`untrusted` or `fleet` sends everything from then on to a new, empty workspace, and a new `agent`
is a new peer. `agent` is this agent's own name, different on each agent; `owner` and `fleet` are
the same in every agent's file. To turn Honcho off, remove `[honcho]`, its `[[honcho.read]]`
tables and every `[secrets.honcho_…]`.
**Check.** `memoryd serve --config <path>` prints `memoryd: serving`.