docs: M5d spec is approved; the implementer is Ornith

Co-Authored-By: Grok 4.6 <noreply@x.ai>
This commit is contained in:
2026-10-02 20:51:18 -07:00
co-authored by Grok 4.6
parent ab47840285
commit 069cd1686a
+12 -10
View File
@@ -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<n>/` holds the task files Laguna works from,
- `docs/specs/` holds design specs; `docs/plans/M<n>/` 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/<id>/<epoch>.jsonl`). Old logs are kept.
- Compaction runs after a turn at or above 85% of `n_ctx` (configurable), and starts a new epoch
(`sessions/<id>/<epoch>.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