Files
boxmaker/docs/plans/M5a/15-soul-and-device.md
T
kyleandClaude Opus 5.5 de1032157b Plan M5a: local memory in 15 tasks
memoryd (files, the check, edits, journal, index, recall, serving),
the memory tools and built-in grants in brokerd, the memory block in
loopd, bxctl reindex and memory, and the device checks with memoryd.

Each task was built as a reference and gated. Each was replayed on its
own at its end state (854 to 936 tests) and mutation-checked. Each
skeleton compiles and fails its tests. Every todo comment was read
beside its signature.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-24 15:32:54 -07:00

56 lines
2.3 KiB
Markdown

# M5a task 15: the starter soul, and the device checks with `memoryd`
**Branch:** `m5a` (run `git switch m5a`; `git status --short` must be empty, otherwise stop)
**Commit subject:** `M5a: the starter soul.md, and the device checks with memoryd running`
## Goal
- `config/soul.md`, the generic starter persona `memoryd` copies to `memory/soul.md` the first
time (M5a spec, section 3). The owner rewrites it.
- `make verify-device` runs `memoryd` beside `loopd serve` (which starts no session without it
since task 13), and the baseline check now measures the baseline **with memory**: the starter
soul with empty files, and every file at its limit. Both must stay at 3,000 tokens or less.
Measured on the reference: 881 and 2,432.
This is the only task that needs straylight.
## Files
- Copy: `config/soul.md`, `crates/loopd/tests/support/memoryd.rs`, and a **new version** of the
given `crates/loopd/tests/device.rs`
- Modify: `Makefile`, `docs/implementer-log.md`
## The edit, exactly
**`Makefile`**, in `verify-device`: after the line
` BOXMAKER_INFERPROXY=$(CURDIR)/target/debug/inferproxy BOXMAKER_BXCTL=$(CURDIR)/target/debug/bxctl \`
add the line (a tab first, as in the lines around it)
```make
BOXMAKER_MEMORYD=$(CURDIR)/target/debug/memoryd \
```
## Steps
- [ ] **1. Copy** the three files; edit the `Makefile`.
- [ ] **2. Run the gate.** `make gate`: `gate: ok` (the device tests are ignored there; the count
is unchanged, about 936).
- [ ] **3. Check the server is free.** `curl -s "http://straylight:11434/slots?model=ornith-1.5-35b-a3b"`:
slot 0 must show `"is_processing":false`. If it is busy, wait a minute and look again; if it is
still busy after ten minutes, stop and report.
- [ ] **4. Run the device checks.** `make verify-device`. Expected: `6 passed`, then
`verify-device: ok`. `the_baseline_fits_the_token_budget` fails with the number of tokens if
either baseline is over 3,000.
- [ ] **5. Log and commit.** `git add -A config/soul.md crates/loopd Makefile docs/implementer-log.md Cargo.lock && git commit`
This is the last task of M5a. Stop after the commit.
## Done when
- `make gate` prints `gate: ok` and `make verify-device` prints `verify-device: ok`.
## Stop and report if
- straylight cannot be reached, or `make verify-device` fails. Report its output; do not change a
test or the soul to make it pass.