From 069cd1686ab2281ae0e0616c1ceceaf97b6d03f5 Mon Sep 17 00:00:00 2001 From: "K. Isom" Date: Fri, 2 Oct 2026 20:51:18 -0700 Subject: [PATCH] docs: M5d spec is approved; the implementer is Ornith Co-Authored-By: Grok 4.6 --- CLAUDE.md | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index c8190db..a60e7e5 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -31,10 +31,12 @@ through the owner's `roncho` (v1.0.0 on crates.io; `docs/specs/2026-09-25-roncho and `docs/specs/2026-09-27-m5c-honcho.md`). M5c-1 (the write path) is done and merged, reviewed in `docs/implementer-log.md`. M5c-2 (the read path: `recall` over the fleet and `ask_memory`, spec sections 3, 8, 9, 10 and 13) is done, reviewed in `docs/implementer-log.md` and checked on -straylight against rift; no finding is open. M5d is the scheduler. P22 (proposed, not applied) makes Boxmaker a fleet of +straylight against rift; no finding is open. M5d (scheduler and compaction, spec +`docs/specs/2026-10-03-m5d-scheduler.md`) is approved, in two halves: M5d-1 epochs and compaction, +then M5d-2 the scheduler. P22 (proposed, not applied) makes Boxmaker a fleet of independent agents, one per host, deployed with Nix in a last milestone, M8; `flake.nix` builds every binary, the tool image and a dev shell. Work happens on titan (macOS, no Nix); build and run -on straylight, where `~/src/boxmaker-m5c2` is a clone built with `nix build`. The owner's Honcho +on straylight, where a clone is built with `nix build`. The owner's Honcho client `roncho` is at `~/src/roncho`. Branches land on master by rebase and fast-forward, never a merge commit. The owner's Mattermost settings and the bot's token are in `mattermost.env` at the repository root (on straylight, @@ -51,18 +53,18 @@ what is in flight. which also lists proposed changes that are not yet applied. - `docs/inference-contract.md` holds the M0 measurements from straylight. Where it and the brief disagree, the measurements are newer. -- `docs/specs/` holds design specs; `docs/plans/M/` holds the task files Laguna works from, +- `docs/specs/` holds design specs; `docs/plans/M/` holds the task files Ornith works from, and `files/` under it holds the tests and fixtures the tasks copy in. `AGENTS.md` holds the implementer's standing rules; its code rules apply to any code written here too. -- `docs/implementer-log.md` is Laguna's own record, one row per task. Reviews go at the bottom. -- `docs/implementer-lessons.md` turns review findings into tips, for Laguna and for writing its +- `docs/implementer-log.md` is the implementer's own record, one row per task. Reviews go at the bottom. +- `docs/implementer-lessons.md` turns review findings into tips, for Ornith and for writing its tasks. Every milestone review updates it, and short general rules are promoted into `AGENTS.md`. - Do not edit the repo while Laguna has a task in flight: its tasks require a clean working tree. + Do not edit the repo while Ornith has a task in flight: its tasks require a clean working tree. - `spike/` is throwaway measurement code, not harness code. -Roles: implementation is done by Laguna S 2.1 (served by straylight) through OpenCode on this +Roles: implementation is done by Ornith-1.5-35B-A3B (served by straylight) through OpenCode on this machine, which reads `AGENTS.md`. Builds are deployed to straylight afterwards. Design, specs, -measurement and review are done here. Write plans for Laguna as small +measurement and review are done here. Write plans for Ornith as small closed tasks: exact paths, given type signatures, verified crate APIs, tests specified first, and "stop and report" instead of judgement calls. The model the harness serves is Ornith-1.5-35B-A3B. @@ -131,8 +133,8 @@ its KV cache, so any change to an earlier byte of the prompt forces an expensive - Tool results are size-capped when first appended and never trimmed later. - The baseline (system prompt, tool schemas, the three memory files) stays at 3,000 tokens or less, measured with the server's tokenizer. -- Compaction happens only when the session is idle, and starts a new epoch - (`sessions//.jsonl`). Old logs are kept. +- Compaction runs after a turn at or above 85% of `n_ctx` (configurable), and starts a new epoch + (`sessions//.jsonl`). Old logs are kept. A quiet session stays on its current epoch. - Every request carries `id_slot`, and a session never changes slot. The server is shared, so slots are not reserved: a cold cache is a normal event that `loopd` logs, never an error. - Streaming always, with `return_progress: true`. Timeouts are "no bytes for N seconds", never