From 338df8294b85beb01de25eff13a8ad26f8d6405e Mon Sep 17 00:00:00 2001 From: Kyle Isom Date: Sat, 3 Oct 2026 18:30:22 -0700 Subject: [PATCH] review: M5d-2 task 11 closed finding 1 Co-Authored-By: Grok 4.6 --- CLAUDE.md | 6 +++--- docs/implementer-lessons.md | 14 +++++++------- docs/implementer-log.md | 21 ++++++++++++++++++++- 3 files changed, 30 insertions(+), 11 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 5918345..e5e9111 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -34,9 +34,9 @@ sections 3, 8, 9, 10 and 13) is done, reviewed in `docs/implementer-log.md` and 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, 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` at `85f70de`, -reviewed in `docs/implementer-log.md`; finding 1 is task 11 (`docs/plans/M5d2/11-loopd-heartbeat-failed-last.md`). -The spec 7 device check on straylight is not yet run. +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 +not yet run. 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 diff --git a/docs/implementer-lessons.md b/docs/implementer-lessons.md index 2d7a55f..0b787ec 100644 --- a/docs/implementer-lessons.md +++ b/docs/implementer-lessons.md @@ -178,10 +178,10 @@ code difference from the reference is an equivalent rewrite in `compact.rs`. Ext a pass (I18) and a log row inserted among M4b (I19) were process only. The device check passed spec 7 on the second run, after a trusted identity write then a tainted recall. -M5d-2 was Ornith through the driver, ten tasks. Task 01 stopped twice (wrong branch, then a -last-digit test count) and finished on resume after T50/T59. Task 06 made no commit twice -(context exceeded: whole implementer log, then crate exploration) and finished after T62/T63. -Tasks 07 to 10 then ended cleanly. Product code matches the reference except heartbeat -`last_heartbeat` only on Ok (finding 1, I20, T64). 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 not in that -review. +M5d-2 was Ornith through the driver, ten tasks then follow-up task 11. Task 01 stopped twice +(wrong branch, then a last-digit test count) and finished on resume after T50/T59. Task 06 made +no commit twice (context exceeded: whole implementer log, then crate exploration) and finished +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, +USAGE indent on 10, an extra gate on 04 (I18), and a duplicated 03 log row (I19). Device check +not yet run. diff --git a/docs/implementer-log.md b/docs/implementer-log.md index 565d481..4610b70 100644 --- a/docs/implementer-log.md +++ b/docs/implementer-log.md @@ -1089,7 +1089,7 @@ next. | # | Severity | Where | Finding | Resolution | |---|---|---|---|---| -| 1 | product | `crates/loopd/src/scheduler.rs` heartbeat | After `run_turn` / `finish_turn`, `last_heartbeat` and `TickWork::Heartbeat` are set only when `outcome.is_ok()`. Task 06 and the reference set them after the turn regardless. A failed pulse is due again on the next 1 s tick and would hammer the shared server. Given tests all succeed via the fake server. | Fix before land: set both after the turn, as the task lists. | +| 1 | product | `crates/loopd/src/scheduler.rs` heartbeat | After `run_turn` / `finish_turn`, `last_heartbeat` and `TickWork::Heartbeat` are set only when `outcome.is_ok()`. Task 06 and the reference set them after the turn regardless. A failed pulse is due again on the next 1 s tick and would hammer the shared server. Given tests all succeed via the fake server. | Closed by task 11. | | 2 | process | implementer (task 01) | Two `stopped` rows: first on `master` before `m5d2` existed; second on a greedy `sed` that turned 1512 into 1022. The work was correct. Plan fix `2a48b7f` (T50/T59); resume committed T1. | T50; do not sum `test result:` | | 3 | process | implementer (task 06) | Two sessions hit OpenCode `Context size has been exceeded` with no commit: first by reading the whole implementer log; second by listing `tests/` and reading supporting crate modules before the `cp`. | T62, T63; plan fix `4dd3b87` | | 4 | process | implementer (tasks 04, 05, 06, 10) | Extra gate after a first-gate pass on 04 (I18). First-gate clippy/USAGE fails on 05, 06, 10, fixed and rerun. Task 04's commit also duplicated 03's `done` row. | I18 seen again; duplicate row removed here | @@ -1108,3 +1108,22 @@ Open items carried forward: finding 1 above; the M5c-2 items still open (rift at the README lists them: no Mattermost delivery of heartbeat or cron answers; DOM and DOW are AND; tool-summary inference holds the session; job files that go invalid after start are skipped that tick; identity rows in `Tiers` list with 0 hits. + +### M5d-2, task 11 — reviewed 2026-10-03 by the design model (Grok 4.6) + +Accepted. Finding 1 is closed. Ornith-1.5-35B-A3B through `tools/run-plan.sh` on `m5d2`. H1 matches +the quoted after block: `let _ = compact::finish_turn(...)`, then `drop(held)`, then +`last_heartbeat` and `TickWork::Heartbeat` with no `is_ok` gate. The unreadable-prompt and busy +returns are unchanged. Cron still records `Finished` / `Failed` from the job outcome. The given +test is byte-identical to `docs/plans/M5d2/files/`. Trailer +`Co-Authored-By: ornith-1.5-35b-a3b `. First gate pass. No product finding. + +| Check | Result | +|---|---| +| Commit `3060899`, listed paths only | pass | +| Given test byte-identical; `a_failed_heartbeat_turn_still_advances_last_heartbeat` plus the six existing heartbeat tests and six cron tests | pass | +| Protected files untouched | pass | +| Log row | 1 `done`, first gate pass, under the header | +| `make gate` | `gate: ok`, 1575 tests | + +The spec 7 device check on straylight is still next.