@loneexile/omp-superpowers 7.0.0-omp.2 → 7.0.0-omp.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -47,25 +47,39 @@ Use this template when dispatching an implementer subagent.
47
47
  5. Self-review (see below)
48
48
  6. Report back
49
49
 
50
- Work from: [directory]
50
+ Work from: [directory — for a wave task, its worktree's absolute path]
51
+ [WAVE_LINE — only for a task in a wave of two or more: "Other tasks
52
+ run in parallel with this one: before committing, run only the
53
+ covering tests your brief names, not the full suite; the controller
54
+ runs the full suite once the wave merges."]
55
+
56
+ Work only under that directory. Your session may have started in a
57
+ different checkout, so give every file tool (`read`, `write`, `edit`,
58
+ `grep`, `glob`, `lsp`) absolute paths under it, set the `bash` tool's
59
+ `cwd` to it for every command, and commit on the branch checked out
60
+ there, staging your own files by path, never with `git add -A`,
61
+ `git add .` or `git commit -a`: the checkout may hold changes that
62
+ aren't yours. The brief and the report file are the exception: use the
63
+ paths given for them.
51
64
 
52
65
  **While you work:** If you encounter something unexpected or unclear, **ask questions**.
53
66
  It's always OK to pause and clarify. Don't guess or make assumptions.
54
67
 
55
68
  While iterating, run the focused test for what you're changing; run the
56
- full suite once before committing, not after every edit.
69
+ full suite once before committing (unless a wave line above says
70
+ otherwise), not after every edit.
57
71
 
58
72
  ## You Do Not Dispatch Subagents
59
73
 
60
74
  Do all of this task's work yourself. Never spawn a subagent to
61
75
  implement part of the task, and above all never spawn a reviewer to
62
76
  check your work. Self-review (below) means reading your own diff.
63
- Review is the controller's job: after you report, it dispatches a
64
- fresh reviewer against your diff. A reviewer you spawn duplicates
65
- that review at full cost, and its approval counts for nothing in
66
- the process. If you catch yourself thinking "an independent review
67
- would strengthen my report" — that review is already scheduled.
68
- Report instead.
77
+ Review is the controller's job: after you report, it reviews or tests
78
+ your work, and a whole-branch review at the end covers every task. A
79
+ reviewer you spawn duplicates that review at full cost, and its
80
+ approval counts for nothing in the process. If you catch yourself
81
+ thinking "an independent review would strengthen my report" — that
82
+ review is already scheduled. Report instead.
69
83
 
70
84
  ## Code Organization
71
85
 
@@ -126,13 +140,21 @@ Use this template when dispatching an implementer subagent.
126
140
 
127
141
  ## After Review Findings
128
142
 
129
- If the task review finds issues, you will be resumed with the findings.
143
+ If the task review, or the controller's own run of your covering tests,
144
+ finds issues, you will be resumed with the findings.
130
145
  Fix them, re-run the tests that cover the amended code, and append a fix
131
146
  report to your report file: what you changed, the covering tests you
132
147
  ran, the command, and the output. Reviewers will not re-run tests for
133
148
  you — your report is the test evidence. Then reply with the same short
134
149
  status contract as your first report.
135
150
 
151
+ You may also be resumed because your branch would not merge into the
152
+ plan branch: the message names the plan branch and, when tests failed
153
+ on the merged tree, the file holding their output. Rebase onto the
154
+ plan branch, fix what the merge exposed, re-run your covering tests,
155
+ append what you did to your report file, and reply with the same short
156
+ status contract.
157
+
136
158
  ## Report Format
137
159
 
138
160
  Write your full report to [REPORT_FILE]:
@@ -156,7 +178,8 @@ Use this template when dispatching an implementer subagent.
156
178
  If BLOCKED or NEEDS_CONTEXT, put the specifics in the final message
157
179
  itself — the controller acts on it directly.
158
180
 
159
- Use DONE_WITH_CONCERNS if you completed the work but have doubts about correctness.
181
+ Use DONE_WITH_CONCERNS if you completed the work but have doubts about correctness,
182
+ or had to change a file your brief's Files list does not name (say which).
160
183
  Use BLOCKED if you cannot complete the task. Use NEEDS_CONTEXT if you need
161
184
  information that wasn't provided. Never silently produce work you're unsure about.
162
185
  } ] }
@@ -38,6 +38,7 @@ that the fix itself broke nothing.
38
38
  **Fix base:** [FIX_BASE_SHA] (the head the previous review saw)
39
39
  **Head:** [HEAD_SHA]
40
40
  **Diff file:** [DIFF_FILE]
41
+ [CHECKOUT_LINE]
41
42
 
42
43
  Read the diff file in full, with an explicit range: `[DIFF_FILE]:1-3000`
43
44
  (a bare read returns only the first 300 lines; while the footer says
@@ -112,9 +113,13 @@ that the fix itself broke nothing.
112
113
  - `[FINDINGS]` — the Critical/Important findings and spec gaps from the
113
114
  previous review, copied verbatim, one per bullet
114
115
  - `[REPORT_FILE]` — the implementer's report file (fix reports appended)
115
- - `[FIX_BASE_SHA]` — the head the previous review saw
116
- - `[HEAD_SHA]` — current commit
116
+ - `[FIX_BASE_SHA]` — the head the previous review saw: the `[HEAD_SHA]` you
117
+ gave it, as a SHA, never a branch name (a branch moves with the fix)
118
+ - `[HEAD_SHA]` — current commit; for a wave task that has not merged yet,
119
+ its branch tip (`git rev-parse sdd/<plan>/task-<N>`)
117
120
  - `[DIFF_FILE]` — the path `bash scripts/review-package PLAN_FILE FIX_BASE HEAD` printed
121
+ - `[CHECKOUT_LINE]` — same as the task reviewer's: the worktree line for a wave
122
+ task that has not merged yet, omitted otherwise
118
123
 
119
124
  **Re-reviewer returns** (structured): `finding_verdicts[]` (ADDRESSED /
120
125
  NOT_ADDRESSED with file:line), `new_breakage[]` for the fix diff only,
@@ -38,6 +38,7 @@ more, nothing less) and is well-built (clean, tested, maintainable)
38
38
  **Base:** [BASE_SHA]
39
39
  **Head:** [HEAD_SHA]
40
40
  **Diff file:** [DIFF_FILE]
41
+ [CHECKOUT_LINE]
41
42
 
42
43
  Read the diff file in full, with an explicit range: `[DIFF_FILE]:1-3000`
43
44
  (a bare read returns only the first 300 lines; while the footer says
@@ -202,10 +203,16 @@ more, nothing less) and is well-built (clean, tested, maintainable)
202
203
  - `[REPORT_FILE]` — REQUIRED: the file the implementer wrote its detailed
203
204
  report to
204
205
  - `[BASE_SHA]` — commit before this task
205
- - `[HEAD_SHA]` — current commit
206
+ - `[HEAD_SHA]` — current commit; for a wave task that has not merged yet,
207
+ its branch tip (`git rev-parse sdd/<plan>/task-<N>`). Record this SHA:
208
+ it is the next re-review's FIX_BASE
206
209
  - `[DIFF_FILE]` — REQUIRED: the path the controller wrote the review
207
210
  package to (`bash scripts/review-package PLAN_FILE BASE HEAD` prints the unique
208
211
  path it wrote; the package never enters the controller's context)
212
+ - `[CHECKOUT_LINE]` — for a wave task that has not merged yet: `**Checkout:**
213
+ <worktree absolute path> — the task's code lives here, not in your
214
+ session's checkout; read changed files and their call sites under this
215
+ path.` Omit the line otherwise.
209
216
 
210
217
  **Reviewer returns** (structured): `spec_compliance`, `spec_issues[]`,
211
218
  `cannot_verify[]`, `strengths[]`, `findings[]` (Critical/Important/Minor with
@@ -78,7 +78,7 @@ Rules, each measured on omp 18.4.10:
78
78
  - **In vibe mode the session cannot follow a worktree.** Vibe refuses `/move` and `/wt` ("Exit vibe mode first."), and leaving vibe mode kills every worker. A vibe director (your tools include `vibe_spawn` but not `task`) has no `bash`; a worker can run `omp worktree add`, but the session cannot follow it while vibe is on. So ask your human partner to create the worktree and `/move` into it before `/vibe`; otherwise put the worktree's absolute path in every worker brief and `read` files there by absolute path.
79
79
  - **Cleanup.** A finished worktree is removed with `git worktree remove <path>` from the repo — that also deletes the directory. `omp worktree clear` only sweeps *orphaned* entries (its own words: "parent repo no longer tracks this worktree"); a live worktree survives it. **`omp worktree clear --all` removes every entry under the worktree directory** — live worktrees and `/wt` session worktrees included — and force-removes them even with uncommitted changes, without asking (the branches survive). Never run it unless your human partner asked for exactly that, and preview any `clear` with `--dry-run`. Never `rm -rf` a registered worktree.
80
80
 
81
- This is the whole-session layer. Per-*subagent* isolation is a separate switch, `task.isolation.enabled` (default off); subagent-driven-development dispatches its implementers one at a time and does not use it.
81
+ This is the whole-session layer. Per-*subagent* isolation is a separate switch, `task.isolation.enabled` (default off), and subagent-driven-development does not use it: when it runs independent tasks in parallel, it gives each task its own worktree with this same `omp worktree add`, and merges each task's branch back itself.
82
82
 
83
83
  Then skip to Step 2.
84
84
 
@@ -18,7 +18,7 @@ Batch shape (the `task.batch` setting, on by default): one call carries `{ conte
18
18
 
19
19
  Agent types: pick the most specific one per item from the roster in the `task` tool's own description. Commonly available: `scout` (read-only research — use for investigation), `reviewer`, `security-reviewer`, `sonic` (strictly mechanical work), `task` (general-purpose, full capabilities). The exact roster depends on installed and configured agents, so read the tool description rather than assuming.
20
20
 
21
- The tool is lowercase `task`; `Task` does not exist. `task.isolation.enabled` (default off) only lets a dispatch mark items `isolated: true`; isolated work comes back as an applied patch (default `task.isolation.merge: patch`), and an isolated subagent cannot be messaged afterwards. Superpowers SDD does not use it.
21
+ The tool is lowercase `task`; `Task` does not exist. `task.isolation.enabled` (default off) only lets a dispatch mark items `isolated: true`. Under the default `task.isolation.merge: patch`, isolated work comes back as an applied, uncommitted patch. Under `merge: branch`, omp cherry-picks the subagent's commits onto your branch when it finishes, under new commit ids, and deletes the task branch; a conflict leaves `omp/task/<id>` for you to resolve. Never send an isolated subagent a follow-up. Measured on omp 18.11.0: its result says it "cannot be resumed or messaged", yet `write agent://<id>` answers `Delivered`, and the work it does then never reaches your branch while the session runs; after the session ended it sat on a leftover `omp/task/<id>` branch that also repeats the already-merged commit. Dispatch a fresh subagent instead. If a follow-up already went out, cherry-pick only its new commits from that branch, never merge the branch. Superpowers SDD does not use isolation.
22
22
 
23
23
  ### Model selection on omp
24
24
 
@@ -52,7 +52,7 @@ The rule is prompt text, not a tool block. It applies to every subagent at task
52
52
  - a vibe `good` worker told "fix sum.js so sum(2, 3) returns 5, then commit" ran no test;
53
53
  - the same brief plus "This assignment explicitly instructs you to run the tests yourself (`npm test`), before and after the fix" ran both.
54
54
 
55
- So every dispatch that needs a check names the command and when to run it. SDD's implementer template already instructs its test runs: the focused test while iterating, the full suite once before committing.
55
+ So every dispatch that needs a check names the command and when to run it. SDD's implementer template already instructs its test runs: the focused test while iterating, then before committing the full suite, or, for a task in a parallel wave, only its covering tests (the controller runs the full suite once the wave merges).
56
56
 
57
57
  ## Task lists
58
58
 
@@ -33,13 +33,29 @@ This structure informs the task decomposition. Each task should produce self-con
33
33
 
34
34
  ## Task Right-Sizing
35
35
 
36
- A task is the smallest unit that carries its own test cycle and is worth a
37
- fresh reviewer's gate. When drawing task boundaries: fold setup,
36
+ A task is the smallest unit that carries its own test cycle and its own
37
+ commit range. When drawing task boundaries: fold setup,
38
38
  configuration, scaffolding, and documentation steps into the task whose
39
- deliverable needs them; split only where a reviewer could meaningfully
40
- reject one task while approving its neighbor. Each task ends with an
39
+ deliverable needs them; split only where one task could be rejected
40
+ while its neighbor stands. Each task ends with an
41
41
  independently testable deliverable.
42
42
 
43
+ Tasks that share no file and no interface can run in parallel under
44
+ subagent-driven-development. Where a shared file is avoidable, keep it in
45
+ one task.
46
+
47
+ ## Review Marks
48
+
49
+ Every task is reviewed in the whole-branch review at the end of the plan.
50
+ A task also gets its own fresh reviewer when a shipped mistake there is
51
+ costly or hard to see in a whole-branch diff: security or authentication,
52
+ concurrency, a data migration or persisted format, money, a destructive
53
+ operation. Mark such a task under its heading, naming the class:
54
+
55
+ `**Review:** per-task — concurrency`
56
+
57
+ Leave every other task unmarked.
58
+
43
59
  ## Step Granularity
44
60
 
45
61
  **Each step is one action with a checkable result:**
@@ -94,6 +110,8 @@ owns the code, in that task's own step style.]
94
110
  ````markdown
95
111
  ### Task N: [Component Name]
96
112
 
113
+ **Review:** per-task — [class; this line only on a task Review Marks covers]
114
+
97
115
  **Files:**
98
116
  - Create: `exact/path/to/file.py`
99
117
  - Modify: `exact/path/to/existing.py:123-145`
@@ -174,33 +192,48 @@ After writing the complete plan, look at the spec with fresh eyes and check the
174
192
 
175
193
  **5. Proportion:** Compare the plan's length to the spec's. A plan several times longer than the spec it implements is a transcript of the program, not a plan. If code blocks are most of the document, replace bodies with signatures, test names and assertions, and check that each step is still unambiguous.
176
194
 
195
+ **6. Review marks:** Every task touching security, authentication, concurrency, a data migration or persisted format, money, or a destructive operation carries a `**Review:** per-task` mark; no other task does.
196
+
177
197
  If you find issues, fix them inline. No need to re-review — just fix and move on. If you find a spec requirement with no task, add the task.
178
198
 
179
199
  ## Execution Handoff
180
200
 
181
- After saving and self-reviewing the plan, link it for your human partner
182
- to read. If they have already explicitly supplied an execution method, ask
183
- them to review the plan and confirm it captures what they want; wait for that
184
- review before implementation, then use the preserved method. Otherwise, ask
185
- them to review the plan and choose an execution method before implementation.
186
-
187
- **When no execution method has already been supplied:**
188
-
189
- **"Plan complete and saved to `docs/plans/<filename>.md`. Please review the plan. Which execution approach would you prefer?**
190
-
191
- - **Subagent-driven** - A fresh subagent implements each task and a fresh reviewer checks it before the next one starts, then a whole-branch review at the end. Most thorough; costs a fresh context per task and per review.
192
- - **Native** - I implement every task myself in this session, the way this harness runs work, then one fresh reviewer on the most capable model checks the whole branch. Cheapest and fastest; no independent review until the end. Runs well with a mid-tier session model, since the plan carries the design.
193
-
194
- **For this plan I recommend <one of the two>, because <one sentence from the plan: how much the tasks depend on each other's interfaces, how many there are, what a shipped mistake would cost>. Does the plan capture what you want, and which approach should we use?"**
195
-
196
- **On omp in vibe mode** (your tools include `vibe_spawn` but not `task`), both approaches run in one `good` worker you brief, not in your own session; the chosen skill's vibe note says how. Say so when you offer them.
197
-
198
- **When an execution method has already been supplied:**
199
-
200
- **"Plan complete and saved to `docs/plans/<filename>.md`. Please review the plan. Does it capture what you want?"**
201
-
202
- **If Subagent-driven chosen:**
201
+ After saving and self-reviewing the plan, choose the execution method
202
+ yourself, unless your human partner already named one:
203
+
204
+ - **Subagent-driven** (superpowers:subagent-driven-development) - A fresh subagent implements each task, independent tasks run in parallel in their own worktrees, the tasks marked `**Review:** per-task` get a fresh reviewer each, and one whole-branch review at the end covers every task. Fastest for several tasks whose interfaces the plan settles; costs a fresh context per task.
205
+ - **Native** (superpowers:executing-plans) - I implement every task myself in this session, the way this harness runs work, then one fresh reviewer on the most capable model checks the whole branch. Cheapest, and fastest for a few small tasks; no independent review until the end. Runs well with a mid-tier session model, since the plan carries the design.
206
+
207
+ A plan with any `**Review:** per-task` mark runs Subagent-driven unless your
208
+ human partner says otherwise: Native has no task reviews. If you still
209
+ choose Native, name the marked tasks in the approval and say they get no
210
+ review before the final one.
211
+
212
+ Then ask for ONE approval that covers everything they have not approved
213
+ yet: the design document when this plan came straight from brainstorming,
214
+ the plan, the method, and where the work runs. Do not ask them to pick the
215
+ method; name the one you chose and why, and they can swap it in the same
216
+ reply. Name the workspace too: a new branch in this checkout unless they
217
+ already said otherwise. Approving it answers superpowers:using-git-worktrees'
218
+ consent question with "no new worktree", so the run needs no `/move` from
219
+ them; the execution skill creates the branch at its Setup. If `git status
220
+ --porcelain` lists a change to a tracked file or anything staged, say so in
221
+ the same message: a run in place needs those committed or stashed first.
222
+ They can answer `/wt <branch>` instead to move the session into its own
223
+ worktree:
224
+
225
+ **"Design: `docs/specs/<filename>.md`. Plan: `docs/plans/<filename>.md`, <N> tasks. I'll run it <method> on a new branch `<branch>` in this checkout, because <one sentence from the plan: how much the tasks depend on each other's interfaces, how many there are, what a shipped mistake would cost>. Calls I made for you: <the decisions marked as your call, one line each>. Approve both, or tell me what to change, the method included; reply `/wt <branch>` if you want it in its own worktree."**
226
+
227
+ Leave out the Design line when there is no new design document, and the
228
+ calls line when you made none. When they already named the method, use
229
+ theirs and say so instead of the because-sentence. Wait for that one
230
+ answer. If they change the design, update both documents before you ask
231
+ again; if they change only the method or the workspace, start with theirs.
232
+
233
+ **On omp in vibe mode** (your tools include `vibe_spawn` but not `task`), both approaches run in one `good` worker you brief, not in your own session; the chosen skill's vibe note says how. Say so in the approval message.
234
+
235
+ **Once approved, Subagent-driven:**
203
236
  - **REQUIRED SUB-SKILL:** Use superpowers:subagent-driven-development
204
237
 
205
- **If Native chosen:**
238
+ **Once approved, Native:**
206
239
  - **REQUIRED SUB-SKILL:** Use superpowers:executing-plans