summaryrefslogtreecommitdiff
path: root/project_claudomator_sequential_orchestration_gap.md
blob: 50d55eae0faac180eae243e7974d6307cc3d567e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
---
name: claudomator-sequential-orchestration-gap
description: "Retro conclusion from the tasks-board build (2026-07-06/08): claudomator has no native mode for sequential build-review-fix task chains; StoryOrchestrator's Builder->4-Evaluators->Arbitration shape doesn't fit it. Five-item synthesis + two concrete bugs found while building it."
metadata: 
  node_type: memory
  type: project
  originSessionId: 560b9055-7a3f-483e-b1a0-1a4c70419390
---

Building claudomator's own "unified Tasks board" web feature via an adapted
subagent-driven-development (implementer = claudomator `submit_task`,
reviewer = local Claude Code subagent, hand-orchestrated by the controller)
surfaced a retro with five items, synthesized into one conclusion: **claudomator
has no native way to drive a multi-step plan through review-gated
implementation.** That role was played by the controller (Claude Code), by
hand, all session — dispatching, reading diffs, reviewing, re-dispatching,
tracking state in a scratch ledger file.

**Why the existing pipeline doesn't cover this:** `internal/scheduler.StoryOrchestrator`
already automates Builder → 4 parallel Evaluators → Arbitration → REVIEW_READY,
but that shape is "one deliverable, multi-angle critique." The tasks-board build
needed "N sequential tasks, single-evaluator gate per link, fix-and-advance
before moving on" — a different orchestration shape entirely. Forcing the
existing pipeline to fit would mean either faking 4 evaluators per task
(wasteful) or only getting eyes on the work after all N tasks are done (too
late — see the Task 4 near-miss below).

**Five retro items, synthesized:**
1. No `create_story`-shaped chatbot MCP tool — stated multi-task intent stays
   a loose chain of unlinked `submit_task` calls, never becomes a first-class
   Story. Whatever tool fills this gap needs to be complete and make it clear
   to agents how the lower-level primitives (`submit_task`, `spawn_subtask`
   with role, `answer_question`) compose underneath it — not a black box.
2. Needs a genuinely new orchestration mode (sequential task-chain, single
   evaluator per link) — not a reuse of the existing 4-evaluator Story
   pipeline.
3. The local-subagent-for-review / claudomator-for-implementation split this
   session used was practical, not principled — dissolves once (2) exists,
   since "reviewer" just becomes a native evaluator-role task type.
4. Want an orchestrator that resumes intelligently after session/model
   failures — deliberately held for later, tempered by (5): only tractable
   once state is DB/event-backed instead of a local ledger + conversation
   context.
5. **The governing constraint on how to build all of this:** wherever a
   lesson can become a mechanical/code-enforced check, make it one — not a
   prompt reminder a controller has to remember to retype into every
   dispatch. Two concrete bugs from this exact session prove why:
   - The plan document for the tasks-board build was never `git commit`ed.
     Every claudomator container that cloned the repo during that build never
     had the file its dispatch instructions told it to read. 4+ tasks of
     review churn got misattributed to "the implementer didn't follow
     instructions" before this was noticed — days later, by accident. A
     pre-flight "does this referenced file exist in a fresh clone" check
     would have caught it in seconds.
   - `ContainerRunner.buildInnerCmd` (`internal/executor/container.go`) never
     read `t.Agent.Model` when building the `claude -p ...` command — model
     selection was silently a no-op for every task, the entire session,
     masked because every request happened to ask for "sonnet" (the CLI's
     own default). Found only while discussing item 4. Fixed same session
     (commit `2d9ae7e`) — also fixed a real command-injection vector this
     surfaced (`Agent.Model` was unescaped free text concatenated into a
     `sh -c` string; now validated against `^[A-Za-z0-9._-]+$` in
     `task.Validate`, commit `0cedb90`).

**How to apply:** before proposing more hand-orchestrated multi-task claudomator
work, check whether the sequential-task-chain orchestration mode (item 2) has
been built yet — if so, use it instead of re-deriving this whole hand-driven
pattern again. If designing it, lean toward code-enforced checks over prompt
reminders per item 5, and don't build item 4 (resumability) before item 5's
discipline is in place — resumability depends on durable state, not on a
smarter controller.

Full retro discussion, spec, and implementation plan: see
`docs/superpowers/specs/` and `docs/superpowers/plans/` in
`/workspace/claudomator` for whatever this becomes.