arcane-cli 1.7.0 → 1.8.0
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.
- package/dist/assets/.arcane/governance/spell-authoring-standards.md +32 -0
- package/dist/assets/.arcane/spells/_fragments/needs-you.md +14 -0
- package/dist/assets/.arcane/spells/spell-address-review.md +18 -0
- package/dist/assets/.arcane/spells/spell-adopt-docs.md +17 -0
- package/dist/assets/.arcane/spells/spell-architect.md +17 -0
- package/dist/assets/.arcane/spells/spell-close-session.md +19 -1
- package/dist/assets/.arcane/spells/spell-commit-work.md +17 -0
- package/dist/assets/.arcane/spells/spell-create-pull-request.md +17 -0
- package/dist/assets/.arcane/spells/spell-eas-store-deploy.md +23 -0
- package/dist/assets/.arcane/spells/spell-full-cycle.md +18 -0
- package/dist/assets/.arcane/spells/spell-make-discoverable.md +17 -0
- package/dist/assets/.arcane/spells/spell-open-session.md +18 -0
- package/dist/assets/.arcane/spells/spell-plan.md +17 -0
- package/dist/assets/.arcane/spells/spell-review-batch.md +17 -0
- package/dist/assets/.arcane/spells/spell-review.md +18 -1
- package/dist/assets/.arcane/spells/spell-scope.md +17 -0
- package/dist/assets/.arcane/spells/spell-ship.md +17 -0
- package/dist/assets/.arcane/spells/spell-sync-pull-request.md +18 -0
- package/dist/assets/ai-context/system-prompt-context.md +1 -0
- package/package.json +1 -1
|
@@ -213,6 +213,38 @@ Arcane's own repository, a test (`test/up02-d-runtime-placeholders.test.ts`) fai
|
|
|
213
213
|
`status: active` governance document uses a token that is not in this list. Whether an agent actually
|
|
214
214
|
resolves a listed token from the named source is explicitly advisory prose: no check exercises it.**
|
|
215
215
|
|
|
216
|
+
## Required operator actions: the `Needs you` block
|
|
217
|
+
|
|
218
|
+
Some runs end with an action only the operator can take: approving or merging a pull request,
|
|
219
|
+
accepting a decision record, answering a question the work is waiting on, confirming a `guarded`
|
|
220
|
+
push, running an interactive command such as `spell unblock-push`, or a step on an external platform
|
|
221
|
+
the agent cannot reach. Listed among optional next steps, such an action gets skimmed past. A spell
|
|
222
|
+
whose output can carry one reports it in one fixed block instead:
|
|
223
|
+
|
|
224
|
+
- **One fixed heading,** `## ⚠ Needs you`, at the very top of the final report, before every other
|
|
225
|
+
section and before any optional next step.
|
|
226
|
+
- **One line per action:** exactly what to do, then why the agent cannot do it itself.
|
|
227
|
+
- **Never only among optional steps:** an action required for correctness may be repeated under next
|
|
228
|
+
steps or suggestions, but it always appears in the block.
|
|
229
|
+
- **Omitted when empty:** when nothing needs the operator, the block is left out entirely, never
|
|
230
|
+
printed as an empty heading or a "None" line.
|
|
231
|
+
|
|
232
|
+
The block's wording lives in one shared prose fragment (ARC-039), `needs-you`, kept in Arcane's
|
|
233
|
+
source under `.arcane/spells/_fragments/` and never shipped on its own. A spell carries it as a
|
|
234
|
+
`<!-- fragment:needs-you:start -->` / `<!-- fragment:needs-you:end -->` marker pair placed where the
|
|
235
|
+
spell describes its final output or report, and `npm run fix:self-host-parity` expands the fragment
|
|
236
|
+
between the markers. Edit the fragment, never an expanded copy, and never restate its rules by hand
|
|
237
|
+
in a spell body. Required actions also survive the end of a session: `spell-close-session` writes
|
|
238
|
+
the open items into the handoff's `Needs you` field, and `spell-open-session` surfaces that field
|
|
239
|
+
first, above the rest of the handoff, and does not mark the handoff consumed until it has.
|
|
240
|
+
|
|
241
|
+
**Enforcement: executable check (ARC-023) for the wording — in Arcane's own repository,
|
|
242
|
+
`npm run check:self-host-parity` fails CI when a spell's expanded span differs from the fragment, and
|
|
243
|
+
a test (`test/up04-b-needs-you.test.ts`) fails when the fragment loses its heading, placement or
|
|
244
|
+
omit-when-empty rule, or when a spell in the chosen set loses its span. Which spells carry the span
|
|
245
|
+
is decided by an author's judgment, and whether an agent actually emits the block is explicitly
|
|
246
|
+
advisory prose: no check reads a spell's output.**
|
|
247
|
+
|
|
216
248
|
## How to audit a spell
|
|
217
249
|
|
|
218
250
|
For each dimension, score Bronze/Silver/Gold with one line of evidence. Record the overall (weakest)
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
**Needs you — required operator actions.** When this run leaves an action that only the operator can take, and the work is not correct or complete until it is taken, report it in one block at the very top of the final report, before every other section and before any optional next step:
|
|
2
|
+
|
|
3
|
+
```markdown
|
|
4
|
+
## ⚠ Needs you
|
|
5
|
+
|
|
6
|
+
- <exactly what to do: the command, the link, or the question> — <why the agent cannot do it itself>
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
- **What belongs in it:** an action the work needs that only the operator can take — approving or merging a pull request, accepting a decision record, answering a question the work is waiting on, confirming a `guarded` push, running an interactive command such as `spell unblock-push`, or a step on an external platform the agent cannot reach. An optional suggestion, a next spell to run, or anything the agent could do itself is not a required action and stays out of the block.
|
|
10
|
+
- **One line per action.** Say exactly what to do, then, after the dash, why the agent cannot do it. Write the command, link or question out in full; never point elsewhere with "see above".
|
|
11
|
+
- **Never only among optional steps.** An action required for correctness is never listed only under next steps, suggestions, `Carry Forward` or `What's Next?`. It may be repeated there, but it always appears in this block.
|
|
12
|
+
- **Omit it when empty.** When nothing needs the operator, leave the block out entirely: no heading and no "None" line.
|
|
13
|
+
- **Every final report.** The block belongs in whatever report ends the run, including a report written when the spell stops early.
|
|
14
|
+
- Enforcement: explicitly advisory prose (ARC-023) — no check reads a spell's actual output for this block; it holds by these instructions alone.
|
|
@@ -114,6 +114,24 @@ Resolve threads via the provider:
|
|
|
114
114
|
|
|
115
115
|
3. `git push` all commits.
|
|
116
116
|
4. Print a summary table of actions taken (category, file, action, commit), thread status (resolved / deferred-with-TODO / needs manual resolution), commits pushed, and next steps (CI, notify reviewer, ready for re-review).
|
|
117
|
+
|
|
118
|
+
<!-- fragment:needs-you:start -->
|
|
119
|
+
**Needs you — required operator actions.** When this run leaves an action that only the operator can take, and the work is not correct or complete until it is taken, report it in one block at the very top of the final report, before every other section and before any optional next step:
|
|
120
|
+
|
|
121
|
+
```markdown
|
|
122
|
+
## ⚠ Needs you
|
|
123
|
+
|
|
124
|
+
- <exactly what to do: the command, the link, or the question> — <why the agent cannot do it itself>
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
- **What belongs in it:** an action the work needs that only the operator can take — approving or merging a pull request, accepting a decision record, answering a question the work is waiting on, confirming a `guarded` push, running an interactive command such as `spell unblock-push`, or a step on an external platform the agent cannot reach. An optional suggestion, a next spell to run, or anything the agent could do itself is not a required action and stays out of the block.
|
|
128
|
+
- **One line per action.** Say exactly what to do, then, after the dash, why the agent cannot do it. Write the command, link or question out in full; never point elsewhere with "see above".
|
|
129
|
+
- **Never only among optional steps.** An action required for correctness is never listed only under next steps, suggestions, `Carry Forward` or `What's Next?`. It may be repeated there, but it always appears in this block.
|
|
130
|
+
- **Omit it when empty.** When nothing needs the operator, leave the block out entirely: no heading and no "None" line.
|
|
131
|
+
- **Every final report.** The block belongs in whatever report ends the run, including a report written when the spell stops early.
|
|
132
|
+
- Enforcement: explicitly advisory prose (ARC-023) — no check reads a spell's actual output for this block; it holds by these instructions alone.
|
|
133
|
+
<!-- fragment:needs-you:end -->
|
|
134
|
+
|
|
117
135
|
5. Optionally post the summary back to the PR as a top-level comment for a durable record.
|
|
118
136
|
|
|
119
137
|
## Rules
|
|
@@ -134,6 +134,23 @@ Hard rules for this phase:
|
|
|
134
134
|
|
|
135
135
|
## Phase 4 — Report
|
|
136
136
|
|
|
137
|
+
<!-- fragment:needs-you:start -->
|
|
138
|
+
**Needs you — required operator actions.** When this run leaves an action that only the operator can take, and the work is not correct or complete until it is taken, report it in one block at the very top of the final report, before every other section and before any optional next step:
|
|
139
|
+
|
|
140
|
+
```markdown
|
|
141
|
+
## ⚠ Needs you
|
|
142
|
+
|
|
143
|
+
- <exactly what to do: the command, the link, or the question> — <why the agent cannot do it itself>
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
- **What belongs in it:** an action the work needs that only the operator can take — approving or merging a pull request, accepting a decision record, answering a question the work is waiting on, confirming a `guarded` push, running an interactive command such as `spell unblock-push`, or a step on an external platform the agent cannot reach. An optional suggestion, a next spell to run, or anything the agent could do itself is not a required action and stays out of the block.
|
|
147
|
+
- **One line per action.** Say exactly what to do, then, after the dash, why the agent cannot do it. Write the command, link or question out in full; never point elsewhere with "see above".
|
|
148
|
+
- **Never only among optional steps.** An action required for correctness is never listed only under next steps, suggestions, `Carry Forward` or `What's Next?`. It may be repeated there, but it always appears in this block.
|
|
149
|
+
- **Omit it when empty.** When nothing needs the operator, leave the block out entirely: no heading and no "None" line.
|
|
150
|
+
- **Every final report.** The block belongs in whatever report ends the run, including a report written when the spell stops early.
|
|
151
|
+
- Enforcement: explicitly advisory prose (ARC-023) — no check reads a spell's actual output for this block; it holds by these instructions alone.
|
|
152
|
+
<!-- fragment:needs-you:end -->
|
|
153
|
+
|
|
137
154
|
Output:
|
|
138
155
|
|
|
139
156
|
```
|
|
@@ -110,6 +110,23 @@ Workflow:
|
|
|
110
110
|
|
|
111
111
|
8. **Present for review** — show the architecture and story breakdown to the user.
|
|
112
112
|
|
|
113
|
+
<!-- fragment:needs-you:start -->
|
|
114
|
+
**Needs you — required operator actions.** When this run leaves an action that only the operator can take, and the work is not correct or complete until it is taken, report it in one block at the very top of the final report, before every other section and before any optional next step:
|
|
115
|
+
|
|
116
|
+
```markdown
|
|
117
|
+
## ⚠ Needs you
|
|
118
|
+
|
|
119
|
+
- <exactly what to do: the command, the link, or the question> — <why the agent cannot do it itself>
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
- **What belongs in it:** an action the work needs that only the operator can take — approving or merging a pull request, accepting a decision record, answering a question the work is waiting on, confirming a `guarded` push, running an interactive command such as `spell unblock-push`, or a step on an external platform the agent cannot reach. An optional suggestion, a next spell to run, or anything the agent could do itself is not a required action and stays out of the block.
|
|
123
|
+
- **One line per action.** Say exactly what to do, then, after the dash, why the agent cannot do it. Write the command, link or question out in full; never point elsewhere with "see above".
|
|
124
|
+
- **Never only among optional steps.** An action required for correctness is never listed only under next steps, suggestions, `Carry Forward` or `What's Next?`. It may be repeated there, but it always appears in this block.
|
|
125
|
+
- **Omit it when empty.** When nothing needs the operator, leave the block out entirely: no heading and no "None" line.
|
|
126
|
+
- **Every final report.** The block belongs in whatever report ends the run, including a report written when the spell stops early.
|
|
127
|
+
- Enforcement: explicitly advisory prose (ARC-023) — no check reads a spell's actual output for this block; it holds by these instructions alone.
|
|
128
|
+
<!-- fragment:needs-you:end -->
|
|
129
|
+
|
|
113
130
|
Rules:
|
|
114
131
|
- Stories must be right-sized per the methodology doc (not "build the entire dashboard").
|
|
115
132
|
- Architecture decisions must reference existing ADRs when relevant.
|
|
@@ -120,6 +120,7 @@ In `ai-context/system-prompt-context.md`, replace the existing `## Next Session
|
|
|
120
120
|
- **Branch:** Output of `git branch --show-current`.
|
|
121
121
|
- **Blockers:** Known unresolved blockers or dependencies. Write "None" if clear.
|
|
122
122
|
- **Pending Verification:** One line per non-`succeeded` item from step 1b: `<what> — <state> — <verification action>`. States: `dispatched`, `pending`, `failed`, `unverifiable` (never list a `succeeded` item here — it belongs in `Last completed step` / TODO.md / the journal instead, worded per the gating above). The verification action is required for `dispatched`, `pending`, and `unverifiable` — "N/A" is only valid for `failed`, where the state is already resolved and there is nothing left to check. Write "None" only if step 1b found every dispatched item resolved to `succeeded` or `failed` before this handoff was written.
|
|
123
|
+
- **Needs you:** One line per action only the operator can take that this session leaves open: `<what to do> — <why the agent cannot do it>`. This block is committed before steps 9–10 run, so write it with them in view and name now the actions they will leave open: the pull request step 9c opens needs a human merge, and when `push_policy` (read it now, per step 9c's push-policy check) is `blocked`, or `guarded` in an autonomous run, the push itself waits on the operator. The closure report's `## ⚠ Needs you` block (step 11) lists the same items, plus any that arose after this handoff was committed. Write "None" when nothing needs the operator. Never leave such an action only in `Blockers`, `Notes` or `Carry Forward`; it may be repeated there, but it always appears here.
|
|
123
124
|
- **Notes:** Anything time-sensitive, fragile, or contextual that would be lost if not stated explicitly. Never the sole carrier of durable content (session handoff durability) — if it names unfinished work, that work must also be registered per step 4b; name its location here.
|
|
124
125
|
```
|
|
125
126
|
|
|
@@ -175,7 +176,7 @@ Rules:
|
|
|
175
176
|
- Timeout, cancellation, fallback, or delegated response is not approval. Print the visible authorization downgrade and halt without committing.
|
|
176
177
|
|
|
177
178
|
c. **Push and open a PR through `spell-commit-work` step 9, including its separate merge gate:**
|
|
178
|
-
- Run the push-policy check before the push. `spell-commit-work` step 9a runs the same check; run it once per push, not twice. It also governs step 10's remote branch deletions. If it stops the push, end the session with the commits local and report them in the PR Readiness section as not pushed.
|
|
179
|
+
- Run the push-policy check before the push. `spell-commit-work` step 9a runs the same check; run it once per push, not twice. It also governs step 10's remote branch deletions. If it stops the push, end the session with the commits local and report them in the PR Readiness section as not pushed, and in the step 11 report's `## ⚠ Needs you` block.
|
|
179
180
|
|
|
180
181
|
<!-- fragment:push-policy-check:start -->
|
|
181
182
|
**Push-policy check (ARC-049) — before any push.** Read `push_policy` from the repository's `.arcane.json` at the repository root (a self-hosted source repository with no root manifest keeps it in `src/assets/.arcane.json` when that file declares `selfHosted: true`). An absent file or an absent field means `open`. The check covers every push this spell makes: a branch push, a `--force-with-lease` push, and a remote branch deletion (`git push <remote> --delete <branch>`).
|
|
@@ -225,6 +226,23 @@ Rules:
|
|
|
225
226
|
|
|
226
227
|
Output format:
|
|
227
228
|
|
|
229
|
+
<!-- fragment:needs-you:start -->
|
|
230
|
+
**Needs you — required operator actions.** When this run leaves an action that only the operator can take, and the work is not correct or complete until it is taken, report it in one block at the very top of the final report, before every other section and before any optional next step:
|
|
231
|
+
|
|
232
|
+
```markdown
|
|
233
|
+
## ⚠ Needs you
|
|
234
|
+
|
|
235
|
+
- <exactly what to do: the command, the link, or the question> — <why the agent cannot do it itself>
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
- **What belongs in it:** an action the work needs that only the operator can take — approving or merging a pull request, accepting a decision record, answering a question the work is waiting on, confirming a `guarded` push, running an interactive command such as `spell unblock-push`, or a step on an external platform the agent cannot reach. An optional suggestion, a next spell to run, or anything the agent could do itself is not a required action and stays out of the block.
|
|
239
|
+
- **One line per action.** Say exactly what to do, then, after the dash, why the agent cannot do it. Write the command, link or question out in full; never point elsewhere with "see above".
|
|
240
|
+
- **Never only among optional steps.** An action required for correctness is never listed only under next steps, suggestions, `Carry Forward` or `What's Next?`. It may be repeated there, but it always appears in this block.
|
|
241
|
+
- **Omit it when empty.** When nothing needs the operator, leave the block out entirely: no heading and no "None" line.
|
|
242
|
+
- **Every final report.** The block belongs in whatever report ends the run, including a report written when the spell stops early.
|
|
243
|
+
- Enforcement: explicitly advisory prose (ARC-023) — no check reads a spell's actual output for this block; it holds by these instructions alone.
|
|
244
|
+
<!-- fragment:needs-you:end -->
|
|
245
|
+
|
|
228
246
|
## Session Closure
|
|
229
247
|
|
|
230
248
|
- Summary of what was completed.
|
|
@@ -256,6 +256,23 @@ Workflow:
|
|
|
256
256
|
|
|
257
257
|
Output format after execution:
|
|
258
258
|
|
|
259
|
+
<!-- fragment:needs-you:start -->
|
|
260
|
+
**Needs you — required operator actions.** When this run leaves an action that only the operator can take, and the work is not correct or complete until it is taken, report it in one block at the very top of the final report, before every other section and before any optional next step:
|
|
261
|
+
|
|
262
|
+
```markdown
|
|
263
|
+
## ⚠ Needs you
|
|
264
|
+
|
|
265
|
+
- <exactly what to do: the command, the link, or the question> — <why the agent cannot do it itself>
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
- **What belongs in it:** an action the work needs that only the operator can take — approving or merging a pull request, accepting a decision record, answering a question the work is waiting on, confirming a `guarded` push, running an interactive command such as `spell unblock-push`, or a step on an external platform the agent cannot reach. An optional suggestion, a next spell to run, or anything the agent could do itself is not a required action and stays out of the block.
|
|
269
|
+
- **One line per action.** Say exactly what to do, then, after the dash, why the agent cannot do it. Write the command, link or question out in full; never point elsewhere with "see above".
|
|
270
|
+
- **Never only among optional steps.** An action required for correctness is never listed only under next steps, suggestions, `Carry Forward` or `What's Next?`. It may be repeated there, but it always appears in this block.
|
|
271
|
+
- **Omit it when empty.** When nothing needs the operator, leave the block out entirely: no heading and no "None" line.
|
|
272
|
+
- **Every final report.** The block belongs in whatever report ends the run, including a report written when the spell stops early.
|
|
273
|
+
- Enforcement: explicitly advisory prose (ARC-023) — no check reads a spell's actual output for this block; it holds by these instructions alone.
|
|
274
|
+
<!-- fragment:needs-you:end -->
|
|
275
|
+
|
|
259
276
|
## Commit Complete
|
|
260
277
|
|
|
261
278
|
```
|
|
@@ -200,6 +200,23 @@ so they need no edit.
|
|
|
200
200
|
|
|
201
201
|
## Step 6 — Report
|
|
202
202
|
|
|
203
|
+
<!-- fragment:needs-you:start -->
|
|
204
|
+
**Needs you — required operator actions.** When this run leaves an action that only the operator can take, and the work is not correct or complete until it is taken, report it in one block at the very top of the final report, before every other section and before any optional next step:
|
|
205
|
+
|
|
206
|
+
```markdown
|
|
207
|
+
## ⚠ Needs you
|
|
208
|
+
|
|
209
|
+
- <exactly what to do: the command, the link, or the question> — <why the agent cannot do it itself>
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
- **What belongs in it:** an action the work needs that only the operator can take — approving or merging a pull request, accepting a decision record, answering a question the work is waiting on, confirming a `guarded` push, running an interactive command such as `spell unblock-push`, or a step on an external platform the agent cannot reach. An optional suggestion, a next spell to run, or anything the agent could do itself is not a required action and stays out of the block.
|
|
213
|
+
- **One line per action.** Say exactly what to do, then, after the dash, why the agent cannot do it. Write the command, link or question out in full; never point elsewhere with "see above".
|
|
214
|
+
- **Never only among optional steps.** An action required for correctness is never listed only under next steps, suggestions, `Carry Forward` or `What's Next?`. It may be repeated there, but it always appears in this block.
|
|
215
|
+
- **Omit it when empty.** When nothing needs the operator, leave the block out entirely: no heading and no "None" line.
|
|
216
|
+
- **Every final report.** The block belongs in whatever report ends the run, including a report written when the spell stops early.
|
|
217
|
+
- Enforcement: explicitly advisory prose (ARC-023) — no check reads a spell's actual output for this block; it holds by these instructions alone.
|
|
218
|
+
<!-- fragment:needs-you:end -->
|
|
219
|
+
|
|
203
220
|
```
|
|
204
221
|
✓ PR created: <URL>
|
|
205
222
|
Title: <title>
|
|
@@ -234,6 +234,29 @@ console error stating otherwise (`EV-06`).
|
|
|
234
234
|
- **Locale lists differ between the stores.** Release notes are per-language; resolve locale coverage
|
|
235
235
|
against each store's own catalogue rather than copying the other store's list (`MR-06`).
|
|
236
236
|
|
|
237
|
+
### Reporting the release
|
|
238
|
+
|
|
239
|
+
End every release run with a short report. The store-console steps the agent cannot reach — sending
|
|
240
|
+
staged Google Play changes for review, answering an App Store review question, confirming a manual
|
|
241
|
+
release — are required operator actions:
|
|
242
|
+
|
|
243
|
+
<!-- fragment:needs-you:start -->
|
|
244
|
+
**Needs you — required operator actions.** When this run leaves an action that only the operator can take, and the work is not correct or complete until it is taken, report it in one block at the very top of the final report, before every other section and before any optional next step:
|
|
245
|
+
|
|
246
|
+
```markdown
|
|
247
|
+
## ⚠ Needs you
|
|
248
|
+
|
|
249
|
+
- <exactly what to do: the command, the link, or the question> — <why the agent cannot do it itself>
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
- **What belongs in it:** an action the work needs that only the operator can take — approving or merging a pull request, accepting a decision record, answering a question the work is waiting on, confirming a `guarded` push, running an interactive command such as `spell unblock-push`, or a step on an external platform the agent cannot reach. An optional suggestion, a next spell to run, or anything the agent could do itself is not a required action and stays out of the block.
|
|
253
|
+
- **One line per action.** Say exactly what to do, then, after the dash, why the agent cannot do it. Write the command, link or question out in full; never point elsewhere with "see above".
|
|
254
|
+
- **Never only among optional steps.** An action required for correctness is never listed only under next steps, suggestions, `Carry Forward` or `What's Next?`. It may be repeated there, but it always appears in this block.
|
|
255
|
+
- **Omit it when empty.** When nothing needs the operator, leave the block out entirely: no heading and no "None" line.
|
|
256
|
+
- **Every final report.** The block belongs in whatever report ends the run, including a report written when the spell stops early.
|
|
257
|
+
- Enforcement: explicitly advisory prose (ARC-023) — no check reads a spell's actual output for this block; it holds by these instructions alone.
|
|
258
|
+
<!-- fragment:needs-you:end -->
|
|
259
|
+
|
|
237
260
|
---
|
|
238
261
|
|
|
239
262
|
## Rules
|
|
@@ -184,6 +184,24 @@ Execute the `spell-ship` workflow:
|
|
|
184
184
|
applies (state "Nothing withheld" in that case). Fold it into the consumer repo's own QA checklist
|
|
185
185
|
so a human reviewer sees exactly what still needs a human look, not just what passed (2026-07-22
|
|
186
186
|
dogfooding finding: honest disclosure of sandbox limits, not just of failures).
|
|
187
|
+
|
|
188
|
+
<!-- fragment:needs-you:start -->
|
|
189
|
+
**Needs you — required operator actions.** When this run leaves an action that only the operator can take, and the work is not correct or complete until it is taken, report it in one block at the very top of the final report, before every other section and before any optional next step:
|
|
190
|
+
|
|
191
|
+
```markdown
|
|
192
|
+
## ⚠ Needs you
|
|
193
|
+
|
|
194
|
+
- <exactly what to do: the command, the link, or the question> — <why the agent cannot do it itself>
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
- **What belongs in it:** an action the work needs that only the operator can take — approving or merging a pull request, accepting a decision record, answering a question the work is waiting on, confirming a `guarded` push, running an interactive command such as `spell unblock-push`, or a step on an external platform the agent cannot reach. An optional suggestion, a next spell to run, or anything the agent could do itself is not a required action and stays out of the block.
|
|
198
|
+
- **One line per action.** Say exactly what to do, then, after the dash, why the agent cannot do it. Write the command, link or question out in full; never point elsewhere with "see above".
|
|
199
|
+
- **Never only among optional steps.** An action required for correctness is never listed only under next steps, suggestions, `Carry Forward` or `What's Next?`. It may be repeated there, but it always appears in this block.
|
|
200
|
+
- **Omit it when empty.** When nothing needs the operator, leave the block out entirely: no heading and no "None" line.
|
|
201
|
+
- **Every final report.** The block belongs in whatever report ends the run, including a report written when the spell stops early.
|
|
202
|
+
- Enforcement: explicitly advisory prose (ARC-023) — no check reads a spell's actual output for this block; it holds by these instructions alone.
|
|
203
|
+
<!-- fragment:needs-you:end -->
|
|
204
|
+
|
|
187
205
|
4. Create the PR:
|
|
188
206
|
- `external/ado` mode: `az repos pr create --repository {repo} --source-branch {branch} --target-branch main --title "{feature}" --work-items {adoWorkItemId}`
|
|
189
207
|
- `internal` mode (or provider TODO mode): create PR without `--work-items`.
|
|
@@ -250,6 +250,23 @@ just because nothing threw an error.
|
|
|
250
250
|
|
|
251
251
|
## Phase 6 — Report
|
|
252
252
|
|
|
253
|
+
<!-- fragment:needs-you:start -->
|
|
254
|
+
**Needs you — required operator actions.** When this run leaves an action that only the operator can take, and the work is not correct or complete until it is taken, report it in one block at the very top of the final report, before every other section and before any optional next step:
|
|
255
|
+
|
|
256
|
+
```markdown
|
|
257
|
+
## ⚠ Needs you
|
|
258
|
+
|
|
259
|
+
- <exactly what to do: the command, the link, or the question> — <why the agent cannot do it itself>
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
- **What belongs in it:** an action the work needs that only the operator can take — approving or merging a pull request, accepting a decision record, answering a question the work is waiting on, confirming a `guarded` push, running an interactive command such as `spell unblock-push`, or a step on an external platform the agent cannot reach. An optional suggestion, a next spell to run, or anything the agent could do itself is not a required action and stays out of the block.
|
|
263
|
+
- **One line per action.** Say exactly what to do, then, after the dash, why the agent cannot do it. Write the command, link or question out in full; never point elsewhere with "see above".
|
|
264
|
+
- **Never only among optional steps.** An action required for correctness is never listed only under next steps, suggestions, `Carry Forward` or `What's Next?`. It may be repeated there, but it always appears in this block.
|
|
265
|
+
- **Omit it when empty.** When nothing needs the operator, leave the block out entirely: no heading and no "None" line.
|
|
266
|
+
- **Every final report.** The block belongs in whatever report ends the run, including a report written when the spell stops early.
|
|
267
|
+
- Enforcement: explicitly advisory prose (ARC-023) — no check reads a spell's actual output for this block; it holds by these instructions alone.
|
|
268
|
+
<!-- fragment:needs-you:end -->
|
|
269
|
+
|
|
253
270
|
Summarize what changed, what's still open, and close with a plain-language,
|
|
254
271
|
user-verifiable acceptance checklist:
|
|
255
272
|
|
|
@@ -36,6 +36,7 @@ Use these files first:
|
|
|
36
36
|
Check `ai-context/system-prompt-context.md` for a `## Next Session Handoff` section.
|
|
37
37
|
|
|
38
38
|
- If present and **not yet marked consumed** (no `> ✓ Consumed:` line): surface it immediately as `## Picking Up From Last Session` at the very top of your output, before all other sections — include `Last completed step`, `Blockers`, and `Notes` verbatim alongside the rest (session handoff durability: these three are written by close-session but were previously never read back). Use the `Next concrete action` field as the first item in `## Next Session Plan`. Use the `Active task`, `Active files`, and `Branch` fields to pre-populate the State Snapshot.
|
|
39
|
+
- **The handoff's `Needs you` field comes first.** If it lists anything other than "None", surface every item in the `## ⚠ Needs you` block (see the output structure below) **above** `## Picking Up From Last Session`, the one exception to "before all other sections" in the bullet above. Where you can check an item (a pull request's merge state, whether a branch was pushed), check it: an item the operator has already done leaves the block and is noted as done under `## Picking Up From Last Session` (that counts as surfaced); keep every item you cannot check. A handoff written before this field existed has no `Needs you` line; treat it as "None". Do not mark the handoff consumed until every listed item has been surfaced: a handoff whose `Needs you` items were not surfaced stays unconsumed, so the next open-session surfaces them again.
|
|
39
40
|
- **If the handoff's `Pending Verification` field lists anything other than "None" (EF-21):** surface each listed item explicitly, then actively re-check its current status (per the item's stated verification action) rather than treating the state recorded at close-session time as still current — a `dispatched`/`pending` item may have since succeeded, failed, or still be running, and carrying it forward as inert text would repeat the exact failure mode this field exists to prevent. Report what you found (resolved succeeded / resolved failed / still pending / still unverifiable) before relying on anything downstream that depended on it.
|
|
40
41
|
- After surfacing it, apply the Mutation Guard below, then run the **Durability check** (session handoff durability, ARC-040): confirm that an incomplete `Active task`, the `Next concrete action`, and any task-bearing `Notes` content each name a durable location that genuinely exists (the cited `TODO.md` item — by stable locator, not a line number that may have already drifted — or tracker work item). If a named location is missing, or close-session's own step 4b was skipped when it shouldn't have been, register the missing content now — on this session's own branch — before proceeding. Only then append `> ✓ Consumed: YYYY-MM-DD` (today's date); the marker write is a repository mutation. If the Durability check cannot complete, leave the handoff unconsumed so the next open-session retries the same check idempotently, rather than silently losing the gap.
|
|
41
42
|
- If the section is absent or already marked consumed: skip this step and proceed with the normal workspace scan.
|
|
@@ -67,6 +68,23 @@ Run the `spell-check-drift` spell first, before building the state snapshot or g
|
|
|
67
68
|
|
|
68
69
|
Then produce output in this exact structure:
|
|
69
70
|
|
|
71
|
+
<!-- fragment:needs-you:start -->
|
|
72
|
+
**Needs you — required operator actions.** When this run leaves an action that only the operator can take, and the work is not correct or complete until it is taken, report it in one block at the very top of the final report, before every other section and before any optional next step:
|
|
73
|
+
|
|
74
|
+
```markdown
|
|
75
|
+
## ⚠ Needs you
|
|
76
|
+
|
|
77
|
+
- <exactly what to do: the command, the link, or the question> — <why the agent cannot do it itself>
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
- **What belongs in it:** an action the work needs that only the operator can take — approving or merging a pull request, accepting a decision record, answering a question the work is waiting on, confirming a `guarded` push, running an interactive command such as `spell unblock-push`, or a step on an external platform the agent cannot reach. An optional suggestion, a next spell to run, or anything the agent could do itself is not a required action and stays out of the block.
|
|
81
|
+
- **One line per action.** Say exactly what to do, then, after the dash, why the agent cannot do it. Write the command, link or question out in full; never point elsewhere with "see above".
|
|
82
|
+
- **Never only among optional steps.** An action required for correctness is never listed only under next steps, suggestions, `Carry Forward` or `What's Next?`. It may be repeated there, but it always appears in this block.
|
|
83
|
+
- **Omit it when empty.** When nothing needs the operator, leave the block out entirely: no heading and no "None" line.
|
|
84
|
+
- **Every final report.** The block belongs in whatever report ends the run, including a report written when the spell stops early.
|
|
85
|
+
- Enforcement: explicitly advisory prose (ARC-023) — no check reads a spell's actual output for this block; it holds by these instructions alone.
|
|
86
|
+
<!-- fragment:needs-you:end -->
|
|
87
|
+
|
|
70
88
|
## Workspace Health Check
|
|
71
89
|
|
|
72
90
|
Before anything else, check:
|
|
@@ -151,6 +151,23 @@ Workflow:
|
|
|
151
151
|
|
|
152
152
|
7. **Present for review** — show the PRD to the user for approval before proceeding to `spell-architect`.
|
|
153
153
|
|
|
154
|
+
<!-- fragment:needs-you:start -->
|
|
155
|
+
**Needs you — required operator actions.** When this run leaves an action that only the operator can take, and the work is not correct or complete until it is taken, report it in one block at the very top of the final report, before every other section and before any optional next step:
|
|
156
|
+
|
|
157
|
+
```markdown
|
|
158
|
+
## ⚠ Needs you
|
|
159
|
+
|
|
160
|
+
- <exactly what to do: the command, the link, or the question> — <why the agent cannot do it itself>
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
- **What belongs in it:** an action the work needs that only the operator can take — approving or merging a pull request, accepting a decision record, answering a question the work is waiting on, confirming a `guarded` push, running an interactive command such as `spell unblock-push`, or a step on an external platform the agent cannot reach. An optional suggestion, a next spell to run, or anything the agent could do itself is not a required action and stays out of the block.
|
|
164
|
+
- **One line per action.** Say exactly what to do, then, after the dash, why the agent cannot do it. Write the command, link or question out in full; never point elsewhere with "see above".
|
|
165
|
+
- **Never only among optional steps.** An action required for correctness is never listed only under next steps, suggestions, `Carry Forward` or `What's Next?`. It may be repeated there, but it always appears in this block.
|
|
166
|
+
- **Omit it when empty.** When nothing needs the operator, leave the block out entirely: no heading and no "None" line.
|
|
167
|
+
- **Every final report.** The block belongs in whatever report ends the run, including a report written when the spell stops early.
|
|
168
|
+
- Enforcement: explicitly advisory prose (ARC-023) — no check reads a spell's actual output for this block; it holds by these instructions alone.
|
|
169
|
+
<!-- fragment:needs-you:end -->
|
|
170
|
+
|
|
154
171
|
8. **Provider TODO handling** — if `external_provider=jira` or `external_provider=other`, add a TODO note in PRD open questions that provider-specific automation/linking is pending. `github` does not need this — it has a real, working flow (Step 1 above).
|
|
155
172
|
|
|
156
173
|
Rules:
|
|
@@ -104,6 +104,23 @@ collide, but a PR title inserted verbatim as a label could).
|
|
|
104
104
|
2. If `--html` was passed, also emit a self-contained HTML file (inline CSS, no external assets) at the same base path so it can be shared by email/chat.
|
|
105
105
|
3. Print a summary to the user: total reviewed / skipped, verdict counts, total findings by severity, the GO/NO-GO gate, and the output path(s).
|
|
106
106
|
|
|
107
|
+
<!-- fragment:needs-you:start -->
|
|
108
|
+
**Needs you — required operator actions.** When this run leaves an action that only the operator can take, and the work is not correct or complete until it is taken, report it in one block at the very top of the final report, before every other section and before any optional next step:
|
|
109
|
+
|
|
110
|
+
```markdown
|
|
111
|
+
## ⚠ Needs you
|
|
112
|
+
|
|
113
|
+
- <exactly what to do: the command, the link, or the question> — <why the agent cannot do it itself>
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
- **What belongs in it:** an action the work needs that only the operator can take — approving or merging a pull request, accepting a decision record, answering a question the work is waiting on, confirming a `guarded` push, running an interactive command such as `spell unblock-push`, or a step on an external platform the agent cannot reach. An optional suggestion, a next spell to run, or anything the agent could do itself is not a required action and stays out of the block.
|
|
117
|
+
- **One line per action.** Say exactly what to do, then, after the dash, why the agent cannot do it. Write the command, link or question out in full; never point elsewhere with "see above".
|
|
118
|
+
- **Never only among optional steps.** An action required for correctness is never listed only under next steps, suggestions, `Carry Forward` or `What's Next?`. It may be repeated there, but it always appears in this block.
|
|
119
|
+
- **Omit it when empty.** When nothing needs the operator, leave the block out entirely: no heading and no "None" line.
|
|
120
|
+
- **Every final report.** The block belongs in whatever report ends the run, including a report written when the spell stops early.
|
|
121
|
+
- Enforcement: explicitly advisory prose (ARC-023) — no check reads a spell's actual output for this block; it holds by these instructions alone.
|
|
122
|
+
<!-- fragment:needs-you:end -->
|
|
123
|
+
|
|
107
124
|
## Rules
|
|
108
125
|
|
|
109
126
|
- Reuse the `spell-review` engine per PR — do not invent a parallel, weaker rubric.
|
|
@@ -121,6 +121,23 @@ Workflow:
|
|
|
121
121
|
|
|
122
122
|
8. **Present findings** — show the review to the user with a clear recommendation.
|
|
123
123
|
|
|
124
|
+
<!-- fragment:needs-you:start -->
|
|
125
|
+
**Needs you — required operator actions.** When this run leaves an action that only the operator can take, and the work is not correct or complete until it is taken, report it in one block at the very top of the final report, before every other section and before any optional next step:
|
|
126
|
+
|
|
127
|
+
```markdown
|
|
128
|
+
## ⚠ Needs you
|
|
129
|
+
|
|
130
|
+
- <exactly what to do: the command, the link, or the question> — <why the agent cannot do it itself>
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
- **What belongs in it:** an action the work needs that only the operator can take — approving or merging a pull request, accepting a decision record, answering a question the work is waiting on, confirming a `guarded` push, running an interactive command such as `spell unblock-push`, or a step on an external platform the agent cannot reach. An optional suggestion, a next spell to run, or anything the agent could do itself is not a required action and stays out of the block.
|
|
134
|
+
- **One line per action.** Say exactly what to do, then, after the dash, why the agent cannot do it. Write the command, link or question out in full; never point elsewhere with "see above".
|
|
135
|
+
- **Never only among optional steps.** An action required for correctness is never listed only under next steps, suggestions, `Carry Forward` or `What's Next?`. It may be repeated there, but it always appears in this block.
|
|
136
|
+
- **Omit it when empty.** When nothing needs the operator, leave the block out entirely: no heading and no "None" line.
|
|
137
|
+
- **Every final report.** The block belongs in whatever report ends the run, including a report written when the spell stops early.
|
|
138
|
+
- Enforcement: explicitly advisory prose (ARC-023) — no check reads a spell's actual output for this block; it holds by these instructions alone.
|
|
139
|
+
<!-- fragment:needs-you:end -->
|
|
140
|
+
|
|
124
141
|
9. **Write back to the pull request** — when a PR exists for these changes, sync a short verdict plus a findings summary (verdict + finding counts/IDs + a pointer to the saved report) into the PR body/description. Use provider-agnostic phrasing that works for either GitHub or Azure DevOps. Mark it clearly as a snapshot at review time, and fall back to a top-level PR comment if the description can't be updated.
|
|
125
142
|
|
|
126
143
|
10. **Post the formal round state** (ARC-035 decision 3 — Arcane's own framework decision, cited as plain text, not linked, since this file ships; see `agent-output.instructions.md` → Doc-ID Link Format) — step 9's write-back is a human-readable summary; this is the separate, machine-readable signal the `Review round clear` required check actually reads. Only a confirmed blocker posts a formal review — an `APPROVE` or `DEFER` verdict posts nothing here, preserving the zero-friction path for PRs nobody formally blocks:
|
|
@@ -131,7 +148,7 @@ Workflow:
|
|
|
131
148
|
- GitHub: find the blocking review's ID (`gh api repos/{owner}/{repo}/pulls/<n>/reviews --jq '.[] | select(.state=="CHANGES_REQUESTED") | .id'`), then dismiss it — `gh api -X PUT repos/{owner}/{repo}/pulls/<n>/reviews/<review_id>/dismissals -f event=DISMISS -f message="<why this is now resolved, referencing the fix commit>"`.
|
|
132
149
|
- Azure DevOps: `az repos pr set-vote --id <n> --vote approve` (or reset to no-vote per team convention).
|
|
133
150
|
- Degrade silently if the CLI is unauthenticated or the PR can't be resolved (e.g. no PR exists yet for a local-only review) — never let this step abort a review that otherwise completed; the findings, report, and step 9 write-back still stand on their own.
|
|
134
|
-
- **GitHub refuses a REQUEST CHANGES verdict from the PR's own author** (`GraphQL: Review Can not request changes on your own pull request`, verified live 2026-08-31 — the same restriction as self-approval, just previously untested). When you are reviewing your own authored PR under the same GitHub identity, this call will fail with exactly that error: treat it as expected, not a bug, and fall back to the step 9 write-back as the only signal available — a formal blocking review needs a genuinely distinct reviewer identity (a second collaborator, or a separate bot/service account).
|
|
151
|
+
- **GitHub refuses a REQUEST CHANGES verdict from the PR's own author** (`GraphQL: Review Can not request changes on your own pull request`, verified live 2026-08-31 — the same restriction as self-approval, just previously untested). When you are reviewing your own authored PR under the same GitHub identity, this call will fail with exactly that error: treat it as expected, not a bug, and fall back to the step 9 write-back as the only signal available — a formal blocking review needs a genuinely distinct reviewer identity (a second collaborator, or a separate bot/service account). Because this happens after step 8, finish by telling the operator in a short `## ⚠ Needs you` block (per step 8): have a distinct reviewer identity post the blocking review — this identity cannot block its own pull request.
|
|
135
152
|
|
|
136
153
|
Rules:
|
|
137
154
|
- **Cover every dimension, not a finding count.** You MUST explicitly address each lens — correctness, security, performance, tests, naming/clarity, architecture — and state "no issues" for any lens that is clean. There is no minimum number of findings: zero findings is a valid outcome on a clean or small diff. The mandate is coverage of effort, not a count of findings — never fabricate issues to hit a quota.
|
|
@@ -249,6 +249,23 @@ If `external_provider=jira` or `external_provider=other`, add explicit TODOs in
|
|
|
249
249
|
|
|
250
250
|
### 9. Present and Confirm
|
|
251
251
|
|
|
252
|
+
<!-- fragment:needs-you:start -->
|
|
253
|
+
**Needs you — required operator actions.** When this run leaves an action that only the operator can take, and the work is not correct or complete until it is taken, report it in one block at the very top of the final report, before every other section and before any optional next step:
|
|
254
|
+
|
|
255
|
+
```markdown
|
|
256
|
+
## ⚠ Needs you
|
|
257
|
+
|
|
258
|
+
- <exactly what to do: the command, the link, or the question> — <why the agent cannot do it itself>
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
- **What belongs in it:** an action the work needs that only the operator can take — approving or merging a pull request, accepting a decision record, answering a question the work is waiting on, confirming a `guarded` push, running an interactive command such as `spell unblock-push`, or a step on an external platform the agent cannot reach. An optional suggestion, a next spell to run, or anything the agent could do itself is not a required action and stays out of the block.
|
|
262
|
+
- **One line per action.** Say exactly what to do, then, after the dash, why the agent cannot do it. Write the command, link or question out in full; never point elsewhere with "see above".
|
|
263
|
+
- **Never only among optional steps.** An action required for correctness is never listed only under next steps, suggestions, `Carry Forward` or `What's Next?`. It may be repeated there, but it always appears in this block.
|
|
264
|
+
- **Omit it when empty.** When nothing needs the operator, leave the block out entirely: no heading and no "None" line.
|
|
265
|
+
- **Every final report.** The block belongs in whatever report ends the run, including a report written when the spell stops early.
|
|
266
|
+
- Enforcement: explicitly advisory prose (ARC-023) — no check reads a spell's actual output for this block; it holds by these instructions alone.
|
|
267
|
+
<!-- fragment:needs-you:end -->
|
|
268
|
+
|
|
252
269
|
Present the execution plan to the user. Ask:
|
|
253
270
|
1. Does the epic split make sense?
|
|
254
271
|
2. Are the ADR candidates correct? Should any be decided now?
|
|
@@ -96,6 +96,23 @@ Workflow:
|
|
|
96
96
|
- OR: BLOCK — [reason]
|
|
97
97
|
```
|
|
98
98
|
|
|
99
|
+
<!-- fragment:needs-you:start -->
|
|
100
|
+
**Needs you — required operator actions.** When this run leaves an action that only the operator can take, and the work is not correct or complete until it is taken, report it in one block at the very top of the final report, before every other section and before any optional next step:
|
|
101
|
+
|
|
102
|
+
```markdown
|
|
103
|
+
## ⚠ Needs you
|
|
104
|
+
|
|
105
|
+
- <exactly what to do: the command, the link, or the question> — <why the agent cannot do it itself>
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
- **What belongs in it:** an action the work needs that only the operator can take — approving or merging a pull request, accepting a decision record, answering a question the work is waiting on, confirming a `guarded` push, running an interactive command such as `spell unblock-push`, or a step on an external platform the agent cannot reach. An optional suggestion, a next spell to run, or anything the agent could do itself is not a required action and stays out of the block.
|
|
109
|
+
- **One line per action.** Say exactly what to do, then, after the dash, why the agent cannot do it. Write the command, link or question out in full; never point elsewhere with "see above".
|
|
110
|
+
- **Never only among optional steps.** An action required for correctness is never listed only under next steps, suggestions, `Carry Forward` or `What's Next?`. It may be repeated there, but it always appears in this block.
|
|
111
|
+
- **Omit it when empty.** When nothing needs the operator, leave the block out entirely: no heading and no "None" line.
|
|
112
|
+
- **Every final report.** The block belongs in whatever report ends the run, including a report written when the spell stops early.
|
|
113
|
+
- Enforcement: explicitly advisory prose (ARC-023) — no check reads a spell's actual output for this block; it holds by these instructions alone.
|
|
114
|
+
<!-- fragment:needs-you:end -->
|
|
115
|
+
|
|
99
116
|
7. **Request human approval** — present the ship report and wait for explicit approval.
|
|
100
117
|
|
|
101
118
|
8. **Execute merge** (after approval):
|
|
@@ -88,6 +88,7 @@ then classify **each conflicted hunk independently** — a single file can conta
|
|
|
88
88
|
that one side's content is a strict superset of the other's. **STOP.** Do not guess, do not pick a
|
|
89
89
|
side, do not attempt a "reasonable-looking" merge of the two. Abort the in-progress rebase/merge
|
|
90
90
|
(`git rebase --abort` / `git merge --abort`) so the branch is left exactly as it was, then report:
|
|
91
|
+
- First, the `## ⚠ Needs you` block described in Step 6, naming the manual resolution as the action.
|
|
91
92
|
- The exact conflicting file(s) and hunk(s).
|
|
92
93
|
- Both sides' conflicting content, verbatim.
|
|
93
94
|
- That the recoverable ref from Step 1 still points at the pre-sync state.
|
|
@@ -149,6 +150,23 @@ report the discrepancy rather than declaring the sync done.
|
|
|
149
150
|
|
|
150
151
|
## Step 6 — Report
|
|
151
152
|
|
|
153
|
+
<!-- fragment:needs-you:start -->
|
|
154
|
+
**Needs you — required operator actions.** When this run leaves an action that only the operator can take, and the work is not correct or complete until it is taken, report it in one block at the very top of the final report, before every other section and before any optional next step:
|
|
155
|
+
|
|
156
|
+
```markdown
|
|
157
|
+
## ⚠ Needs you
|
|
158
|
+
|
|
159
|
+
- <exactly what to do: the command, the link, or the question> — <why the agent cannot do it itself>
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
- **What belongs in it:** an action the work needs that only the operator can take — approving or merging a pull request, accepting a decision record, answering a question the work is waiting on, confirming a `guarded` push, running an interactive command such as `spell unblock-push`, or a step on an external platform the agent cannot reach. An optional suggestion, a next spell to run, or anything the agent could do itself is not a required action and stays out of the block.
|
|
163
|
+
- **One line per action.** Say exactly what to do, then, after the dash, why the agent cannot do it. Write the command, link or question out in full; never point elsewhere with "see above".
|
|
164
|
+
- **Never only among optional steps.** An action required for correctness is never listed only under next steps, suggestions, `Carry Forward` or `What's Next?`. It may be repeated there, but it always appears in this block.
|
|
165
|
+
- **Omit it when empty.** When nothing needs the operator, leave the block out entirely: no heading and no "None" line.
|
|
166
|
+
- **Every final report.** The block belongs in whatever report ends the run, including a report written when the spell stops early.
|
|
167
|
+
- Enforcement: explicitly advisory prose (ARC-023) — no check reads a spell's actual output for this block; it holds by these instructions alone.
|
|
168
|
+
<!-- fragment:needs-you:end -->
|
|
169
|
+
|
|
152
170
|
```
|
|
153
171
|
✓ PR synced: <URL>
|
|
154
172
|
Branch: <branch> → <target>
|