@loneexile/omp-superpowers 7.0.0-omp.1 → 7.0.0-omp.3

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.
@@ -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
@@ -115,6 +116,8 @@ that the fix itself broke nothing.
115
116
  - `[FIX_BASE_SHA]` — the head the previous review saw
116
117
  - `[HEAD_SHA]` — current commit
117
118
  - `[DIFF_FILE]` — the path `bash scripts/review-package PLAN_FILE FIX_BASE HEAD` printed
119
+ - `[CHECKOUT_LINE]` — same as the task reviewer's: the worktree line for a wave
120
+ task that has not merged yet, omitted otherwise
118
121
 
119
122
  **Re-reviewer returns** (structured): `finding_verdicts[]` (ADDRESSED /
120
123
  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
@@ -206,6 +207,10 @@ more, nothing less) and is well-built (clean, tested, maintainable)
206
207
  - `[DIFF_FILE]` — REQUIRED: the path the controller wrote the review
207
208
  package to (`bash scripts/review-package PLAN_FILE BASE HEAD` prints the unique
208
209
  path it wrote; the package never enters the controller's context)
210
+ - `[CHECKOUT_LINE]` — for a wave task that has not merged yet: `**Checkout:**
211
+ <worktree absolute path> — the task's code lives here, not in your
212
+ session's checkout; read changed files and their call sites under this
213
+ path.` Omit the line otherwise.
209
214
 
210
215
  **Reviewer returns** (structured): `spec_compliance`, `spec_issues[]`,
211
216
  `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
 
@@ -13,7 +13,7 @@ Write implementation plans for an engineer who has not seen this codebase or thi
13
13
 
14
14
  **Context:** If working in an isolated worktree, it should have been created via the `superpowers:using-git-worktrees` skill at execution time.
15
15
 
16
- **Save plans to:** `docs/superpowers/plans/YYYY-MM-DD-<feature-name>.md`
16
+ **Save plans to:** `docs/plans/YYYY-MM-DD-<feature-name>.md`
17
17
  - (User preferences for plan location override this default)
18
18
 
19
19
  ## Scope Check
@@ -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,45 @@ 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:**
201
+ After saving and self-reviewing the plan, choose the execution method
202
+ yourself, unless your human partner already named one:
188
203
 
189
- **"Plan complete and saved to `docs/superpowers/plans/<filename>.md`. Please review the plan. Which execution approach would you prefer?**
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 tightly coupled tasks; no independent review until the end. Runs well with a mid-tier session model, since the plan carries the design.
190
206
 
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.
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.
193
211
 
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?"**
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, so the run needs no `/move` from them, and this
218
+ approval is the consent superpowers:using-git-worktrees would otherwise
219
+ ask for. They can answer `/wt <branch>` instead to move the session into
220
+ its own worktree:
195
221
 
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.
222
+ **"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."**
197
223
 
198
- **When an execution method has already been supplied:**
224
+ Leave out the Design line when there is no new design document, and the
225
+ calls line when you made none. When they already named the method, use
226
+ theirs and say so instead of the because-sentence. Wait for that one
227
+ answer. If they change the design, update both documents before you ask
228
+ again; if they change only the method or the workspace, start with theirs.
199
229
 
200
- **"Plan complete and saved to `docs/superpowers/plans/<filename>.md`. Please review the plan. Does it capture what you want?"**
230
+ **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.
201
231
 
202
- **If Subagent-driven chosen:**
232
+ **Once approved, Subagent-driven:**
203
233
  - **REQUIRED SUB-SKILL:** Use superpowers:subagent-driven-development
204
234
 
205
- **If Native chosen:**
235
+ **Once approved, Native:**
206
236
  - **REQUIRED SUB-SKILL:** Use superpowers:executing-plans