docs: M5c spec: conclusions go to <id>_memory; no retraction, notes cannot be undone
A memory write is made during a turn, before that turn's Honcho session exists, and a session whose turns are never synced has none, so each Boxmaker session's conclusions go to its own <id>_memory session, holding the agent's peer and the owner's. `bxctl memory undo` refuses notes (they are append-only), so the undo-of-a-fleet-note row and its retraction go. Owner, 2026-09-28. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -99,11 +99,13 @@ spotting the phrase:
|
|||||||
| an untrusted note | a message in the fleet workspace, from the agent's peer |
|
| an untrusted note | a message in the fleet workspace, from the agent's peer |
|
||||||
| a flagged note (a sanitizer flag rule matched) | nothing: it stays local (owner) |
|
| a flagged note (a sanitizer flag rule matched) | nothing: it stays local (owner) |
|
||||||
| `bxctl memory undo` of an edit whose conclusions were written | those conclusions deleted; any it had deleted, written again |
|
| `bxctl memory undo` of an edit whose conclusions were written | those conclusions deleted; any it had deleted, written again |
|
||||||
| `bxctl memory undo` of an untrusted note already in the fleet | a retraction message beside it, `retracted: <the note>`, from the agent's peer; the original stays, since Honcho cannot delete a message (owner) |
|
|
||||||
|
|
||||||
A conclusion's observer and observed are the same peer, which is Honcho's own picture of that
|
A conclusion's observer and observed are the same peer, which is Honcho's own picture of that
|
||||||
peer: a `user.md` entry is the owner's (it is about the owner); a `memory.md` entry or a note is
|
peer: a `user.md` entry is the owner's (it is about the owner); a `memory.md` entry or a note is
|
||||||
the agent's. Each carries the Honcho session of the Boxmaker session in which the write was made
|
the agent's. Each goes into its Boxmaker session's memory session in Honcho, `<id>_memory`, which
|
||||||
|
holds the agent's peer and the owner's and is created on first use, whether or not any turn of the
|
||||||
|
session is synced (a write is made during a turn, before that turn's session exists; owner,
|
||||||
|
2026-09-28). An undo's conclusions carry the undone edit's session. Every conclusion has a session
|
||||||
(Honcho leaves session-less conclusions out of session-filtered queries, and its automatic
|
(Honcho leaves session-less conclusions out of session-filtered queries, and its automatic
|
||||||
dreaming skips a peer whose newest conclusion has none). `memoryd` never deletes a Honcho session:
|
dreaming skips a peer whose newest conclusion has none). `memoryd` never deletes a Honcho session:
|
||||||
that would delete the conclusions stamped with it.
|
that would delete the conclusions stamped with it.
|
||||||
@@ -128,7 +130,7 @@ rebuilt from them.
|
|||||||
5. **Send.** One worker thread in `memoryd` sends what is decided and not yet sent, oldest first:
|
5. **Send.** One worker thread in `memoryd` sends what is decided and not yet sent, oldest first:
|
||||||
for a turn it creates the Honcho workspace, peers and session on first use (section 6), then
|
for a turn it creates the Honcho workspace, peers and session on first use (section 6), then
|
||||||
adds the two messages as one batch; for a memory write it creates or deletes the conclusion,
|
adds the two messages as one batch; for a memory write it creates or deletes the conclusion,
|
||||||
or, for an untrusted note, adds the message to the fleet workspace (or its retraction).
|
or, for an untrusted note, adds the message to the fleet workspace.
|
||||||
Each send is recorded in the ledger with Honcho's ids.
|
Each send is recorded in the ledger with Honcho's ids.
|
||||||
6. **Honcho down** (a connection error, a timeout, a 5xx): the worker waits and tries again,
|
6. **Honcho down** (a connection error, a timeout, a 5xx): the worker waits and tries again,
|
||||||
doubling the wait from 5 s to 10 minutes. It logs the outage once, when it starts, and once
|
doubling the wait from 5 s to 10 minutes. It logs the outage once, when it starts, and once
|
||||||
@@ -205,8 +207,7 @@ Honcho's search endpoints find messages only, and the mirrored memory writes in
|
|||||||
trusted workspace are conclusions: so for those `recall` also queries conclusions
|
trusted workspace are conclusions: so for those `recall` also queries conclusions
|
||||||
(`POST /conclusions/query`, which needs the observer and the observed; for a conclusion `memoryd`
|
(`POST /conclusions/query`, which needs the observer and the observed; for a conclusion `memoryd`
|
||||||
wrote, both are the same peer). The fleet workspace holds messages, so one search finds the notes
|
wrote, both are the same peer). The fleet workspace holds messages, so one search finds the notes
|
||||||
of every peer in it, including agents this one was never told about (owner); a retracted note is
|
of every peer in it, including agents this one was never told about (owner).
|
||||||
found beside its retraction.
|
|
||||||
|
|
||||||
## 9. `ask_memory`
|
## 9. `ask_memory`
|
||||||
|
|
||||||
@@ -302,8 +303,8 @@ that records requests and answers from fixtures taken from rift's OpenAPI docume
|
|||||||
- **Keys**: a configured key is sent as a bearer token to its workspace only, and appears in no
|
- **Keys**: a configured key is sent as a bearer token to its workspace only, and appears in no
|
||||||
log line or error; without a key, no `Authorization` header; a 401 stops that workspace's sends
|
log line or error; without a key, no `Authorization` header; a 401 stops that workspace's sends
|
||||||
only, once logged.
|
only, once logged.
|
||||||
- **The fleet**: an untrusted note is a message from the agent's peer; its undo is a retraction
|
- **The fleet**: an untrusted note is a message from the agent's peer; the fleet workspace is
|
||||||
message; the fleet workspace is created with reasoning, summaries and dreaming off; a note
|
created with reasoning, summaries and dreaming off; a note
|
||||||
from a peer this agent's configuration does not name is found by `recall`.
|
from a peer this agent's configuration does not name is found by `recall`.
|
||||||
- **`recall`**: the fleet sources with their tags and classes; a source that times out is one
|
- **`recall`**: the fleet sources with their tags and classes; a source that times out is one
|
||||||
`unavailable` line and the rest still answer; the agent's own workspaces are not searched.
|
`unavailable` line and the rest still answer; the agent's own workspaces are not searched.
|
||||||
@@ -339,7 +340,9 @@ With this spec, as their own commits:
|
|||||||
(sections 4 and 11).
|
(sections 4 and 11).
|
||||||
2. **The fleet**: every peer in the fleet workspace is a member of the fleet. Fleet notes are
|
2. **The fleet**: every peer in the fleet workspace is a member of the fleet. Fleet notes are
|
||||||
therefore messages, which one search finds whoever wrote them; an undone note gets a
|
therefore messages, which one search finds whoever wrote them; an undone note gets a
|
||||||
retraction message, since Honcho cannot delete a message (sections 3, 4, 8).
|
retraction message, since Honcho cannot delete a message (sections 3, 4, 8). (2026-09-28:
|
||||||
|
`bxctl memory undo` cannot undo a note, since notes are append-only, so no retraction is ever
|
||||||
|
sent and the row went from section 4; owner.)
|
||||||
3. **For `roncho`'s agent**, accepted (found 2026-09-27, none blocking): make the config file
|
3. **For `roncho`'s agent**, accepted (found 2026-09-27, none blocking): make the config file
|
||||||
opt-in (it supplies an `api_key` today; the README's "reads no environment variables" is
|
opt-in (it supplies an `api_key` today; the README's "reads no environment variables" is
|
||||||
wrong); evidence decoding requires `observer_id` and `observed_id`, which rift's schema lacks;
|
wrong); evidence decoding requires `observer_id` and `observed_id`, which rift's schema lacks;
|
||||||
|
|||||||
Reference in New Issue
Block a user