@nklisch/pi-agile-workflow 0.15.3 → 0.16.1

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.
@@ -45,8 +45,9 @@ running inline, use the same categories in the final summary:
45
45
 
46
46
  - **Complete** when no in-scope active item remains at `drafting`,
47
47
  `implementing`, or `review`.
48
- - **Blocked** when in-scope items remain but none are ready, an item has a hard
49
- blocker, or the review circuit-breaker escalated unresolved work.
48
+ - **Blocked** when in-scope items remain but none are ready or an item has a
49
+ genuine hard blocker that autonomous diagnosis and correction cannot resolve.
50
+ Review bounce count alone is never a blocker.
50
51
  - **Interrupted** when the user stops the run. Finish the current safe
51
52
  transition, commit if anything changed, summarize the remaining queue, and
52
53
  let the harness/user decide whether to continue the goal later.
@@ -56,6 +57,9 @@ running inline, use the same categories in the final summary:
56
57
  - `autopilot <epic-id>` - drain items under `<epic-id>` transitively via the
57
58
  parent chain until the scoped queue is done or blocked.
58
59
  - `autopilot --all` - drain all `.work/active/` items.
60
+ - `autopilot --review-weight <level> <scope>` - set review effort to `none`,
61
+ `light`, `standard`, `thorough`, or `maximum` for item reviews and final
62
+ completion review. An unambiguous natural-language equivalent is also valid.
59
63
  - `autopilot <free-text>` - interpret as a scope directive, such as "finish the
60
64
  dangling work", "wrap up phase 14", or "drain everything tagged refactor".
61
65
  Log the interpretation in the run summary. When scope is ambiguous, prefer the
@@ -97,16 +101,23 @@ Build the scope from the argument:
97
101
  Only active items are candidates. Backlog items must be promoted through
98
102
  `scope` before autopilot can touch them.
99
103
 
100
- **Settle the implementation tier once, here at kickoff** don't let it default
101
- silently per wave. If the goal/args/user named a tier (or the project fixes one
102
- in `.work/CONVENTIONS.md`), honor it. Otherwise, when the goal permits
103
- interaction, ask once for a capability tier **baseline**, **raised**, or
104
- **highest** and lock it for the whole run. The host resolves that capability to
105
- its available generic subagent model/effort at dispatch time. Under an autonomous
106
- goal contract that forbids mid-run questions, use the `implement-orchestrator`
107
- default and **state the tier in the run summary** so a cheap-tier drain is never
108
- a silent surprise. Pass the settled tier down in the Phase 4 caller note so
109
- `implement-orchestrator` does not re-ask.
104
+ Resolve worker capability and review weight at kickoff without a routine tier
105
+ question.
106
+
107
+ For worker capability, honor an explicit goal/argument/caller choice first, then
108
+ a stable `.work/CONVENTIONS.md` choice. Otherwise choose from scope and risk:
109
+ bounded familiar work can use baseline capability; cross-cutting, contract, or
110
+ uncertain work warrants raised capability; architectural, security-critical, or
111
+ high-consequence work warrants the highest available capability. This is
112
+ judgment, not a fixed item-kind mapping. Record the effective choice and reason
113
+ in the run summary and pass it in the Phase 4 caller note.
114
+
115
+ For `review_weight`, validate the five-level scale and resolve in this order:
116
+ explicit `--review-weight` or unambiguous natural-language selector,
117
+ `.work/CONVENTIONS.md`, then the default `standard`. Explicit caller selection
118
+ always wins. Record the effective weight and source in the run summary and pass
119
+ it in every Phase 4 caller note so production and review skills use one value
120
+ through parent roll-up and final completion review.
110
121
 
111
122
  ### Phase 2: Build The Queue
112
123
 
@@ -147,18 +158,19 @@ this caller note in every delegated prompt:
147
158
 
148
159
  > Delegated by an active agile-workflow autopilot goal for `<scope>`. Resolve
149
160
  > ambiguities with judgment, log rationale in the item body, and do not ask
150
- > strategic questions unless a hard halt condition applies. Implementation tier
151
- > for this run: `<settled tier>` — use it for worker dispatch; do not re-ask. For large or risky
152
- > design decisions, use the cross-model advisory review policy from
153
- > `principles/SKILL.md` (Part IV) only when a different model class is available;
154
- > peer failures are non-blocking. For deep or complex design work, use **two
155
- > different model classes** if available, paired across the advisory→adversarial
156
- > phases in `principles/references/models.md`. A top-tier reasoning peer may take
157
- > 10 to 30 minutes for a large review; lack of output after a few minutes does
158
- > not mean it has hung. For subagent role names, load
159
- > `principles/references/subagents.md`. When hosted in Pi, use only the
160
- > supported agile-workflow Pi roles for this adapter; whether a reviewer run is
161
- > cross-model depends on the model/provider selected at spawn time.
161
+ > strategic questions unless a hard halt condition applies. Worker capability
162
+ > for this run: `<effective capability>` — selected because `<risk/scope reason>`;
163
+ > use it for dispatch and do not re-ask. Review weight for this run:
164
+ > `<none|light|standard|thorough|maximum>` (source: `<explicit|project|default>`);
165
+ > pass it unchanged to review, including ancestor roll-up. Apply the risk-driven
166
+ > advisory policy from `principles/SKILL.md` Part IV in direct and autopilot
167
+ > modes: use independent review only when the risk and review weight warrant it,
168
+ > and label review cross-model only when a different model class is actually
169
+ > selected. Peer failures during design are non-blocking. Preserve
170
+ > complementary→adversarial order when both phases run. For reviewer posture and
171
+ > host-native roles, load `principles/references/subagents.md`; for capability
172
+ > mapping, load `principles/references/models.md`. A top-tier reasoning peer may
173
+ > take 10 to 30 minutes; quiet output after a few minutes is not a hang.
162
174
 
163
175
  Routing:
164
176
 
@@ -185,40 +197,50 @@ Routing:
185
197
  Requires the `agentic-research` plugin; without it, treat as a plain implementing item ->
186
198
  `implement-orchestrator`, mirroring the drafting row's degrade.)
187
199
  - `stage: implementing`, non-epic (and NOT `tags: [prose]` or `[research]`) -> `implement-orchestrator <scope>`
188
- - `stage: review` -> `review <id>` (review self-selects its lane: a **story**
189
- fast-advances on `implement`'s verification with no peer pass; a **feature** or
190
- **epic** gets a fresh-context deep review cross-model via peeragent when a
191
- different class is reachable (two classes paired across the advisory→adversarial
192
- phases for deep/complex scope; see `principles/references/models.md`), else a
193
- generic sub-agent prompted as a reviewer from `principles/references/subagents.md`
194
- with the strongest appropriate model available (cross-model only if that model
195
- is a different class), else a fresh top-class sub-agent)
196
-
197
- The delegated skill owns its internal workflow and stage transition. After it
198
- returns, rebuild the queue from disk rather than relying on cached state.
200
+ - `stage: review` -> `review --review-weight <effective weight> <id>`. Review
201
+ selects effort and lane from weight + risk + evidence + kind-as-heuristic:
202
+ low-risk stories can close on green verification, while features, epics, and
203
+ risk-escalated stories receive the fresh-context coverage permitted by the
204
+ weight. The review skill also rolls approved children through eligible
205
+ ancestors, but never skips an ancestor's own review.
206
+
207
+ Production skills now continue through review to `done` by default (unless an
208
+ explicit stop-at-review override applies), so autopilot may return to a queue
209
+ where the delegated item and eligible ancestors are already terminal. This is
210
+ expected, not a mandatory user handoff. The delegated skill owns its internal
211
+ workflow and transitions; after it returns, rebuild the queue from disk rather
212
+ than relying on cached state.
199
213
 
200
214
  If a delegated skill reports a hard blocker without a stage transition, append
201
215
  a `## Blocker` section to the item body, commit that note, and continue with
202
216
  other ready items. The final goal outcome is blocked if unresolved blockers
203
217
  remain in scope.
204
218
 
205
- ### Phase 5: Review Circuit-Breaker
219
+ ### Phase 5: Review Convergence Loop
206
220
 
207
- Track per-item review bounces during the run:
221
+ A review bounce is corrective work, not a human handoff. Track per-item bounces
222
+ only as diagnostic history:
208
223
 
209
224
  ```text
210
225
  bounces[<item-id>] = times this item has gone implementing -> review -> implementing
211
226
  ```
212
227
 
213
- If an item bounces back to `implementing` twice:
228
+ After every bounce:
214
229
 
215
- 1. Append `## Stuck at review` with the latest blockers and the two-pass note.
216
- 2. Leave the item at `review`.
217
- 3. Log it as escalated.
218
- 4. Continue draining other ready work.
230
+ 1. Confirm the review left concrete, durable findings in the item body.
231
+ 2. Rebuild the queue so the item naturally re-enters implementation.
232
+ 3. Implement the findings, run the relevant verification, and send the item
233
+ through review again.
234
+ 4. Continue until review approves the item or autonomous work reaches a genuine
235
+ hard blocker under `principles/SKILL.md` Part III.
219
236
 
220
- Escalated items make the final goal outcome blocked unless the user resolves
221
- them before the run ends.
237
+ There is no fixed bounce limit. If the same substantive finding survives more
238
+ than one correction pass, treat recurrence as evidence that the attempted fix or
239
+ design model is wrong: re-read the item and foundation docs, diagnose the root
240
+ cause, revise the item design or implementation notes when needed, and use a
241
+ fresh implementation or review context when that would add independent
242
+ judgment. Do not park the item at `review`, label it stuck, or require human
243
+ intervention solely because a counter reached two (or any other number).
222
244
 
223
245
  ### Phase 6: Refactor Cadence (`--all` Only)
224
246
 
@@ -249,10 +271,11 @@ Do not stop because of elapsed time, context size, or "long run" concerns. The
249
271
  harness owns continuation. Your job is to keep applying the queue policy until a
250
272
  real stop rule fires.
251
273
 
252
- ### Phase 8: Final Peer Review Loop
274
+ ### Phase 8: Final Completion Review Loop
253
275
 
254
276
  This is the last step before reporting `complete`. It runs in addition to any
255
- design-time cross-model advisory passes from delegated skills.
277
+ design-time advisory passes from delegated skills and is calibrated by the same
278
+ effective `review_weight`; the phase itself is never skipped.
256
279
 
257
280
  When the scoped queue appears drained:
258
281
 
@@ -263,25 +286,30 @@ When the scoped queue appears drained:
263
286
  - commits associated with advanced items
264
287
  - notable design decisions, implementation deviations, blockers resolved,
265
288
  and verification results reported by delegated skills
266
- 2. Run the completion review as the two-phase design-review order from
267
- `principles/SKILL.md` Part IV (advisory/completeness, then adversarial). If
268
- `peer-review` is available with a different model class, use it; for a deep or
269
- complex completion bundle, **use two different model classes** if available,
270
- one per phase. Ask for bugs, missed acceptance criteria, unreviewed risks,
271
- foundation-doc drift, and substrate-state inconsistencies that would make
272
- "complete" premature. A top-tier reasoning peer may take 10 to 30 minutes for a
273
- large completion review; do not classify a quiet, still-running process as
274
- hung after only a few minutes.
275
- 3. If peeragent would use the same model class, do not use `peer-review`; spawn
276
- a generic sub-agent prompted as a reviewer from
277
- `principles/references/subagents.md` when available, with the strongest
278
- appropriate model. Record it as cross-model only if that spawned model is a
279
- different class; otherwise record same-harness fresh-context.
280
- 4. If peer-review is unavailable, use that same generic reviewer-subagent path
281
- when available, otherwise the local inline review fallback.
282
- If the selected final-review path fails, do not report completion; mark the
283
- run blocked on final review and include the failure reason. Do not invent a
284
- pass.
289
+ 2. Calibrate the completion review from the weight without turning it into a
290
+ rigid dispatch recipe:
291
+ - `none`: run no independent reviewer; administratively verify the completion
292
+ bundle has green verification and acceptance evidence for every in-scope
293
+ item, plus internally consistent terminal substrate state.
294
+ - `light`: use at most one focused fresh-context pass over the bundle.
295
+ - `standard`: use balanced risk-based fresh-context review.
296
+ - `thorough`: increase complementary and adversarial fresh-context coverage.
297
+ - `maximum`: seek multi-model, multi-pass complementary → adversarial review.
298
+ Ask for bugs, missed acceptance criteria, unreviewed risks, foundation-doc
299
+ drift, and substrate-state inconsistencies that would make "complete"
300
+ premature. Exact reviewer count and pass depth remain model judgment within
301
+ the weight's ceiling/intent.
302
+ 3. When independent review runs, use a different-class peer when reachable;
303
+ otherwise spawn a generic same-harness fresh-context reviewer from
304
+ `principles/references/subagents.md` with the strongest appropriate
305
+ capability. Label it cross-model only if the selected model class differs
306
+ from the host. A top-tier reviewer may take 10 to 30 minutes; quiet output
307
+ after a few minutes is not a hang.
308
+ 4. If the effective weight requires fresh-context review and no such path is
309
+ available or the selected path fails, do not report completion; mark the run
310
+ blocked on final review and include the reason. `none` requires complete
311
+ administrative evidence instead of a fresh reviewer; missing evidence blocks
312
+ rather than becoming an invented pass.
285
313
  5. For every substantive accepted finding:
286
314
  - Small and clearly safe fix: fix it immediately, run verification, commit,
287
315
  and rebuild the queue.
@@ -308,20 +336,24 @@ Narrate briefly as items advance. Final summary:
308
336
  - Goal scope and interpretation
309
337
  - Items advanced to done
310
338
  - Items reviewed and approved
311
- - Items reviewed and bounced
312
- - Escalated or blocked item ids
339
+ - Items reviewed and bounced, including recurring findings and how they converged
340
+ - Genuinely blocked item ids and blocker reasons
313
341
  - Refactor cadences run (`--all` only)
314
342
  - Implement-orchestrator bundle summary, if reported
315
- - Final peer-review status: cross-model, local fallback, skipped, or failed;
316
- include accepted findings fixed/filed and rejected findings summary
343
+ - Effective worker capability and selection rationale
344
+ - Effective review weight and source
345
+ - Final completion-review status: administrative, cross-model, same-harness
346
+ fresh-context, or failed; include accepted findings fixed/filed and rejected
347
+ findings summary
317
348
  - Goal outcome: complete, blocked, or interrupted
318
349
 
319
350
  ## Guardrails
320
351
 
321
352
  - Never use structured question tool while an autopilot goal is actively driving the
322
353
  delegated work. Resolve with judgment and log rationale.
323
- - Do not report `complete` until Phase 8 has run successfully and all accepted
324
- final-review findings have been fixed or filed back into the queue.
354
+ - Do not report `complete` until Phase 8 has run successfully at the effective
355
+ review weight and all accepted findings have been fixed or filed back into the
356
+ queue.
325
357
  - Commit after every item state change or blocker note.
326
358
  - Do not push, force-push, or release; the user controls publication.
327
359
  - Do not touch `.work/backlog/` except to report that backlog items are out of
@@ -447,6 +447,9 @@ Run an interactive interview via structured question tool. Six questions, in ord
447
447
  leak to future agents. Offer `retain-bodies` only for projects that deliberately keep full terminal
448
448
  bodies on disk (same `archived_atop`/late-binding semantics, bodies just not pruned).
449
449
 
450
+ Review weight is deliberately not another interview question. Bootstrap writes the balanced default
451
+ in Phase 5; callers can change the project convention later or override it per invocation.
452
+
450
453
  ### Phase 4: Create substrate skeleton
451
454
 
452
455
  ```bash
@@ -467,11 +470,23 @@ environment, locate the plugin source via the active skill/plugin path or manife
467
470
 
468
471
  ### Phase 5: Write CONVENTIONS.md
469
472
 
470
- Write `.work/CONVENTIONS.md` from the interview answers, following the format in SPEC.md. The
471
- `## Terminal-tier retention` section is **value-only** — write the bare `delete-refs`/`retain-bodies`
472
- value the user chose, not the merged prose (the prose lives in SPEC.md, never duplicated per project).
473
- This bare-value form is exactly what a later sync classifies as `match`, so a freshly bootstrapped
474
- repo never self-reports terminal-retention drift.
473
+ Write `.work/CONVENTIONS.md` from the interview answers, following the format in SPEC.md. Also add
474
+ this non-interactive project default:
475
+
476
+ ```markdown
477
+ ## Review weight
478
+ review_weight: standard
479
+ ```
480
+
481
+ Allowed values are `none | light | standard | thorough | maximum`. The setting is optional: when it
482
+ is absent, review and autopilot resolve it to `standard`. Keep the level semantics and selection
483
+ policy in `principles/SKILL.md` Part IV and `review/SKILL.md`; do not duplicate their review matrix or
484
+ model guidance here.
485
+
486
+ The `## Terminal-tier retention` section is **value-only** — write the bare
487
+ `delete-refs`/`retain-bodies` value the user chose, not the merged prose (the prose lives in SPEC.md,
488
+ never duplicated per project). This bare-value form is exactly what a later sync classifies as
489
+ `match`, so a freshly bootstrapped repo never self-reports terminal-retention drift.
475
490
 
476
491
  ### Phase 6: Write the canonical AGENTS.md section
477
492
 
@@ -1047,6 +1062,10 @@ path list), plus deeper checks:
1047
1062
  - `.claude/rules/patterns.md` state (legacy content vs AGENTS shim)
1048
1063
  - `.work/CONVENTIONS.md` load-bearing tag entries (see below). The rest of
1049
1064
  CONVENTIONS is user-owned and untouched.
1065
+ - `.work/CONVENTIONS.md` `review_weight` — preserve any existing value unchanged; review validates
1066
+ the five-value boundary when it consumes the setting. Absence is also valid and resolves to
1067
+ `standard`, so sync neither inserts the default into older projects nor asks a migration question.
1068
+ The allowed values and canonical policy are in Phase 5.
1050
1069
  - `.work/CONVENTIONS.md` **Terminal-tier retention** state (the merged convention — see
1051
1070
  "Terminal-tier retention drift" below). The per-project CONVENTIONS template is **value-only** (a
1052
1071
  `## Terminal-tier retention` heading + a bare `delete-refs`/`retain-bodies` value); the merged
@@ -1337,9 +1356,10 @@ These are NEVER touched in sync mode:
1337
1356
  user confirmation, are: (a) load-bearing tag entries (`refactor`, `perf`) when they match a known
1338
1357
  prior plugin default verbatim, and (b) the `## Terminal-tier retention` convention when it is
1339
1358
  `missing`/`partial`/a bespoke `## Done-item archival` overlap (add / reconcile / converge). A bare
1340
- `delete-refs`/`retain-bodies` value is `match` and is left untouched. Everything
1341
- else in CONVENTIONS release mapping, project tags, slug conventions, gate config, any user
1342
- proseis untouched.
1359
+ `delete-refs`/`retain-bodies` value is `match` and is left untouched. `review_weight` is optional
1360
+ and is never added, reset, or rewritten by sync; preserve an existing value byte-for-byte, while
1361
+ absence continues to mean `standard`. Everything else in CONVENTIONS release mapping, project
1362
+ tags, slug conventions, gate config, any user prose — is untouched.
1343
1363
  - Everything under `.work/active/`, `.work/backlog/`, `.work/releases/`,
1344
1364
  `.work/archive/`
1345
1365
  - User-authored rule references under `.agents/skills/refactor-conventions/`.
@@ -248,76 +248,25 @@ decomposition. Child briefs note "mockups pending — see parent epic" so
248
248
 
249
249
  Skip this phase entirely if `ux-ui-design` is not installed.
250
250
 
251
- ### Phase 4.7: Surface high-level design ambiguities
252
-
253
- Read the epic and the candidate decomposition you've sketched, and derive
254
- specific, concrete high-level design questions about *this* epic's actual
255
- work. These are the directional choices that, if locked in now, will keep
256
- every child feature's later design pass aligned. Examples of the *shape* of
257
- question to surface (the actual content must come from the epic):
258
-
259
- - "For this epic's auth surface, do we use OAuth via the existing provider,
260
- or roll a local session model?"
261
- - "Should the new sync engine push from server to client, pull from client
262
- on-demand, or both?"
263
- - "Are we committing to multi-tenant data isolation in this epic, or is
264
- single-tenant acceptable for v1?"
265
- - "Does the import pipeline need to handle CSV and Parquet, or just CSV?"
266
-
267
- These are product/architecture/scope questions specific to the epic in
268
- front of you not generic prompts about boundaries, naming, or sizing.
269
- Skip anything you can answer from the epic body, foundation docs, or
270
- codebase. Skip anything that's safely a downstream feature-design call
271
- (function signatures, exact file paths, per-unit test approach).
272
-
273
- Aim for the smallest set of questions that meaningfully resolve direction
274
- — typically 2-5. Zero is fine if the epic body and foundation docs already
275
- pin every directional choice.
276
-
277
- **Cross-model advisory review under autopilot.** If this skill is running as a
278
- delegation from active autopilot, the epic has large/risky architectural
279
- decisions, and the body does not already contain useful `## Design decisions`
280
- from a prior `--only-questions` pass, apply the cross-model advisory review
281
- policy from `principles/SKILL.md` before resolving the questions yourself.
282
-
283
- Use one focused `peer` pass only when a different model class is available.
284
- Ask for missing questions, risks, ambiguous constraints, and alternatives for
285
- this epic's decomposition — not for a final verdict. Do not run the multi-pass
286
- `peer-review` loop during routine autopilot design. If peeragent is
287
- unavailable, the peer would use the same model class, or the invocation fails,
288
- continue with host judgment and note that the advisory pass was skipped.
289
- If the peeragent target is Claude Opus, allow 10 to 30 minutes for a large
290
- review; no return after a few minutes is not evidence that it has hung.
291
-
292
- Summarize the useful output under `## Other agent review` in the epic body and
293
- fold accepted questions/risks into the decisions you log. Do not paste the peer
294
- transcript into the item.
295
-
296
- If this skill is running **as a delegation from an active autopilot run or
297
- harness goal**, resolve each question with judgment (prioritize: consistent
298
- with foundation docs > simpler option > defers irreversible decisions) and log
299
- under `## Design decisions` in the epic body:
300
-
301
- ```markdown
302
- ## Design decisions
303
- - **<question>**: <choice> — <one-line rationale>
304
- ```
305
-
306
- In every other invocation — including direct user invocation under harness
307
- auto mode (`permissions.defaultMode: "auto"`) — ask the user via
308
- `structured question tool` before locking in, then write the answers under `## Design
309
- decisions` in the epic body. Harness-level "work without pausing" reminders
310
- do **not** suppress these checkpoints. See `principles/SKILL.md` Part III
311
- for the full caller-awareness rule.
312
-
313
- The child feature briefs you write in Phase 6 should reference the relevant
314
- design decisions so each feature's later design pass inherits the locked-in
315
- direction.
316
-
317
- The exception under autopilot: a 50/50 between two large irreversible
318
- choices (e.g., SQL vs document store for this epic's persistence layer).
319
- Append a `## Blocker` section and return without advancing — autopilot will
320
- skip and surface the blocker.
251
+ ### Phase 4.7: Resolve high-level design decisions
252
+
253
+ Identify the epic-specific product, architecture, scope, and decomposition
254
+ decisions that must align its child features. Ignore points settled by the epic,
255
+ foundation docs, code, or an existing `## Design decisions` section, and leave
256
+ function signatures, file paths, and unit-level tests to feature design. Zero
257
+ open decisions is valid.
258
+
259
+ Apply `principles/SKILL.md` Part III exactly: resolve routine, reversible points
260
+ with judgment and a logged rationale; reserve structured questions for product
261
+ direction, external contracts, and expensive hard-to-reverse choices. Apply
262
+ Part IV's risk-driven advisory policy in both direct and autopilot modes; do not
263
+ restate reviewer topology here.
264
+
265
+ Record decisions under `## Design decisions`. When autopilot is the active
266
+ driver, it never asks; use evidence and the least irreversible sound choice.
267
+ Only contradictory state that Part III identifies as a hard halt blocks
268
+ advancement. Child briefs reference the decisions relevant to their later design
269
+ passes.
321
270
 
322
271
  ### Phase 5: Pre-mortem
323
272
 
@@ -201,68 +201,29 @@ agent rules (tag semantics, test integrity, review policy). Treat AGENTS as
201
201
  canonical if they disagree. Recency improves adherence. Confirm your approach
202
202
  aligns with project conventions.
203
203
 
204
- ### Phase 4.5: Surface ambiguities
205
-
206
- Read the feature brief and the design space you've started to map, and
207
- derive specific, concrete design questions about *this* feature's actual
208
- work requirements gaps, architecture trade-offs, scope boundaries,
209
- integration assumptions, UX decisions. The questions must come from the
210
- feature in front of you; examples of the *shape* only:
211
-
212
- - "Should the cache invalidate on write or rely on TTL only?"
213
- - "Does the upload accept multipart, or a presigned URL flow?"
214
- - "When the parser hits a malformed row, do we skip and continue or fail
215
- the whole batch?"
216
- - "Is paging cursor-based or offset-based?"
217
-
218
- Skip anything the brief, parent epic body, foundation docs, or codebase
219
- already pin. Skip anything that's safely an implementation-time call.
220
-
221
- Aim for the smallest set of questions that meaningfully resolve direction
222
- — typically 2-5. Zero is fine if everything's already pinned.
223
-
224
- **Cross-model advisory review under autopilot.** If this skill is running as a
225
- delegation from active autopilot, the feature has large/risky architectural
226
- decisions, and the body does not already contain useful `## Design decisions`
227
- from a prior `--only-questions` pass, apply the cross-model advisory review
228
- policy from `principles/SKILL.md` before resolving the questions yourself.
229
-
230
- Use one focused `peer` pass only when a different model class is available.
231
- Ask for missing questions, risks, ambiguous constraints, and alternatives for
232
- this feature's design — not for a final verdict. Do not run the multi-pass
233
- `peer-review` loop during routine autopilot design. If peeragent is
234
- unavailable, the peer would use the same model class, or the invocation fails,
235
- continue with host judgment and note that the advisory pass was skipped.
236
- If the peeragent target is Claude Opus, allow 10 to 30 minutes for a large
237
- review; no return after a few minutes is not evidence that it has hung.
238
-
239
- Summarize the useful output under `## Other agent review` in the feature body
240
- and fold accepted questions/risks into the decisions you log. Do not paste the
241
- peer transcript into the item.
242
-
243
- If this skill is running **as a delegation from an active autopilot run or
244
- harness goal**, resolve each question with judgment (prioritize: consistent
245
- with foundation docs > simpler option > defers irreversible decisions) and log
246
- under `## Design decisions` in the body:
204
+ ### Phase 4.5: Resolve design decisions
205
+
206
+ Identify concrete decisions raised by this feature's requirements, architecture,
207
+ scope, integrations, and UX. Ignore points already settled by the brief, parent,
208
+ foundation docs, code, or an existing `## Design decisions` section, and defer
209
+ safe implementation details. Zero open decisions is valid.
210
+
211
+ Apply `principles/SKILL.md` Part III exactly: resolve routine, reversible points
212
+ with judgment and a logged rationale; reserve structured questions for product
213
+ direction, external contracts, and expensive hard-to-reverse choices. Apply
214
+ Part IV's risk-driven advisory policy in both direct and autopilot modes; do not
215
+ restate reviewer topology here.
216
+
217
+ Record decisions in the feature body:
247
218
 
248
219
  ```markdown
249
220
  ## Design decisions
250
- - **<question>**: <choice> — <one-line rationale>
221
+ - **<decision>**: <choice> — <one-line rationale>
251
222
  ```
252
223
 
253
- If the body already contains a `## Design decisions` section (from a prior
254
- `--only-questions` pass or from `epic-design` Phase 4.7), treat those
255
- locked-in answers as inputs — do NOT re-ask them.
256
-
257
- In every other invocation — including direct user invocation under harness
258
- auto mode (`permissions.defaultMode: "auto"`) — ask the user via
259
- `structured question tool` before locking in. Harness-level "work without pausing"
260
- reminders do **not** suppress these checkpoints. See `principles/SKILL.md`
261
- Part III for the full caller-awareness rule.
262
-
263
- The exception under autopilot: a 50/50 between two large irreversible choices
264
- (e.g., SQL vs document store). Append a `## Blocker` section and return
265
- without advancing — autopilot will skip and surface the blocker.
224
+ When autopilot is the active driver, it never asks; use evidence and the least
225
+ irreversible sound choice. Only contradictory state that Part III identifies as
226
+ a hard halt blocks advancement.
266
227
 
267
228
  ### Phase 4.6: UI surface fallback (runs when ux-ui-design is installed)
268
229