diff --git a/docs/plans/M5d2/03-loopd-heartbeat-config.md b/docs/plans/M5d2/03-loopd-heartbeat-config.md index 9f00f0f..cef628a 100644 --- a/docs/plans/M5d2/03-loopd-heartbeat-config.md +++ b/docs/plans/M5d2/03-loopd-heartbeat-config.md @@ -22,6 +22,7 @@ The starter `config/heartbeat.md` is copied like `config/system.md`. Nothing tic |---|---| | `crates/loopd/src/config.rs` | `Heartbeat`; field; `load` joins the prompt; `heartbeat_prompt`; `check_summarise` | | `crates/loopd/src/main.rs` | after each `Config::load`, `check_summarise(&Registry::m5c())` | +| `crates/loopd/tests/ask_memory_tool.rs` | `Registry::m5c()` count in `main.rs` is 3 (edit A1) | | `config/heartbeat.md` | new, given starter | | `crates/loopd/tests/config_heartbeat.rs` | new, given | | everything else | **no change** | @@ -31,7 +32,7 @@ The starter `config/heartbeat.md` is copied like `config/system.md`. Nothing tic - Copy, from `docs/plans/M5d2/files/` (the same path under it): the new test `crates/loopd/tests/config_heartbeat.rs` and the starter `config/heartbeat.md`. - Modify: `crates/loopd/src/config.rs`, `crates/loopd/src/main.rs`, - `docs/implementer-log.md`. + `crates/loopd/tests/ask_memory_tool.rs`, `docs/implementer-log.md`. - Do not touch: any other file. ## Facts you need @@ -174,6 +175,27 @@ become If `main.rs` already has `use loopd::tools::{Registry, ToolPort};`, write `Registry::m5c()`. +### `crates/loopd/tests/ask_memory_tool.rs` + +**A1.** `loopd_serve_uses_the_m5c_registry` counts `Registry::m5c()` in `main.rs`. Today that +count is 1 (`Context::new`). M1 and M2 add two more. The lines + +```rust + main.matches("Registry::m5c()").count(), + 1, + "main.rs uses m5c()" +``` + +become + +```rust + main.matches("Registry::m5c()").count(), + 3, + "main.rs uses m5c()" +``` + +The test still forbids `m2b()`, `m3a()` and `m5a()` in `main.rs`. Do not weaken that. + ## Steps - [ ] **1. Copy the given files.** @@ -186,12 +208,13 @@ If `main.rs` already has `use loopd::tools::{Registry, ToolPort};`, write `Regis - [ ] **2. See it fail.** `cargo build --tests --keep-going -p loopd`, timeout 600000 ms: test target `config_heartbeat` does not compile (`E0609` no field `heartbeat`, `E0599` no method `heartbeat_prompt` / `check_summarise`). Every other target compiles. -- [ ] **3. The edits.** H1 to H4, M1, M2, in order. `cargo check -p loopd` prints no error and +- [ ] **3. The edits.** H1 to H4, M1, M2, A1, in order. `cargo check -p loopd` prints no error and no warning. - [ ] **4. The tests.** `cargo test -p loopd --test config_heartbeat --test config --test - config_compact`: every test passes, 8 in `config_heartbeat`. -- [ ] **5. Check.** `git diff --stat` lists `crates/loopd/src/config.rs` and - `crates/loopd/src/main.rs`. `git status --short` shows the new test and `config/heartbeat.md`. + config_compact --test ask_memory_tool`: every test passes, 8 in `config_heartbeat`. +- [ ] **5. Check.** `git diff --stat` lists `crates/loopd/src/config.rs`, + `crates/loopd/src/main.rs` and `crates/loopd/tests/ask_memory_tool.rs`. `git status --short` + shows the new test and `config/heartbeat.md`. - [ ] **6. Run the gate.** `cargo fmt --all`, then `make gate`, timeout 600000 ms. Last line `gate: ok`. Test count **1526** (1518 before, plus 8). - [ ] **7. Log and commit.** Task cell `M5d2/03-loopd-heartbeat-config`. Stage with @@ -202,14 +225,15 @@ If `main.rs` already has `use loopd::tools::{Registry, ToolPort};`, write `Regis - `make gate` prints `gate: ok` with 1526 tests. - `git diff HEAD~1 --stat` lists only `crates/loopd/src/config.rs`, `crates/loopd/src/main.rs`, - `crates/loopd/tests/config_heartbeat.rs`, `config/heartbeat.md` and the log. + `crates/loopd/tests/ask_memory_tool.rs`, `crates/loopd/tests/config_heartbeat.rs`, + `config/heartbeat.md` and the log. ## Stop and report if - The branch check fails; a "before" block is not found exactly once; step 2 differs; `cargo - check` warns; a test fails; the gate count is not 1526; you join `heartbeat.prompt` onto - `system.md`'s directory instead of the config file's parent; you reject an empty `summarise` - list; you check names inside `parse`. + check` warns; a test fails; the gate count is not 1526; you leave the `m5c()` count at 1; + you join `heartbeat.prompt` onto `system.md`'s directory instead of the config file's parent; + you reject an empty `summarise` list; you check names inside `parse`. ## What the given tests pin