Skip to content

Per-milestone plan files handed straight to dev agents - #23

Merged
A merged 26 commits into
release/1.0.1from
feat/milestone-files-for-dev-agents
Aug 11, 2026
Merged

Per-milestone plan files handed straight to dev agents#23
A merged 26 commits into
release/1.0.1from
feat/milestone-files-for-dev-agents

Conversation

@A

@A A commented Aug 10, 2026

Copy link
Copy Markdown
Owner

A plan stops being one document. Each milestone becomes its own directory under plans/{slug}/milestones/, holding a milestone file named after it — the authoritative work contract a develop worker is handed by path, never as pasted text.

What changes

  • Scaffold renders tree keysbooping scaffold renders a tree's filename keys through the same Jinja env and --set globals as seed bodies, with the filesystem-safety check re-run on the rendered name.
  • Milestone contract in configcore.groom_playbook.milestone_scaffold seeds milestones/M{nn}-{kebab}/M{nn}-{kebab}.md (frontmatter id, title, sp, status, plan; headings ## Tasks, ## Definition of Done, ## Verify). The shared core.plans.milestones key gives the glob and the columns index.md's table projects. Naming the file after its directory keeps a bare Obsidian wikilink resolvable and leaves room for sidecars.
  • Groom writes milestone filesdraft-plan seeds each milestone and writes its body in place, then generates index.md's ## Milestones table with booping query. All five plan templates describe the new shape.
  • Milestone status is run state — a milestone state machine on develop, artifact milestones/{instance}/{instance}.md, pending → in-progress → done with blocked off in-progress. Every edge runs the new refresh-milestone-table hook, which rewrites the index table and re-sums the plan's sp. develop-loop moves into a one-step milestones subgraph, which is what makes the {instance} artifact legal.
  • Develop delegates paths, not bodies — one fixed briefing block naming the milestone files as contract, index.md as context, and a feedback.md sidecar as prior-attempt findings. The worker runs its own ## Verify and makes the repo commit; the runner validates that commit's diff against the DoD, keeps the bookkeeping, records failed attempts in feedback.md and routes fixes to a fresh core.develop_playbook.fallback_agent.
  • Downstream — retro, code-review and the lesson-check partial follow the milestone files; booping playbook-state strips a matched instance segment cleanly, so instances key the same in filename and directory positions; fixture plans, public docs, README and CLAUDE.md all move to the new shape.

Note

This branch is cut above feat/scaffold-seeded-plans, so the PR also carries that unmerged sprint. .claude-plugin/plugin.json still reads 1.0.0 — the version bump belongs to the release cut, not here.

🤖 Generated with Claude Code

A and others added 24 commits August 10, 2026 12:29
Tree keys go through the same Jinja env and --set globals as seed bodies,
with the filesystem-safety check re-run on the rendered name so an unsafe
render fails before any write.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
core.groom_playbook.milestone_scaffold seeds one file per milestone with a
fixed identity frontmatter and the three required headings; the shared
core.plans.milestones key describes where they live and how index.md's
table projects them. Ids are quoted so zero-padded values do not read back
as octal ints and scramble sorting.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Each template's Milestones section is now a generated table and a new
Milestone files section giving the per-file body shape for that surface;
checklists check the plan directory instead of a single file.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
draft-plan scaffolds one file per milestone and writes its body in place,
then generates index.md's table with booping query; present and
cross-review read the same source. sp moves to develop's refresh script.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
A milestone state machine addressed per instance writes status via
playbook-transition only; each edge runs refresh-milestone-table, which
rewrites index.md's Milestones table and re-sums the plan's sp from the
milestone files. develop-loop moves into a one-step milestones subgraph,
which is what makes the {instance} artifact legal.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
develop-loop composes one literal briefing block naming the milestone
files as contract and index.md as context; provision groups from a query
over milestone frontmatter and verify reads the milestone files. The
worker contract states which path binds it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Uncommitted output of the docs-refresh run, captured before the
milestone-file sprint rewrites the same surfaces.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
retro, code-review and the lesson-check partial read index.md plus the
milestone files; the vault, develop and groom pages, README and CLAUDE.md
describe the plan directory, the milestone file contract and the
generated table.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Each hermetic fixture plan gains a milestones/ directory with two files
and an index table generated by refresh-milestone-table; cache-warmup
keeps none so the missing-sp branch stays covered.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
A milestone becomes a directory whose file is named after it, so a
runner-written feedback.md can sit beside the contract and a bare
wikilink still resolves. The worker now runs its own Verify and commits;
the runner validates the diff, keeps the bookkeeping and records failed
attempts in feedback.md, routing fixes to a fresh fallback_agent.
playbook-state strips the matched segment cleanly so instances key the
same in filename and directory positions.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@A
A changed the base branch from release/1.1.0 to release/1.0.1 August 10, 2026 14:09
A and others added 2 commits August 11, 2026 11:30
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@A
A merged commit 237d4d7 into release/1.0.1 Aug 11, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant