diff --git a/docs/work/_state.json b/docs/work/_state.json index 17c453c..b21483a 100644 --- a/docs/work/_state.json +++ b/docs/work/_state.json @@ -1,5 +1,5 @@ { - "updated_at": "2026-05-13T06:16:11.738Z", + "updated_at": "2026-05-13T06:22:09.611Z", "epics": { "agent-workflow-docs-v1": { "status": "done", @@ -255,24 +255,24 @@ } }, "sandcastle-dispatch-v1": { - "status": "in-progress", + "status": "done", "title": "Sandcastle dispatch v1 — pnpm work dispatch with planning + execute modes", "stories": { "01-sandcastle-install": { - "status": "in-progress", + "status": "done", "title": "Install @ai-hero/sandcastle + Dockerfile", "ac_total": 4, - "ac_completed": 0, + "ac_completed": 4, "depends_on": [], "blocks": [ "02-dispatch-planner" ] }, "02-dispatch-planner": { - "status": "todo", + "status": "done", "title": "Dispatch planner — finds next ready bullet, prints plan", "ac_total": 3, - "ac_completed": 0, + "ac_completed": 3, "depends_on": [ "01-sandcastle-install" ], @@ -282,10 +282,10 @@ ] }, "03-dispatch-execute": { - "status": "todo", + "status": "done", "title": "Dispatch execute mode — invoke sandcastle.run for impl + review", "ac_total": 4, - "ac_completed": 0, + "ac_completed": 4, "depends_on": [ "02-dispatch-planner" ], @@ -294,10 +294,10 @@ ] }, "04-dispatch-cli-wiring": { - "status": "todo", + "status": "done", "title": "pnpm work dispatch CLI wiring + smoke tests", "ac_total": 4, - "ac_completed": 0, + "ac_completed": 4, "depends_on": [ "02-dispatch-planner", "03-dispatch-execute" @@ -321,38 +321,6 @@ } } }, - "ready": [ - { - "epic": "sandcastle-dispatch-v1", - "story": "01-sandcastle-install", - "title": "Install @ai-hero/sandcastle + Dockerfile" - } - ], - "blocked": [ - { - "epic": "sandcastle-dispatch-v1", - "story": "02-dispatch-planner", - "title": "Dispatch planner — finds next ready bullet, prints plan", - "waiting_on": [ - "sandcastle-dispatch-v1/01-sandcastle-install" - ] - }, - { - "epic": "sandcastle-dispatch-v1", - "story": "03-dispatch-execute", - "title": "Dispatch execute mode — invoke sandcastle.run for impl + review", - "waiting_on": [ - "sandcastle-dispatch-v1/02-dispatch-planner" - ] - }, - { - "epic": "sandcastle-dispatch-v1", - "story": "04-dispatch-cli-wiring", - "title": "pnpm work dispatch CLI wiring + smoke tests", - "waiting_on": [ - "sandcastle-dispatch-v1/02-dispatch-planner", - "sandcastle-dispatch-v1/03-dispatch-execute" - ] - } - ] + "ready": [], + "blocked": [] } diff --git a/docs/work/sandcastle-dispatch-v1/01-sandcastle-install/_story.md b/docs/work/sandcastle-dispatch-v1/01-sandcastle-install/_story.md index b9a81fe..68f0a40 100644 --- a/docs/work/sandcastle-dispatch-v1/01-sandcastle-install/_story.md +++ b/docs/work/sandcastle-dispatch-v1/01-sandcastle-install/_story.md @@ -3,7 +3,7 @@ id: 01-sandcastle-install epic: sandcastle-dispatch-v1 title: Install @ai-hero/sandcastle + Dockerfile type: technical-story -status: in-progress +status: done feature: tooling depends-on: [] blocks: [02-dispatch-planner] @@ -11,7 +11,7 @@ blocks: [02-dispatch-planner] ## Tasks -- [ ] Story scaffold -- [ ] Add @ai-hero/sandcastle to devDependencies -- [ ] Create .sandcastle/Dockerfile (minimal node + pnpm) -- [ ] Verify install + import resolves +- [x] Story scaffold +- [x] Add @ai-hero/sandcastle to devDependencies +- [x] Create .sandcastle/Dockerfile (minimal node + pnpm) +- [x] Verify install + import resolves diff --git a/docs/work/sandcastle-dispatch-v1/02-dispatch-planner/_story.md b/docs/work/sandcastle-dispatch-v1/02-dispatch-planner/_story.md index f829727..46300b6 100644 --- a/docs/work/sandcastle-dispatch-v1/02-dispatch-planner/_story.md +++ b/docs/work/sandcastle-dispatch-v1/02-dispatch-planner/_story.md @@ -3,7 +3,7 @@ id: 02-dispatch-planner epic: sandcastle-dispatch-v1 title: Dispatch planner — finds next ready bullet, prints plan type: technical-story -status: todo +status: done feature: scripts depends-on: [01-sandcastle-install] blocks: [03-dispatch-execute, 04-dispatch-cli-wiring] @@ -11,6 +11,6 @@ blocks: [03-dispatch-execute, 04-dispatch-cli-wiring] ## Tasks -- [ ] findNextTask() — returns { epic, story, bullet, storyContent } or null -- [ ] Tests -- [ ] CLI: printPlan() — prints the dispatch plan +- [x] findNextTask() — returns { epic, story, bullet, storyContent } or null +- [x] Tests +- [x] CLI: printPlan() — prints the dispatch plan diff --git a/docs/work/sandcastle-dispatch-v1/03-dispatch-execute/_story.md b/docs/work/sandcastle-dispatch-v1/03-dispatch-execute/_story.md index baec85a..6e753b4 100644 --- a/docs/work/sandcastle-dispatch-v1/03-dispatch-execute/_story.md +++ b/docs/work/sandcastle-dispatch-v1/03-dispatch-execute/_story.md @@ -3,7 +3,7 @@ id: 03-dispatch-execute epic: sandcastle-dispatch-v1 title: Dispatch execute mode — invoke sandcastle.run for impl + review type: technical-story -status: todo +status: done feature: scripts depends-on: [02-dispatch-planner] blocks: [04-dispatch-cli-wiring] @@ -11,7 +11,7 @@ blocks: [04-dispatch-cli-wiring] ## Tasks -- [ ] dispatchImplementer() — calls sandcastle.run with implementer prompt -- [ ] dispatchReviewer() — calls sandcastle.run with reviewer prompt + diff -- [ ] applyReviewerDecision() — prints what state mutation WOULD happen -- [ ] Tests with mocked sandcastle.run +- [x] dispatchImplementer() — calls sandcastle.run with implementer prompt +- [x] dispatchReviewer() — calls sandcastle.run with reviewer prompt + diff +- [x] applyReviewerDecision() — prints what state mutation WOULD happen +- [x] Tests with mocked sandcastle.run diff --git a/docs/work/sandcastle-dispatch-v1/04-dispatch-cli-wiring/_story.md b/docs/work/sandcastle-dispatch-v1/04-dispatch-cli-wiring/_story.md index 6be5c9c..3c31d99 100644 --- a/docs/work/sandcastle-dispatch-v1/04-dispatch-cli-wiring/_story.md +++ b/docs/work/sandcastle-dispatch-v1/04-dispatch-cli-wiring/_story.md @@ -3,7 +3,7 @@ id: 04-dispatch-cli-wiring epic: sandcastle-dispatch-v1 title: pnpm work dispatch CLI wiring + smoke tests type: technical-story -status: todo +status: done feature: scripts depends-on: [02-dispatch-planner, 03-dispatch-execute] blocks: [] @@ -11,7 +11,7 @@ blocks: [] ## Tasks -- [ ] cli.mjs: add `dispatch` subcommand with `--execute` flag -- [ ] CLI smoke tests -- [ ] README / docs update -- [ ] Final verification + closeout +- [x] cli.mjs: add `dispatch` subcommand with `--execute` flag +- [x] CLI smoke tests +- [x] README / docs update +- [x] Final verification + closeout diff --git a/docs/work/sandcastle-dispatch-v1/_epic.md b/docs/work/sandcastle-dispatch-v1/_epic.md index 0c08142..b0844f3 100644 --- a/docs/work/sandcastle-dispatch-v1/_epic.md +++ b/docs/work/sandcastle-dispatch-v1/_epic.md @@ -3,7 +3,7 @@ id: sandcastle-dispatch-v1 prd: null title: Sandcastle dispatch v1 — pnpm work dispatch with planning + execute modes type: epic -status: in-progress +status: done features: [tooling, scripts] created: 2026-05-13 --- @@ -21,7 +21,7 @@ holds the prompts, and dispatch.mjs connects them to sandcastle. ## Stories -- [ ] [01 — Install @ai-hero/sandcastle + Dockerfile](01-sandcastle-install/_story.md) -- [ ] [02 — Dispatch planner (default mode)](02-dispatch-planner/_story.md) -- [ ] [03 — Dispatch execute mode (sandcastle.run integration)](03-dispatch-execute/_story.md) -- [ ] [04 — pnpm work dispatch wiring + tests](04-dispatch-cli-wiring/_story.md) +- [x] [01 — Install @ai-hero/sandcastle + Dockerfile](01-sandcastle-install/_story.md) +- [x] [02 — Dispatch planner (default mode)](02-dispatch-planner/_story.md) +- [x] [03 — Dispatch execute mode (sandcastle.run integration)](03-dispatch-execute/_story.md) +- [x] [04 — pnpm work dispatch wiring + tests](04-dispatch-cli-wiring/_story.md)