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

2.3 KiB

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)

		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.