## yologdev/yoyo-evolve — v0.1.18…v0.1.19

_557+ commits._

### Features
- **Day 212 (00:17): Discharge the #682 commitment: `yoyo todo add` from the shell must not print a green ✓ and forget (Task 2)** (46b5051)
- **Day 212 (00:17): Discharge the #682 commitment: `yoyo todo add` from the shell must not print a green ✓ and forget (Task 2)** (cbd7774)

### Fixes
- **Day 212 (21:15): Session-claim check treats the session dir stamp as the window START, but the stamp is the session END — fix the window so a session's own task commits count for it (Task 1)** (ae6f955)
- **Day 212 (20:26): `--print` must not drop the answer already produced when a turn dies mid-stream (probe first, fix if it reproduces) (Task 2)** (ebc1872)
- **Day 211 (22:05): Review the never-judged Day-210 unhittable-denominator diff (#958) and close or fix it (Task 2)** (a03c41f)
- **WIP #742: clippy fix** (daba6f4)

### Backend
- **Day 213 (01:28): Release v0.1.19. The cadence says DUE (15 days, 51 unreleased commits), so cut it and PUSH THE TAG (Task 1)** (1979aee)
- **Day 213 (01:28): session plan** (a9eef25)
- **Day 213 (01:28): assessment** (7aabf16)
- **skill-evolve: reset counter (cycle 2026-09-29T00:35Z)** (2dd2fc3)
- **skill-evolve: NO-OP (evt-0031)** (4e0f605)
- **Day 212 (23:20): social session (learnings + seen-state)** (d6b1186)
- **Day 212: bump skill-evolve counter (6)** (8e9c1ae)
- **Day 212 (21:49): session wrap-up** (7a711d1)
- **Day 212 (21:49): journal entry** (45fb180)
- **Day 212 (21:49): journal entry** (6a39275)
- **Day 212 (21:49): --output-format stream-json consumers are told when a configured MCP/OpenAPI server failed to connect (Task 2)** (fe1bfb0)
- **Day 212 (21:49): --output-format stream-json consumers are told when a configured MCP/OpenAPI server failed to connect (Task 2)** (297c2ab)
- **Day 212 (21:49): WIP docs for stream-json externalServers line** (63f94fc)
- **Day 212 (21:49): WIP stream-json externalServers line (pre-cargo checkpoint)** (b34f9d5)
- **Day 212 (21:49): Make room under prompt.rs's size gate: move the turn-prefix helpers into a child module (Task 1)** (7e1420c)
- **Day 212 (21:49): WIP move turn-prefix helpers into src/prompt/turn_prefix.rs (pre-cargo checkpoint)** (0d4c61c)
- **Day 212 (21:49): assessment** (0e635c7)
- **Day 212 (21:49): assessment draft** (a698029)
- **Day 212 (21:15): session-end state resets** (4aa6e31)
- **Day 212: bump skill-evolve counter (5)** (14ad2b8)
- **Day 212 (21:15): session wrap-up** (e1aaf09)
- **Day 212 (21:15): update learnings** (bf8beaf)
- **Day 212 (21:15): journal entry** (2f9629c)
- **Day 212 (21:15): One process-level test enumerates every stdout writer under the --print reserve (stop fixing the stdout contract one emitter at a time) (Task 2)** (d454f4a)
- **WIP Day 212 (21:15): end-anchored session-claim window** (4221fc3)
- **Day 212 (21:15): session plan** (936a504)
- **Day 212 (21:15): assessment** (4782ec7)
- **IDENTITY.md: Claude Code is a reference point, not yoyo's purpose** (ac473eb)
- **dream: many dreams, about anything, with a gentle check-in every cycle** (aa800c6)
- **Day 212 (20:26): session-end state resets** (00c2eae)
- **Day 212: bump skill-evolve counter (4)** (e5a3655)
- **Day 212 (20:26): session wrap-up** (6c06a39)
- **Day 212 (20:26): applied pattern keys** (03251f6)
- **Day 212 (20:26): journal entry** (60558ad)
- **Day 212 (20:26): probe — --print drops the partial answer when a turn dies mid-stream (red: stdout "", exit 1, 6 attempts)** (fe6990b)
- **Day 212 (20:26): social.sh reads its spend from the audit record, not from a `↳` line quiet mode never prints (#944) (Task 1)** (7fa5887)
- **social.sh: read spend from audit usage record (#944)** (6706a00)
- **Day 212 (20:26): session plan** (f6c3e1f)
- **Day 212 (20:26): assessment** (c92d779)
- **Day 212 (20:26): assessment (draft)** (808a6f2)
- **dream: record public summaries and reading sources (#969)** (a30d95a)
- **evolve.sh: scope-gate the wrap-up and pre-push sweeps (#951)** (a3c0a7a)
- **synthesize: regenerate active memory context** (3810c0b)
- **Day 212: bump skill-evolve counter (3)** (694f26e)
- **Day 212 (10:30): session wrap-up** (2f597a8)
- **Day 212 (10:30): journal entry** (d313ab6)
- **Day 212 (10:30): Help text states the `-p` vs `--print` stdout difference (plain -p passes model padding through) (Task 2)** (b1293f3)
- **Day 212 (10:30): Help text states the `-p` vs `--print` stdout difference (plain -p passes model padding through) (Task 2)** (89ce3c0)
- **WIP Day 212 task 2: test that -p help points at --print** (a75e2e8)
- **Day 212 (10:30): DREAM: `/risk accuracy` prints each event's recorded unhittable/unmeasurable count next to its % (Task 1)** (739ae95)
- **WIP: tests for recorded counts in recent events** (a969a2c)
- **WIP Day 212 (10:30): risk accuracy recent events carry unhittable/unmeasurable counts** (6b035e6)
- **Day 212 (10:30): session plan** (f84dc0e)
- **Day 212 (10:30): assessment** (999ae3f)
- **Day 212: bump skill-evolve counter (2)** (a6b890f)
- **Day 212 (01:05): session wrap-up** (dc27d84)
- **Day 212 (01:05): update learnings** (b4e085a)
- **Day 212 (01:05): journal entry** (d22419f)
- **Day 212 (01:05): strip model-emitted leading blank lines from the reserved --print / json payload** (cc50213)
- **wip: Day 212 Task 1 -- strip model-emitted leading blank lines from the reserved --print/json payload** (ed0cfbb)
- **Day 212 (01:05): `--print` / `-p` stdout starts with 2–3 stray newlines before the answer — find the emitters, gate them on the stdout reserve, pin the FIRST byte (Task 1)** (18477b8)
- **wip: Day 212 Task 1 -- pin --print stdout bytes untrimmed across a thinking block** (2495655)
- **Day 212 (01:05): session plan** (4bf2c8a)
- **Day 212 (01:05): assessment** (1641e2d)
- **skill-evolve counter: reset after pulling, and read only a bare integer** (fc42f48)
- **Day 212: bump skill-evolve counter (71)** (6288346)
- **Day 212: update day counter** (3d7218f)
- **Day 212 (00:17): session wrap-up** (0f49ab5)
- **Day 212 (00:17): update learnings** (d19944e)
- **Day 212 (00:17): journal entry** (ef4de4e)
- **wip: Day 212 Task 2 -- refuse mutating `yoyo todo` verbs at the shell (#682/#679)** (9fbc49a)
- **Day 212 (00:17): Under --print / --output-format json, tool progress and turn boundaries must not write to stdout (Task 1)** (90e6980)
- **Day 212 (00:17): Under --print / --output-format json, tool progress and turn boundaries must not write to stdout (Task 1)** (997f802)
- **wip: route prompt chrome through stdout reserve** (130e385)
- **Day 212 (00:17): session plan** (7d4fe08)
- **Day 212 (00:17): assessment** (848610d)
- **skill-evolve: reset counter (cycle 2026-09-28T00:01Z)** (bb2c610)
- **skill-evolve: NO-OP (evt-0030)** (29a928c)
- **Day 211: bump skill-evolve counter (7)** (d6ebee2)
- **Day 211 (22:46): session wrap-up** (fcb8050)
- **Day 211 (22:46): update learnings** (d650d09)
- **Day 211 (22:46): journal entry** (eb2fee9)
- **Day 211 (22:46): A process-level test of the -p stdout contract, run against a local SSE stub (guards #966 from regressing) (Task 2)** (56141e5)
- **WIP #966: process-level stdout contract test against a local SSE stub** (f5f1106)
- **Day 211 (22:46): --print and --output-format json emit the answer exactly once on stdout (#966 + its json sibling) (Task 1)** (054c2df)
- **WIP #966: tests for the reserved-stdout gate** (3e2d45e)
- **WIP #966: epilogue newline gated too** (30abfc8)
- **WIP #966: reserve stdout for the final payload in --print/json** (4563133)
- **Day 211 (22:46): session plan** (33f64d1)
- **Day 211 (22:46): assessment** (fa05d00)
- **scan_commitments: read the answer from -o, and parse the first JSON object** (fafe3b4)
- **Day 211: bump skill-evolve counter (6)** (86e47be)
- **Day 211 (22:05): session wrap-up** (ee9f1ca)
- **Day 211 (22:05): update learnings** (f1538db)
- **Day 211 (22:05): journal entry** (d6d09c9)
- **Day 211 (22:05): Non-retriable provider errors (400/401/403/404) must exit 1 and emit JSON with is_error — record the error in the InspectError fall-through branch (Task 1)** (e980f78)
- **Day 211 (22:05): Non-retriable provider errors (400/401/403/404) must exit 1 and emit JSON with is_error — record the error in the InspectError fall-through branch (Task 1)** (64a6de5)
- **wip: #965 json envelope** (9cc5a75)
- **wip: #965 tests** (3c9b957)
- **wip: #965 record error** (8d34b12)
- **Day 211 (22:05): session plan** (9732ece)
- **Day 211 (22:05): assessment** (6366e07)
- **scan_commitments: make the call through yoyo instead of a separate HTTP client** (70d7003)
- **Day 211: bump skill-evolve counter (5)** (dcf967a)
- **Day 211 (21:13): session wrap-up** (da8d588)
- **Day 211 (21:13): update learnings** (d7cfe2e)
- **Day 211 (21:13): journal entry** (68e21f1)
- **Day 211 (21:13): max_tokens ceiling warning is silent on the Anthropic path and would compare against the wrong ceiling (#964) (Task 2)** (66edf3b)
- **wip: #964 probe findings** (83fd193)
- **Day 211 (21:13): Stop the compact-thrash tests racing on the global COMPACT_THRASH_COUNT (#963) (Task 1)** (0f9d50a)
- **wip: retire paid compact-thrash race register rows** (2c9fba9)
- **wip: compact-thrash _with seam** (f3edf4b)
- **Day 211 (21:13): session plan** (009afe8)
- **Day 211 (21:13): assessment** (02ce9f9)
- **CLAUDE.md: how to change the loop's model now that .yoyo.toml is the single source** (f31ce54)
- **Model: .yoyo.toml is the single source; no hardcoded ids, no MODEL secret** (e08025e)
- **Day 211 (19:30): session-end state resets** (28c4247)
- **Day 211: bump skill-evolve counter (4)** (0c005d4)
- **Day 211 (19:30): session wrap-up** (6b38fab)
- **Day 211 (19:30): update learnings** (1780856)
- **Day 211 (19:30): journal entry** (24f6dc0)
- **Day 211 (19:30): ARCHITECTURE.md — daily_diary.sh spend report, measured before/after and residue (#944)** (8c30a63)
- **Day 211 (19:30): daily_diary.sh reports its own per-run spend on stderr (#944, receipt #959)** (ecf15ee)
- **Day 211 (19:30): /retry uses the tool name the prompt loop already carries, instead of string-scanning the error (#742) (Task 1)** (8d1f0ff)
- **WIP #742: plumb last_tool_name to /retry** (4ddf01a)
- **Day 211 (19:30): session plan** (8b5279f)
- **Day 211 (19:30): assessment** (2de0654)
- **Day 211 (19:30): assessment (draft)** (20d2c08)
- **Day 211 (16:28): session-end state resets** (1f5505d)
- **Day 211: bump skill-evolve counter (3)** (1ffcda2)
- **Day 211 (16:28): session wrap-up** (f2db0e5)
- **Day 211 (16:28): update learnings** (1a571e9)
- **Day 211 (16:28): journal entry** (62b088b)
- **Day 211 (16:28): Per-edit auto-check skips a cargo check command when the edited file cannot affect it (#961) (Task 2)** (7c1bfff)
- **wip: #961 wire scope into AutoCheckTool + emission test** (b45b753)
- **wip: #961 auto_check_scope helper** (04f99ff)
- **Day 211 (16:28): Stop dispatch tests from running the real setup wizard / init handler in the repo root (#962, plus the init sibling) (Task 1)** (001f9ce)
- **wip: #962 mod decl** (b4b7c80)
- **wip: #962 register** (9b3441c)
- **wip: #962** (43d6888)
- **Day 211 (16:28): session plan** (04241f0)
- **Day 211 (16:28): assessment** (92796fb)
- **synthesize: regenerate active memory context** (19868a9)

### Chore
- **ci: run extract_trajectory.py --test (#951)** (2dbd8a6)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/yologdev/yoyo-evolve?utm_source=github-action)._