Three-layer protocol so each /evolve day improves the next:
1. Per-cycle micro-capture: 1 line to .agents/evolve/daily-learning-log-YYYY-MM-DD.md
2. Every-5th-productive reflect: pattern annotation inline in cycle-history note;
3+-occurrence frictions matching prior days auto-file an evolve-improvement bead
3. End-of-day consolidate via scripts/evolve-capture-daily-learning.sh:
- Reads daily log + cycle-history (filtered to today)
- Writes .agents/learnings/YYYY-MM-DD-evolve-loop-learnings.md with counts,
ledger, frictions, recurring patterns
- Auto-files LC-followup beads (label: evolution-roadmap,evolve-improvement)
for any FRICTION tag that recurred on 2+ days
- Idempotent (re-run overwrites today's consolidated file; daily log untouched)
- Supports --dry-run
Seeder updates:
- LC epic + LC1 leaf bead added (closes loop on the loop's own behavior)
- Pagination bug fixed: bd list --status=open --json (default 50 cap) caused
duplicate beads on re-run when total open > 50. Changed all idempotency
checks to bd list --status=open --limit 0 --json. Re-run is now safely
idempotent — verified with dry-run reporting 41 skips, 0 would-create.
- 13 duplicate beads from the prior re-run already closed manually with
reason="duplicate from seeder idempotency bug"; their close is the
evidence the bug existed and is now fixed.
Road-map plan extended with LC section + table entry. 41 evolution-roadmap
labeled beads now open (39 original + LC epic + LC1).
Local-only artifacts (in .agents/, gitignored by policy):
- .agents/evolve/all-day-starter-prompt.md (revised with mandatory steps 9-10
+ end-of-day consolidator invocation)
- .agents/evolve/daily-learning-log.template.md (tag taxonomy + examples)
- .agents/evolve/daily-learning-log-2026-05-11.md (seeded for smoke test)
docs/plans/2026-05-11-evolution-roadmap.md is the durable plan: 8 epics, 39 beads,
explicit drain order. Closes the structural friction the 13-cycle 2026-05-11 /evolve
session surfaced — the loop was picking from bd ready / next-work.jsonl but the
LARGEST work source in this repo is the gap between aspirational docs
(PRODUCT.md / GOALS.md / PRACTICE.md / docs/contracts/ / docs/code-map/) and what
the code actually does. The road map enumerates that gap.
Epics filed (12 parents + 27 leaves = 39 beads, all labeled evolution-roadmap):
- E1 soc-ymph: Close 11 GOALS.md directive gaps (D1-D11)
- E2 soc-45sg: Promote 5 Roadmap gates to CI-blocking (G1-G5)
- E3 soc-dec2: Close 8 PRODUCT.md Known Product Gaps (PG1-PG11, some merged)
- E4 soc-3q1l: Polish 4 product layers (L1-L4)
- E5 soc-m47k: Three-gap contract super-gates (TG1-TG3)
- A1 soc-waod: AOP-CLAIM evidence map audit (83 markers → N follow-ups)
- A2 soc-nzji: Contract enforcement matrix audit (38 contracts → N follow-ups)
- A3 soc-cd32: Code-map drift report (2 maps → N follow-ups)
scripts/seed-evolution-roadmap-beads.sh is idempotent (--dry-run preview supported)
and safe to re-run; uses bd list title-match for idempotency.
Drain priority order documented in the plan; the all-day starter prompt
(.agents/evolve/all-day-starter-prompt.md, local only since .agents/ is gitignored)
references it. First-cycle target: soc-ymph.7 (D7: Codex parity drift to zero).