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

_235+ commits._

### Features
- **Day 218 (19:01): After `/cd`, the new directory's `permissions.deny` is enforced on bash (deny-only, narrow-only; #869 slice) (Task 2)** (084355b)
- **Day 218 (19:01): After `/cd`, the new directory's `permissions.deny` is enforced on bash (deny-only, narrow-only; #869 slice) (Task 2)** (d8a187f)

### Backend
- **Day 219 (08:59): Release v0.2.0: rewrite the stale CHANGELOG [Unreleased], bump the version, run the gate, push the tag (Task 2)** (365cc12)
- **Day 219 (08:59): CHANGELOG: rewrite stale [Unreleased] into [0.2.0] (Task 2, WIP before gate)** (345227e)
- **Day 219 (08:59): #991 step 2 not shipped: retry_safe_events drops a final failure's text on pipes (Task 1)** (32284ed)
- **Day 219 (08:59): Bump yoagent 0.24.0 -> 0.24.1 (lockfile only) (Task 1, step 1)** (1699b72)
- **skill-evolve: reset counter (cycle 2026-10-05T06:08Z)** (44a2e21)
- **skill-evolve: evt-0035 meta-suggestion (evolution_saturation has no reader)** (b5dc1c7)
- **Day 219 (00:26): session-end state resets** (96d397a)
- **Day 219: bump skill-evolve counter (5)** (d777502)
- **Day 219: update day counter** (5f088ab)
- **Day 219 (00:26): session wrap-up** (f9efd9a)
- **Day 219 (00:26): update learnings** (faa1e3a)
- **Day 219 (00:26): journal entry** (1e11634)
- **Day 219 (00:26): -p stream-json door of #989: measure what a mid-stream yoagent retry emits, then apply the same policy (Task 2)** (ef018be)
- **Day 219 (00:26): -p text path: stop yoagent's internal provider retry from duplicating a streamed partial answer on a pipe (#989) (Task 1)** (eaeab54)
- **Day 218 (22:13): session-end state resets** (350b2d0)
- **Day 218: bump skill-evolve counter (4)** (ae14fc3)
- **Day 218 (22:13): session wrap-up** (f6bb2b2)
- **Day 218 (22:13): update learnings** (acdb2f1)
- **Day 218 (22:13): journal entry** (18a18d3)
- **Day 218 (22:13): Probe whether yoagent's own provider retry re-duplicates `-p` stdout (the #976 shape one layer down), and pin the reading (Task 2)** (98144e3)
- **Day 218 (22:13): Upgrade yoagent 0.18.1 → 0.24.0: compile fixes, the minimax decision, and a real re-read of all 14 version-claim markers (Task 1)** (001a1b5)
- **Day 218 (22:13): Upgrade yoagent 0.18.1 → 0.24.0: compile fixes, the minimax decision, and a real re-read of all 14 version-claim markers (Task 1)** (1ba85b5)
- **Day 218 (19:01): session-end state resets** (98ce889)
- **Day 218: bump skill-evolve counter (3)** (f84a80d)
- **Day 218 (19:01): session wrap-up** (7889903)
- **Day 218 (19:01): update learnings** (b041667)
- **Day 218 (19:01): journal entry** (7e29dd4)
- **Day 218 (19:01): `yoyo changelog`, `yoyo evolution` and `yoyo tree` outside a git repo exit 1, not 0 (#982 slice) (Task 1)** (f3cf7e2)
- **Day 218 (19:01): `yoyo changelog`, `yoyo evolution` and `yoyo tree` outside a git repo exit 1, not 0 (#982 slice) (Task 1)** (66b1f51)
- **Day 218 (19:01): assessment** (12e2d53)
- **synthesize: regenerate active memory context** (f83a25b)
- **Day 218 (15:26): social session (learnings + seen-state)** (ab8e22b)
- **Day 218 (10:24): session-end state resets** (f333710)
- **Day 218: bump skill-evolve counter (2)** (92fc270)
- **Day 218 (10:24): session wrap-up** (e2c4ab0)
- **Day 218 (10:24): update learnings** (ca2834b)
- **Day 218 (10:24): journal entry** (f345690)
- **Day 218 (10:24): `yoyo docs <missing>` exits 1 and `yoyo config get <typo>` exits 2 (#982 slice) (Task 2)** (27515b0)
- **Day 218 (10:24): `yoyo docs <missing>` exits 1 and `yoyo config get <typo>` exits 2 (#982 slice) (Task 2)** (ff9708d)
- **Day 218 (10:24): Child bash under a pinned-cwd parent refuses git redirection escapes too (#977 layer 3) (Task 1)** (1e5a5e9)
- **Day 218 (10:24): assessment** (8dcdfd6)
- **Day 218 (10:24): assessment (draft)** (ba63b02)
- **Day 218 (08:31): social session (learnings + seen-state)** (a593bf0)
- **Day 218 (01:03): social session (learnings + seen-state)** (efdba6e)
- **Day 218 (00:22): session-end state resets** (0ede5c1)
- **Day 218: bump skill-evolve counter (1)** (504e9ec)
- **Day 218: update day counter** (b468448)
- **Day 218 (00:22): session wrap-up** (5e3d2a1)
- **Day 218 (00:22): update learnings** (63ec885)
- **Day 218 (00:22): journal entry** (5dd06cc)
- **Day 218 (00:22): `yoyo config get <typo>` says the key is unknown (with a nearest-key suggestion) instead of "not set (using default)" (Task 2)** (693136b)
- **Day 218 (00:22): `yoyo config get <typo>` says the key is unknown (with a nearest-key suggestion) instead of "not set (using default)" (Task 2)** (cfb7e95)
- **Day 218 (00:22): `yoyo docs` stops printing ✓ for a crate or item that docs.rs 404s: decide on HTTP status, not page prose (Task 1)** (641b76d)
- **Day 218 (00:22): assessment** (d6dab3c)
- **skill-evolve: reset counter (cycle 2026-10-03T20:09Z)** (1b66923)
- **skill-evolve: evt-0034 NO-OP (saturation)** (122dd3e)
- **Day 217 (18:59): session-end state resets** (2b41b7e)
- **Day 217: bump skill-evolve counter (6)** (9261458)
- **Day 217 (18:59): session wrap-up** (8839ab8)
- **Day 217 (18:59): journal entry** (ef1c30d)
- **Day 217 (18:59): `yoyo lint` and `yoyo health` exit 1 when no project is found (#982 slice 3, part 1) (Task 2)** (5e1ce6a)
- **Day 217 (18:59): Inverse probe of safety.rs's rm check: dangerous inputs that lack the spelling `rm ` (tab, backslash, path, wrapper) (Task 1)** (b63e642)
- **Day 217 (18:59): assessment** (ad43b83)
- **Day 217 (18:59): assessment (draft)** (8b0d000)
- **synthesize: regenerate active memory context** (536b010)
- **Day 217 (15:32): social session (learnings + seen-state)** (7ebcc89)
- **Day 217: bump skill-evolve counter (5)** (edff93b)
- **Day 217 (14:33): session wrap-up** (e751103)
- **Day 217 (14:33): update learnings** (7e76910)
- **Day 217 (14:33): journal entry** (1549231)
- **Day 217 (14:33): `yoyo diff`, `yoyo commit`, `yoyo blame` exit nonzero outside a git repository (#982 slice 2) (Task 2)** (0d765e7)
- **Day 217 (14:33): Hard deny matches commands, not substrings: `rm -rf /tmp/x` and prose mentions pass; deleting root in any spelling is still refused (Task 1)** (7eb7ced)
- **Day 217 (14:33): Hard deny matches commands, not substrings: `rm -rf /tmp/x` and prose mentions pass; deleting root in any spelling is still refused (Task 1)** (fdf2aa3)
- **Day 217 (14:33): session plan** (e32d46b)
- **Day 217 (14:33): assessment** (f88710b)
- **Day 217 (14:33): assessment (draft)** (2b6316a)
- **Day 217 (09:39): session-end state resets** (5f12b71)
- **Day 217: bump skill-evolve counter (4)** (035b9a6)
- **Day 217 (09:39): session wrap-up** (4eee6aa)
- **Day 217 (09:39): update learnings** (2c444a3)
- **Day 217 (09:39): journal entry** (09e6436)
- **Day 217 (09:39): DREAM milestone check: does `/risk accuracy` print git_born_after / git_unmeasured? Close or finish it. (Task 2)** (29bfd2e)
- **Day 217 (09:39): `yoyo model <unknown>` and `yoyo skill show <missing>` exit nonzero (#982 slice 1) (Task 1)** (838b7e3)
- **Day 217 (09:39): assessment** (41f9f85)
- **Day 217 (00:55): session-end state resets** (286d056)
- **Day 217: bump skill-evolve counter (3)** (0409574)
- **Day 217: update day counter** (82ac4a7)
- **Day 217 (00:55): session wrap-up** (2dd9b46)
- **Day 217 (00:55): update learnings** (1b99381)
- **Day 217 (00:55): journal entry** (1a34cc0)
- **Day 217 (00:55): Child bash (sub_agent / explore_agent) obeys the parent's hard deny list and refuses what the parent would have asked the user about (Task 2)** (4eb0fb5)
- **Day 217 (00:55): Child bash (sub_agent / explore_agent) obeys the parent's hard deny list and refuses what the parent would have asked the user about (Task 2)** (0e9441b)
- **Day 217 (00:55): `yoyo test` and `yoyo run` exit nonzero when the thing they ran failed (Task 1)** (2a6d99f)
- **Day 217 (00:55): `yoyo test` and `yoyo run` exit nonzero when the thing they ran failed (Task 1)** (6d84def)
- **Day 217 (00:55): assessment** (2af1b81)
- **sponsors: hourly refresh** (b756dc9)
- **Day 216: bump skill-evolve counter (2)** (dfd271b)
- **Day 216 (20:20): session wrap-up** (a0cf86d)
- **Day 216 (20:20): update learnings** (27a6570)
- **Day 216 (20:20): journal entry** (b0e25b5)
- **Day 216 (20:20): stream-json acknowledges a restored session: `{"type":"sessionRestored","messages":N}` right after agentStart (#979 half 2) (Task 2)** (56aef20)
- **Day 216 (20:20): stream-json acknowledges a restored session: `{"type":"sessionRestored","messages":N}` right after agentStart (#979 half 2) (Task 2)** (3c2c359)
- **Day 216 (20:20): A pipe gets ONE answer: stop re-streaming a dead attempt's partial text on every retry (#976 remainder) (Task 1)** (8640e21)
- **Day 216 (20:20): A pipe gets ONE answer: stop re-streaming a dead attempt's partial text on every retry (#976 remainder) (Task 1)** (96e4c1f)
- **Day 216 (20:20): assessment** (bb5163c)
- **synthesize: regenerate active memory context** (cbb839d)
- **Day 216: bump skill-evolve counter (1)** (b183226)
- **Day 216 (10:18): session wrap-up** (30c44f1)
- **Day 216 (10:18): journal entry** (11fbeb5)
- **Day 216 (10:18): `--save-session <path>`: let `-p` and piped runs write a resumable session, including after a failed turn (#978) (Task 2)** (2c5ad8b)
- **Day 216 (10:18): `--continue-strict`: refuse to run, before any model call, when the session cannot be restored (#979 half 1) (Task 1)** (2c312c1)
- **Day 216 (10:18): session plan** (becdc4b)
- **Day 216 (10:18): assessment** (cbbe515)
- **Day 216 (08:38): social session (learnings + seen-state)** (7e192b1)
- **skill-evolve: reset counter (cycle 2026-10-02T06:07Z)** (84e8941)
- **skill-evolve: evt-0033 NO-OP (saturation)** (319ac4a)
- **Day 216: bump skill-evolve counter (5)** (782e096)
- **Day 216: update day counter** (99bf056)
- **Day 216 (01:17): session wrap-up** (5081ffe)
- **Day 216 (01:17): update learnings** (2db8fe9)
- **Day 216 (01:17): journal entry** (df09ab5)
- **Day 216 (01:17): BEL bytes stop landing on stdout in -p / piped mode (#976, half 1 of 2) (Task 2)** (e09434e)
- **Day 216 (01:17): BEL bytes stop landing on stdout in -p / piped mode (#976, half 1 of 2) (Task 2)** (c21b1fa)
- **Day 216 (01:17): Sub-agent and explore-agent bash must honour the user's `permissions.deny` (the child is never more permissive than the parent) (Task 1)** (a9709af)
- **Day 216 (01:17): assessment** (f5a3fcb)
- **Day 215 (22:46): social session (learnings + seen-state)** (46b2e56)
- **Day 215: bump skill-evolve counter (4)** (24e9974)
- **Day 215 (20:47): session wrap-up** (87c671d)
- **Day 215 (20:47): update learnings** (be1f659)
- **Day 215 (20:47): journal entry** (209ce04)
- **Day 215 (20:47): A user `deny` pattern must still block bash under `--yes` and after "always" (Task 2)** (64f88a4)
- **Day 215 (20:47): `-p` keeps the answer it already streamed when the turn dies on a mid-stream API error (Task 1)** (2dd9f63)
- **Day 215 (20:47): session plan** (563691c)
- **Day 215 (20:47): assessment** (5f97a2b)
- **Day 215 (20:47): assessment (draft)** (34f441a)
- **synthesize: regenerate active memory context** (cb9f1b7)
- **Day 215 (17:05): social session (learnings + seen-state)** (60ad58a)
- **Day 215: bump skill-evolve counter (3)** (2a0e6aa)
- **Day 215 (10:43): session wrap-up** (b61c62f)
- **Day 215 (10:43): update learnings** (2c7150a)
- **Day 215 (10:43): journal entry — correct the mcp-gate count claim** (a2a99a1)
- **Day 215 (10:43): journal entry** (2e86a31)
- **Day 215 (10:43): #936 slice 2 — census the 41-verb residue by argument shape, and gate at most ONE verb whose handler owns a closed vocabulary (Task 2)** (a00e410)
- **Day 215 (10:43): #936 slice 2 — gate yoyo mcp <list|help> on handler-owned MCP_SUBCOMMANDS (WIP, tests next)** (82d90c0)
- **Day 215 (10:43): `-p` / piped stdout stops ending with a blank line (the trailing mirror of Day 215's leading-blank strip) (Task 1)** (cf49315)
- **Day 215 (10:43): session plan** (5f1def2)
- **Day 215 (10:43): assessment** (55ecfdd)
- **Day 215 (01:42): social session (learnings + seen-state)** (a52767c)

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