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>
51 lines
2.8 KiB
Markdown
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`.
|