docs: M5d-2 device check on straylight

Spec 7: heartbeat on slot 2, then a following slot-0 turn with cache_n 1398 of 1399;
jobs/tier.toml promoted only a trusted note. Private $HOME, production untouched.
This commit is contained in:
2026-10-03 18:46:31 -07:00
parent 338df8294b
commit cb3e0eeb35
3 changed files with 28 additions and 4 deletions
+3 -2
View File
@@ -35,8 +35,9 @@ straylight against rift; no finding is open. M5d (scheduler and compaction, spec
`docs/specs/2026-10-03-m5d-scheduler.md`) is split: M5d-1 (epochs and compaction) is done, `docs/specs/2026-10-03-m5d-scheduler.md`) is split: M5d-1 (epochs and compaction) is done,
reviewed in `docs/implementer-log.md` and checked on straylight (spec 7); no finding is open. reviewed in `docs/implementer-log.md` and checked on straylight (spec 7); no finding is open.
M5d-2 (heartbeat, cron, ToolSummary, live-slot isolation) is done on branch `m5d2`, reviewed in M5d-2 (heartbeat, cron, ToolSummary, live-slot isolation) is done on branch `m5d2`, reviewed in
`docs/implementer-log.md`; finding 1 closed by task 11. The spec 7 device check on straylight is `docs/implementer-log.md`; finding 1 closed by task 11; spec 7 device-checked on straylight
not yet run. (heartbeat on slot 2 left a following slot-0 turn's `cache_n` at 1398 of 1399; `jobs/tier.toml`
promoted only a trusted note).
P22 (proposed, not applied) makes Boxmaker a fleet of 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 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 every binary, the tool image and a dev shell. Work happens on titan (macOS, no Nix); build and run
+4 -1
View File
@@ -184,4 +184,7 @@ no commit twice (context exceeded: whole implementer log, then crate exploration
after T62/T63. Tasks 07 to 10 then ended cleanly. Finding 1 (`last_heartbeat` only on Ok) was after T62/T63. Tasks 07 to 10 then ended cleanly. Finding 1 (`last_heartbeat` only on Ok) was
closed by task 11 (I20, T64): first-gate pass, H1 as quoted. Clippy first-gate on 05 and 06, closed by task 11 (I20, T64): first-gate pass, H1 as quoted. Clippy first-gate on 05 and 06,
USAGE indent on 10, an extra gate on 04 (I18), and a duplicated 03 log row (I19). Device check USAGE indent on 10, an extra gate on 04 (I18), and a duplicated 03 log row (I19). Device check
not yet run. passed spec 7: heartbeat on slot 2, then a following slot-0 turn with `cache_n` 1398 of 1399;
`jobs/tier.toml` promoted only the trusted note. A long idle gap after the first live turn lost
the prefix (unified pool / other occupancy), which is P9, not a mixed-slot bug. `every_s = 20`
with `last_heartbeat` at tick start re-fired immediately after a long pulse.
+21 -1
View File
@@ -1126,4 +1126,24 @@ test is byte-identical to `docs/plans/M5d2/files/`. Trailer
| Log row | 1 `done`, first gate pass, under the header | | Log row | 1 `done`, first gate pass, under the header |
| `make gate` | `gate: ok`, 1575 tests | | `make gate` | `gate: ok`, 1575 tests |
The spec 7 device check on straylight is still next. Device check, 2026-10-04 UTC, on straylight (`target/debug` of `m5d2` at `338df82`; Ornith slot 0
live, slot 2 background; slot 1 left busy; a private `$HOME` at `/home/kyle/boxmaker-m5d2-check`,
production daemons untouched, no `gatewayd`). Empty `grants/` (memory tools are built-in; no
`[runner]`). `[compact] threshold` stayed 0.85. Heartbeat answers stayed in `sessions/heartbeat/`.
A first live session (`m5d2-live`) lost its prefix (`cache_n` 0 of 1398) after a long idle gap:
`every_s = 20` plus `last_heartbeat` stamped at tick start made the standing session pulse
repeatedly (11 usages) while slot 1 held ~70k of the unified pool. A tight retry (`m5d2-live3`)
while a heartbeat turn ran on slot 2 then a following main-slot turn immediately afterwards held
the prefix.
| Check | Result |
|---|---|
| Heartbeat on the background slot | `sessions/heartbeat/0.jsonl` `SessionStart.slot` is 2; first pulse at 01:41:25Z with the time line and `heartbeat.md` |
| Following main-slot turn `cache_n` near previous total | `m5d2-live3` turn 1: `cache_n` 0, `prompt_n` 1377, `predicted_n` 22 on slot 0; turn 2: `cache_n` 1398, `prompt_n` 24 (expected 1399). No `CacheLoss`. Slot 1 stayed busy. |
| `jobs/tier.toml` promotes only a trusted note | Job `job-tier-20261004t0144` on slot 2; `memory` `add` `file=memory` of the amber-kettle line; `memory.md` holds only that fact; `bxctl memory log` `2026-10-04-0001` `add` `memory.md` |
| Journal has the edit; untrusted note is still a note | `memory/edits/2026-10.jsonl` id `2026-10-04-0001`, `untrusted` false, `after` the kettle line; notes.md still has the pewter-spoon entry marked untrusted |
The listing in the job prompt was the `bxctl memory tiers` text (loopd does not special-case
tiering). A leftover `started` for `job-tier-20261004t0145` is from `* * * * *` firing the next
minute; the stack was stopped there. No Mattermost.