diff --git a/docs/plans/M5c2/04-loopd-ask-memory.md b/docs/plans/M5c2/04-loopd-ask-memory.md index eae0219..3fe4ef5 100644 --- a/docs/plans/M5c2/04-loopd-ask-memory.md +++ b/docs/plans/M5c2/04-loopd-ask-memory.md @@ -64,7 +64,10 @@ This is the complete list. - **The schema's JSON.** `serde_json::json!` sorts object keys (the crate is built without `preserve_order`), so the request carries the keys in alphabetical order whatever order the source writes them in. The given test compares the whole schema, byte for byte. -- **`maxItems`** is JSON Schema's limit on an array's length. `brokerd` refuses a third name +- **`maxItems`** is JSON Schema's limit on an array's length. `llama-server` turns the tool + schemas into a grammar, and its converter supports it: llama.cpp's `grammars/README.md` + (master) shows `minItems: 10` and `maxItems: 100` becoming the repetition `{9,99}`, and its + list of the converter's limitations does not name either. `brokerd` refuses a third name anyway, with a sentence telling the model to ask again (task 01). - **Where `ask_memory` goes.** It is a core tool, but not one `loopd` answers itself: like `recall`, a call is sent to `brokerd` as a `ToolRequest` whose `tool` is `"ask_memory"` @@ -99,6 +102,7 @@ This is the complete list. | Item | Where | |---|---| | `serde_json::json!` | S2, as in `recall_schema` | + | JSON Schema `maxItems` on an array, in a tool's `parameters` | S2; supported by llama.cpp's schema-to-grammar converter (`grammars/README.md`, master) | | `crate::llama::ToolSchema { name, description, parameters }` | S2, as in `recall_schema` | | `Entry { schema, core }`, `Vec::insert(index, value)` | T2, as in `m5a` | | `Duration::max(self, other) -> Duration` | P4 | @@ -257,7 +261,8 @@ become ```rust /// The longest `BrokerPort` waits for an `ask_memory` answer, unless `[broker] timeout_ms` is -/// longer: `brokerd` waits 170 s for `memoryd`, whose Honcho chats have 150 s (M5c spec, section 9). +/// longer: `brokerd` waits 170 s for `memoryd`, whose Honcho chats have 150 s (M5c spec, +/// section 9). pub const ASK_MEMORY_WAIT: Duration = Duration::from_secs(180); /// The runbook entry every outage line ends with. pub const POINTER: &str = "see docs/runbook.md#broker-unavailable";