@arbiterforge/ca-pi 0.14.9 → 0.14.12
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/README.md +7 -2
- package/package.json +1 -1
- package/plugins/ca-pi/CHANGELOG.md +39 -0
- package/plugins/ca-pi/SKILLS.md +2 -2
- package/plugins/ca-pi/SPRINT.md +47 -0
- package/plugins/ca-pi/generated/command-catalog.json +2 -2
- package/plugins/ca-pi/helpers/artifacts/ca-artifact-darwin-amd64 +0 -0
- package/plugins/ca-pi/helpers/artifacts/ca-artifact-darwin-arm64 +0 -0
- package/plugins/ca-pi/helpers/artifacts/ca-artifact-linux-amd64 +0 -0
- package/plugins/ca-pi/helpers/artifacts/ca-artifact-linux-arm64 +0 -0
- package/plugins/ca-pi/helpers/artifacts/ca-artifact-windows-amd64.exe +0 -0
- package/plugins/ca-pi/helpers/artifacts/ca-artifact-windows-arm64.exe +0 -0
- package/plugins/ca-pi/helpers/artifacts/release.json +6 -6
- package/plugins/ca-pi/hooks/_approvallib.py +58 -22
- package/plugins/ca-pi/hooks/_artifactauthoritylib.py +1686 -0
- package/plugins/ca-pi/hooks/_artifactlib.py +14 -4
- package/plugins/ca-pi/hooks/_artifactpromptlib.py +177 -0
- package/plugins/ca-pi/hooks/_githooks.py +368 -39
- package/plugins/ca-pi/hooks/_host.py +1 -1
- package/plugins/ca-pi/hooks/_overrideappendlib.py +5 -1
- package/plugins/ca-pi/hooks/_prerequisitelib.py +44 -22
- package/plugins/ca-pi/hooks/_reconciliationlib.py +472 -0
- package/plugins/ca-pi/hooks/_sprintapprovallib.py +302 -0
- package/plugins/ca-pi/hooks/artifact-authority-hook.py +72 -0
- package/plugins/ca-pi/hooks/artifact-authority.py +80 -0
- package/plugins/ca-pi/hooks/artifact-reconcile.py +57 -0
- package/plugins/ca-pi/hooks/doctor.py +3 -1
- package/plugins/ca-pi/hooks/hostapi.py +1 -1
- package/plugins/ca-pi/hooks/prompt-submit.py +20 -3
- package/plugins/ca-pi/includes/artifacts.md +99 -12
- package/plugins/ca-pi/includes/sprint-authority.md +69 -0
- package/plugins/ca-pi/package.json +1 -1
- package/plugins/ca-pi/routines/INDEX.md +7 -4
- package/plugins/ca-pi/routines/brainstorming/SKILL.md +97 -29
- package/plugins/ca-pi/routines/commit-gate/SKILL.md +7 -1
- package/plugins/ca-pi/routines/executing-plans/SKILL.md +32 -15
- package/plugins/ca-pi/routines/skill-author/SKILL.md +26 -5
- package/plugins/ca-pi/routines/writing-plans/SKILL.md +22 -10
- package/plugins/ca-pi/skills/ca-commit/SKILL.md +170 -16
- package/plugins/ca-pi/skills/ca-new-skill/SKILL.md +116 -21
|
@@ -79,10 +79,11 @@ python "<plugin-root>/hooks/_approvallib.py" cancel --root "<project-root>" --ar
|
|
|
79
79
|
```
|
|
80
80
|
|
|
81
81
|
Cancellation records no authority. Other workflow authorities must use their
|
|
82
|
-
corresponding host-owned adapters
|
|
83
|
-
|
|
84
|
-
authority
|
|
85
|
-
|
|
82
|
+
corresponding host-owned adapters. Legacy `capture` events remain readable for
|
|
83
|
+
inventory but are inspection-only: the engine refuses to wrap them in a current
|
|
84
|
+
receipt. Current authority requires `capture-observation` over a closed producer
|
|
85
|
+
profile and engine-issued evidence context; never create an authority source
|
|
86
|
+
merely to satisfy an artifact transition. `approve` checks the resulting receipt
|
|
86
87
|
against current ready content. A missing or changed receipt, captured event, or
|
|
87
88
|
still-present policy source returns `AUTHORITY_UNVERIFIED`. Receipt format 0.1.0
|
|
88
89
|
remains readable for inspection after upgrade but is not authority-bearing; the
|
|
@@ -91,11 +92,20 @@ approval, dispatch, acceptance, commit proof, or finalization. This is the
|
|
|
91
92
|
repository's cooperative same-user attestation model, not cryptographic identity
|
|
92
93
|
proof or protection from an unrestricted same-user filesystem writer.
|
|
93
94
|
|
|
94
|
-
|
|
95
|
-
to the approved spec
|
|
95
|
+
For ordinary sequential planning, create a plan as `draft_preview`, consume existing criterion IDs,
|
|
96
|
+
then `plan-bind` to the approved spec and approve the plan through its existing workflow. Initial
|
|
97
|
+
combined HTML sprint review uses the explicit paired path below instead of separate approvals.
|
|
96
98
|
A normative change invalidates its approval. Rebinding is explicit and preserves
|
|
97
99
|
history; it does not waive coverage or permit silent reinterpretation.
|
|
98
100
|
|
|
101
|
+
## Initial sprint pair and delegated methods
|
|
102
|
+
|
|
103
|
+
Only when preparing initial combined approval, replaying an observed reply, or revising a task's
|
|
104
|
+
method under its existing grant, load `<plugin-root>/includes/sprint-authority.md`. That private
|
|
105
|
+
card owns the `arm-sprint` / `resume-sprint` / `smarts` bridge and the native pair/method operations.
|
|
106
|
+
Do not bulk-load it for ordinary task reads. Scoring is not consent; the initial observed user reply,
|
|
107
|
+
protected scope, real producer, current evidence and existing security/permission gates remain required.
|
|
108
|
+
|
|
99
109
|
## Reading and dispatch
|
|
100
110
|
|
|
101
111
|
Use `index`, then `outline`, then symbol-scoped `read`. Exact reads are explicitly
|
|
@@ -147,8 +157,8 @@ python "<plugin-root>/hooks/_prerequisitelib.py" supersede --root "<project-root
|
|
|
147
157
|
```
|
|
148
158
|
|
|
149
159
|
The adapter fixes `authority_kind: user_workflow` and `verdict: satisfied`;
|
|
150
|
-
there is no caller-selected authority or bulk-satisfaction path. SMARTS remains
|
|
151
|
-
|
|
160
|
+
there is no caller-selected authority or bulk-satisfaction path. SMARTS prerequisite satisfaction remains unsupported; the plan-method producer below does not
|
|
161
|
+
grant prerequisite, security, backend or publication authority. Pi has no
|
|
152
162
|
qualified pre-model prompt seam and must remain blocked. Do not infer eligibility from one satisfied prerequisite:
|
|
153
163
|
rerun `eligible`, and resolve each remaining record independently against the
|
|
154
164
|
new current plan identity.
|
|
@@ -161,10 +171,87 @@ verification and spec review. Across checkpoints, dependencies require accepted
|
|
|
161
171
|
scope evidence. Provisional progress never counts as completion.
|
|
162
172
|
|
|
163
173
|
The orchestrator executes the declared verification through its existing governed
|
|
164
|
-
execution tool
|
|
165
|
-
a
|
|
166
|
-
|
|
167
|
-
|
|
174
|
+
execution tool through the installed production authority adapter; it never
|
|
175
|
+
constructs a successful workflow event itself. Arm an exact task request first.
|
|
176
|
+
Verification and review authority below is currently Codex-only. On Claude or
|
|
177
|
+
Pi, stop at this boundary rather than treating model-authored results as
|
|
178
|
+
authority; their installed prompt approval seams do not imply verification or
|
|
179
|
+
review support.
|
|
180
|
+
Every distinct `cwd` label in the engine context must be mapped once to an exact
|
|
181
|
+
linked Git worktree root. Mapped worktrees must share the artifact repository's
|
|
182
|
+
Git common directory, and the adapter freezes their filesystem identity, HEAD,
|
|
183
|
+
status digest, effective argv, and executable bytes:
|
|
184
|
+
|
|
185
|
+
```sh
|
|
186
|
+
python "<plugin-root>/hooks/artifact-authority.py" arm --root "<project-root>" --artifact-id <plan-id> --record-id <task-id> --activity verification --workspace "candidate worktree=<absolute-worktree>" --workspace "baseline-evidence worktree=<absolute-worktree>"
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
Use only the mappings actually named by that task; missing or extra labels fail
|
|
190
|
+
closed. Run the returned request through one plain governed exec invocation (no
|
|
191
|
+
compound shell expression), then publish only after the host's matching
|
|
192
|
+
`PostToolUse` has corroborated the wrapper's completed request-bound result:
|
|
193
|
+
|
|
194
|
+
```sh
|
|
195
|
+
python "<plugin-root>/hooks/artifact-authority.py" verify --root "<project-root>" --request-id <request-id>
|
|
196
|
+
python "<plugin-root>/hooks/artifact-authority.py" publish --root "<project-root>" --request-id <request-id>
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
The verifier launches exact engine-declared argv without a shell, supervises the
|
|
200
|
+
whole process tree, bounds output, requires exact named outcomes, and rejects
|
|
201
|
+
workspace or executable drift. If an attempt is interrupted, use the adapter's
|
|
202
|
+
`recover` operation to retain it as failed or abandoned; never rerun an uncertain
|
|
203
|
+
attempt under the same request.
|
|
204
|
+
|
|
205
|
+
For `spec_review` or `quality_review`, arm the corresponding activity without
|
|
206
|
+
workspace mappings and dispatch the returned `launch_envelope` unchanged to one
|
|
207
|
+
fresh host subagent. The Codex hooks bind the exact spawn call, child start and
|
|
208
|
+
child stop; a pasted or coordinator-authored decision is not review authority.
|
|
209
|
+
Publish the completed request through the same `publish` command. `task-review`
|
|
210
|
+
records the separate verification and spec-review receipts. After every task in
|
|
211
|
+
the scope reaches `REVIEW`, reverify against one current source snapshot, run the
|
|
212
|
+
combined quality review, and use `accept-scope` once. Do not accept tasks
|
|
213
|
+
individually.
|
|
214
|
+
|
|
215
|
+
An interrupted or `BLOCKED` HTML task never resumes by editing its status. Arm
|
|
216
|
+
the installed reconciliation adapter for the exact task or scope, present its
|
|
217
|
+
returned reply verbatim, and let `UserPromptSubmit` capture and apply the observed
|
|
218
|
+
user decision across repositories:
|
|
219
|
+
|
|
220
|
+
```sh
|
|
221
|
+
python "<plugin-root>/hooks/artifact-reconcile.py" --root "<project-root>" --artifact-id <plan-id> --target-id <task-id> --operation task-reconcile --target-state PENDING --reason "<reviewed reason>" --assessment "<reviewed assessment>"
|
|
222
|
+
python "<plugin-root>/hooks/artifact-reconcile.py" --root "<project-root>" --artifact-id <plan-id> --target-id <checkpoint-id> --operation scope-reconcile --assessment "<reviewed assessment>"
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
Ambiguous armed requests, changed identities, stale inputs, wrong replies, or a
|
|
226
|
+
foreign Git repository all fail closed. Re-run `eligible` after reconciliation;
|
|
227
|
+
the prompt reply itself is not proof that the lifecycle mutation committed.
|
|
228
|
+
If a mutation response is lost, submit the same exact reply again: the adapter
|
|
229
|
+
replays its durable operation ID and receipt without recapturing authority. A
|
|
230
|
+
request that has not reached mutation can be cancelled with:
|
|
231
|
+
|
|
232
|
+
```sh
|
|
233
|
+
python "<plugin-root>/hooks/artifact-reconcile.py" --root "<project-root>" --artifact-id <plan-id> --cancel --prompt "<exact returned reply>"
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
If a crash left a complete pending request before its prompt route was
|
|
237
|
+
registered, use this command instead. It refuses an active route or any
|
|
238
|
+
in-flight mutation:
|
|
239
|
+
|
|
240
|
+
```sh
|
|
241
|
+
python "<plugin-root>/hooks/artifact-reconcile.py" --root "<project-root>" --artifact-id <plan-id> --cancel-orphan
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
If a durable mutation attempt exists, neither cancellation path can clear it.
|
|
245
|
+
Replay the exact stored operation and receipt under the reconciliation lock:
|
|
246
|
+
|
|
247
|
+
```sh
|
|
248
|
+
python "<plugin-root>/hooks/artifact-reconcile.py" --root "<project-root>" --artifact-id <plan-id> --recover
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
Recovery clears the request only on a committed replay or a closed-set engine
|
|
252
|
+
result proving no commit (`REVISION_CONFLICT` or `OPERATION_ROLLED_BACK`). Other
|
|
253
|
+
errors retain it for investigation. Re-arm only after cancellation or recovery
|
|
254
|
+
succeeds; a committed recovery is not permission to repeat the mutation.
|
|
168
255
|
|
|
169
256
|
`IN_PROGRESS` after interruption requires reconciliation, not automatic completion.
|
|
170
257
|
`REVIEW` requires fresh evidence. Source changes stale proof; state/branding updates
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Sprint approval and delegated method authority
|
|
2
|
+
|
|
3
|
+
This private extension adds no registered command, skill or agent. Check that the verified installed
|
|
4
|
+
native capability lists `sprint-approval-context`, `sprint-approve` and `smarts-apply`; a schema name
|
|
5
|
+
or model-written event is not an implementation. Qualified exact-prompt host observation remains
|
|
6
|
+
Claude Code or Codex only. Pi must not arm it without a real pre-model prompt seam. Other existing
|
|
7
|
+
host-specific verification/review restrictions are unchanged.
|
|
8
|
+
|
|
9
|
+
Prepare the complete ready same-slug spec and plan as unapproved drafts. The private planner
|
|
10
|
+
preflight accepts `draft_for_pair: true` only for a full-lane initial sprint, never `/feature`, an
|
|
11
|
+
existing approved pair, or an execution shortcut. Keep its `draft_preview` binding until the paired
|
|
12
|
+
transaction. Run scope/criterion coverage, recorded-intent and adversarial review on both drafts.
|
|
13
|
+
Present the optional plan-method delegation in the review packet before arming:
|
|
14
|
+
|
|
15
|
+
```sh
|
|
16
|
+
python "<plugin-root>/hooks/_approvallib.py" arm-sprint --root "<project-root>" --spec-id <spec-id> --plan-id <plan-id> --delegate-methods
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Omit `--delegate-methods` for approval without delegated plan-method changes. Show the returned
|
|
20
|
+
`reply` verbatim. It explicitly names both IDs, `delegate-methods` or `approve-only`, and the nonce.
|
|
21
|
+
An ordinary yes, wrong nonce/mode or changed member does not approve either. `sprint-approve`
|
|
22
|
+
recomputes both model/revision identities and the projected binding, verifies both observations
|
|
23
|
+
from the same actual reply, and commits the two approvals through the existing native journal.
|
|
24
|
+
It produces separate bound receipts and an optional `grant_receipt`. No partial approval is visible
|
|
25
|
+
while recovery is required. Generic `capture-observation` and single-artifact `approve` cannot reuse
|
|
26
|
+
these pair events to approve one half. Confirm both current `approved` gates before dispatch.
|
|
27
|
+
|
|
28
|
+
An interrupted observed submission retains its exact source events, operation ID and both CAS
|
|
29
|
+
identities. Resume it without asking the user to repeat the same decision:
|
|
30
|
+
|
|
31
|
+
```sh
|
|
32
|
+
python "<plugin-root>/hooks/_approvallib.py" resume-sprint --root "<project-root>" --plan-id <plan-id>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Arming without an observed reply cannot be resumed as authority. Recovery completes only this
|
|
36
|
+
exact observed transaction, not an unrelated pending operation. A committed replay is success;
|
|
37
|
+
a closed-set `REVISION_CONFLICT` or `OPERATION_ROLLED_BACK` proves this mutation did not commit and
|
|
38
|
+
retires only its stale pending request while preserving source history. Changed content needs a
|
|
39
|
+
new genuine approval, not an invented receipt. Other failures retain the request for diagnosis.
|
|
40
|
+
Before observation, the existing `cancel --artifact-id <plan-id>` clears an unapproved arm. After
|
|
41
|
+
submission, resume/recover first; cancellation cannot erase an uncertain transaction.
|
|
42
|
+
|
|
43
|
+
With an explicit paired user grant, evaluate an existing task-method choice using SMARTS Step 0,
|
|
44
|
+
all six lens verdicts and the actual supporting reasons. Query only the `smarts-apply` request schema.
|
|
45
|
+
Provide the exact current plan `artifact_id`, `expected` revision/model hash, unique `operation_id`,
|
|
46
|
+
original `grant_receipt`, and `decision` with task ID, options, selected index, strength and rationale.
|
|
47
|
+
Each option contains label, steps and the six qualitative verdict/reason cells. There is no new
|
|
48
|
+
numeric threshold, mandatory invented alternative or tie-triggered user interview. Persist the
|
|
49
|
+
bounded JSON request as inert input and invoke the installation-owned bridge:
|
|
50
|
+
|
|
51
|
+
```sh
|
|
52
|
+
python "<plugin-root>/hooks/_approvallib.py" smarts --root "<project-root>" --request-file <decision-request.json>
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
The native producer validates the original user grant and current bound spec/plan. Only the selected
|
|
56
|
+
existing task's method `steps` may change. Every path, criterion, test/verification definition,
|
|
57
|
+
prerequisite, dependency, checkpoint, rollback and input policy stays protected. Changes that widen
|
|
58
|
+
this scope or need a different authority use their real owner. The producer does not turn step text
|
|
59
|
+
into shell permission and never grants commit, network/provider, spending, disclosure, publication,
|
|
60
|
+
prerequisite or security authority. Normal execution gates still apply to the chosen method.
|
|
61
|
+
|
|
62
|
+
An affected `IN_PROGRESS` writer must quiesce before mutation. A successful method change emits an
|
|
63
|
+
actual `smarts_workflow` event/receipt and current plan approval together, invalidates affected
|
|
64
|
+
checkpoint/dependency proof to `PENDING` while preserving `BLOCKED` members and their reasons,
|
|
65
|
+
retains evidence refs as history and requires fresh context,
|
|
66
|
+
verification and reviews. It never accepts work. An identical method needs no new approval; retain
|
|
67
|
+
current evidence rather than manufacturing another attempt. Log material reasoning and record
|
|
68
|
+
citations in the existing sprint audit. Recorded judgments remain model judgments: integrity and
|
|
69
|
+
scope checks do not independently prove their truth or create a malicious-same-user sandbox.
|
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Skill bodies load on routing only. This index is the surface scan; never bulk-read
|
|
4
4
|
`skills/*/SKILL.md`. Each skill is an orchestrator routine with gated phases, routed to, never
|
|
5
|
-
"triggered."
|
|
5
|
+
"triggered." Command-backed owners `commit-gate` and `skill-author` supply their
|
|
6
|
+
complete public entries at build time. Claude keeps the owner discoverable and the
|
|
7
|
+
command explicit-only; Codex/Pi expose the entry and keep the routine private. Read a needed owner directly or use the complete public body,
|
|
8
|
+
not both merely to repeat the same procedure. This index lists what each skill OWNS; to decide WHERE a trigger routes, load
|
|
6
9
|
`<plugin-root>/includes/routing-table.md` (the authoritative trigger→route surface).
|
|
7
10
|
|
|
8
11
|
| Skill | Routed to by | Owns |
|
|
@@ -14,9 +17,9 @@ Skill bodies load on routing only. This index is the surface scan; never bulk-re
|
|
|
14
17
|
| [refactor](refactor/SKILL.md) | `/refactor` | Behavior-preserving change behind a parity-coverage proof gate; routes to `tdd` Phase 1 only when new test seams are needed. |
|
|
15
18
|
| [context-creation](context-creation/SKILL.md) | `/create-context` (brownfield) | Back-fills `.codearbiter/` from existing source via parallel scouts; writes `CONTEXT.md` (`arbiter: enabled` + `stage:`) and locks it `<!--INITIALIZED-->`. |
|
|
16
19
|
| [decompose](decompose/SKILL.md) | greenfield startup, `/decompose` | Six-layer senior-architect interview, compaction-resilient via per-layer disk drafts + DRAFT ADRs; populates `.codearbiter/` and locks it initialized. |
|
|
17
|
-
| [brainstorming](brainstorming/SKILL.md) | `/feature` (front), `/sprint` planning |
|
|
18
|
-
| [writing-plans](writing-plans/SKILL.md) | `/feature`, `/sprint` (after the spec) | Decomposes
|
|
19
|
-
| [executing-plans](executing-plans/SKILL.md) | `/feature` |
|
|
20
|
+
| [brainstorming](brainstorming/SKILL.md) | `/feature` (front), `/sprint` planning | Caller-scoped feature or coherent sprint specification. Initial approval is user-owned; delegated choices require existing authority. Uses the selected artifact format, preserves recorded intent, and returns or forwards to the caller's required planning step before execution. |
|
|
21
|
+
| [writing-plans](writing-plans/SKILL.md) | `/feature`, `/sprint` (after the spec) | Decomposes the exact approved spec, or a ready draft through the initial sprint-only pair preflight. Retains same-format criterion/task coverage, paths and verification; combined drafts return for one real spec-and-plan reply before execution. Ordinary sequential binding remains unchanged. |
|
|
22
|
+
| [executing-plans](executing-plans/SKILL.md) | `/feature` | Attended coordinator: uses authored HTML checkpoint membership or bounded legacy batches, delegates to `subagent-driven-development`, and retains the user checkpoint. A display batch never changes an HTML acceptance scope; sprint does not inherit these pauses. |
|
|
20
23
|
| [subagent-driven-development](subagent-driven-development/SKILL.md) | `/sprint` (engine), `executing-plans` (batch scope) | Fresh subagent per task → spec-compliance then quality review → fresh-run verification; accepts only on proof. A quality failure blocks acceptance; approved sprint recovery owns correction. Security CRITICAL and unresolved `[CONFIRM-NN]` remain stops. |
|
|
21
24
|
| [dispatching-parallel-agents](dispatching-parallel-agents/SKILL.md) | `subagent-driven-development`, `/sprint`, parallel `/review` | Reusable fan-out primitive: bound concurrency, collect, dedupe, funnel through `finding-triage`→`verdict-aggregator`. Results unused until the read-only funnel runs. |
|
|
22
25
|
| [finishing-a-development-branch](finishing-a-development-branch/SKILL.md) | `/feature`, `/sprint` (terminal) | The terminal step after `commit-gate`: open-PR / merge-via-PR / discard. No direct-to-main, no force-push; `/sprint` auto-selects open-PR and never merges. |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: brainstorming
|
|
3
|
-
description: The Socratic spec-refinement front of /feature, and the planning front of /sprint. Routed to BEFORE any code — it
|
|
3
|
+
description: The Socratic spec-refinement front of /feature, and the planning front of /sprint. Routed to BEFORE any code — it turns a one-line idea into a concrete spec with testable criteria, ready for initial combined sprint review or explicit sequential approval. Five gated phases — frame, shape, refine, write, review-and-approve. No implementation before an approved spec; the caller retains required planning, execution and delivery ordering. Each acceptance criterion becomes one tdd Phase 1 obligation.
|
|
4
4
|
disable-model-invocation: true
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -23,7 +23,21 @@ structured-artifact engine and default to canonical `.html`. HTML `--farm`
|
|
|
23
23
|
dispatch remains blocked.
|
|
24
24
|
|
|
25
25
|
|
|
26
|
-
Refine the idea before it touches code. Routed to by `/feature`
|
|
26
|
+
Refine the idea before it touches code. Routed to by `/feature` and `/sprint` as their specification step.
|
|
27
|
+
|
|
28
|
+
## Caller scope and authority
|
|
29
|
+
|
|
30
|
+
Read the active caller's workflow, selected lane, scope and existing delegation before refining.
|
|
31
|
+
Initial sprint planning is not an approved sprint: this skill does not grant its own delegation.
|
|
32
|
+
A full-lane feature requires `writing-plans` after spec approval. Initial HTML sprint planning instead
|
|
33
|
+
returns a ready draft identity for the combined spec/plan review before either is approved; a
|
|
34
|
+
subordinate specification step returns its result to the existing caller. Preserve direct handoffs when they
|
|
35
|
+
satisfy that caller's ordering, not an unconditional terminal route to implementation.
|
|
36
|
+
|
|
37
|
+
A sprint may contain several related features under one coherent goal. Keep their boundaries and
|
|
38
|
+
criteria explicit without converting the sprint into repeated feature interviews. Parameter and
|
|
39
|
+
method choices follow safety-core; material product decisions and missing authority are not inferred.
|
|
40
|
+
No new registered surface, runtime state or copied procedure is needed for this call contract.
|
|
27
41
|
|
|
28
42
|
## Pre-flight
|
|
29
43
|
|
|
@@ -41,7 +55,9 @@ when the feature touches component boundaries or integrations). Index-first, nev
|
|
|
41
55
|
A missing file or directory here is NOT a gap to surface and never a STOP: record
|
|
42
56
|
`intent: silent — no decomposition record` in the running notes and proceed.
|
|
43
57
|
|
|
44
|
-
|
|
58
|
+
Scope-sized and light. NOT decompose's whole-project six-layer interview — five phases for the
|
|
59
|
+
caller's feature or coherent sprint. Depth scales with that scope, not the ceremony. The deliberately
|
|
60
|
+
inline small-feature lane remains owned by `/feature`; do not manufacture an HTML pair for it.
|
|
45
61
|
|
|
46
62
|
## Phase 1 — Frame the problem · gate: BLOCK
|
|
47
63
|
|
|
@@ -52,52 +68,74 @@ Take the one-line idea and pin its boundaries before designing or asking anythin
|
|
|
52
68
|
- Name what this feature explicitly does NOT do — the boundary that keeps scope honest.
|
|
53
69
|
- Check the framing against `CONTEXT.md`: it never contradicts the NOT-building list or redefines domain vocabulary. A contradiction is a conflict — surface it, do not reconcile it silently.
|
|
54
70
|
- Check the framing against the recorded intent (pre-flight, when present): an idea that resurrects a capability `plans/02` records as deferred, or that duplicates a backlog item, is a fork to ask — lead with the recorded deferral rationale and your recommendation; never proceed on it silently (ADR-0025).
|
|
55
|
-
- **
|
|
71
|
+
- **Respect the caller's unit of work.** For a feature, split unrelated independently shippable
|
|
72
|
+
concerns before refining them; record the selected piece and its exclusions. For a sprint, retain
|
|
73
|
+
related features within the stated sprint goal and identify their separable criteria and dependencies
|
|
74
|
+
for planning. Do not force one new user interview per feature or silently absorb unrelated work.
|
|
75
|
+
Ask only when the intended scope or necessary product decision remains unresolved.
|
|
56
76
|
|
|
57
|
-
Gate: problem, caller, and out-of-scope boundary stated and consistent with `CONTEXT.md
|
|
77
|
+
Gate: problem, caller, and out-of-scope boundary stated and consistent with `CONTEXT.md`; the unit is
|
|
78
|
+
the caller's selected feature or coherent sprint, with unrelated scope explicitly excluded.
|
|
58
79
|
|
|
59
80
|
## Phase 2 — Shape the approach · gate: BLOCK
|
|
60
81
|
|
|
61
82
|
Before drilling into details, establish WHICH design the details belong to:
|
|
62
83
|
|
|
63
|
-
- Propose the genuine candidate approaches — usually two or three — each with its real trade-off stated (`X gives you A but costs B`). Recommend exactly one, with the reasoning that picks it. The user
|
|
84
|
+
- Propose the genuine candidate approaches — usually two or three — each with its real trade-off stated (`X gives you A but costs B`). Recommend exactly one, with the reasoning that picks it. The user rules on material product decisions during initial feature or sprint planning; within an already-approved sprint, its existing delegated decision rules apply and the choice is logged. A recommendation made before approval does not authorize execution.
|
|
64
85
|
- **Never manufacture alternatives.** When only one sane approach exists, say so and say why — a padded list of straw options is noise wearing the costume of rigor, and it trains the reader to skim the one section that matters.
|
|
65
86
|
- **Check each candidate against accepted ADRs** (the pre-flight index; ADR-0025). A contradicting candidate is surfaced WITH the ADR citation, never silently dropped — and it may not be recommended except paired with a supersession fork via `/adr`. When the contradicting candidate is the only sane approach, that IS the fork: present it (the user rules under `/feature`; under `/sprint` this surfaces at the interactive Phase 1 gate, where the user is present to rule).
|
|
66
87
|
- Apply the isolation lens to the recommended shape while it is still soft: can each part be understood without reading its internals, and can its internals change without breaking its consumers? A design that fails this here fails it again in review, after the code exists.
|
|
67
88
|
- Apply the YAGNI lens: strike anything the Phase 1 problem statement does not demand. A capability the caller never asked for is scope creep with a head start.
|
|
68
89
|
|
|
69
|
-
Gate: one approach
|
|
90
|
+
Gate: one approach selected under the caller's existing authority and recorded with its trade-off;
|
|
91
|
+
nothing in it exceeds the stated problem. Selection during initial planning is not execution authority.
|
|
70
92
|
|
|
71
93
|
## Phase 3 — Socratic refinement loop · gate: BLOCK
|
|
72
94
|
|
|
73
95
|
Turn the chosen approach concrete. The discipline is decide-or-ask, never drift:
|
|
74
96
|
|
|
75
|
-
- **
|
|
97
|
+
- **Choose methods; ask missing decisions.** Select reversible parameters and implementation methods
|
|
98
|
+
within safety-core's decision-authority limits; multiple reasonable methods alone do not require a
|
|
99
|
+
user choice. Record material decisions in the running notes and the spec's **Decided parameters**.
|
|
100
|
+
Use the existing delegated decision rules only where the approved sprint covers the choice. A
|
|
101
|
+
missing product decision, unresolved `[CONFIRM-NN]`, scope expansion or irreversible operation is
|
|
102
|
+
not a method choice: ask the actual question with its recommendation and counter-consideration.
|
|
76
103
|
- **Batch what is independent.** Forks whose answers do not depend on each other are asked together, not serialized into rounds. One round of three real questions beats three rounds of one.
|
|
77
104
|
- Run every answer through three lenses:
|
|
78
|
-
- **Vague language** —
|
|
105
|
+
- **Vague language** — make the required outcome observable: "fast", "secure" and "scalable"
|
|
106
|
+
need acceptance boundaries. Only unresolved product requirements or missing user-owned decisions
|
|
107
|
+
become `[CONFIRM-NN]`; a reversible implementation detail deliberately left to planning within
|
|
108
|
+
the agreed constraints is not an unanswered user question. Do not invent unknowns to fill a template.
|
|
79
109
|
- **Hidden complexity** — name what the user assumes is easy but is hard: state, concurrency, edge cases, failure modes, validation, idempotency, migration of existing data. Surface it now or it surfaces in `tdd`.
|
|
80
|
-
- **Trade-off forcing** —
|
|
81
|
-
- **The loop has a breaker.** When refinement stops converging
|
|
110
|
+
- **Trade-off forcing** — identify the actual choice and its counter-consideration. Apply the caller's existing authority: ask material user-owned decisions, or choose and log an authorized delegated method. Never hide a choice or widen delegation.
|
|
111
|
+
- **The loop has a breaker.** When refinement stops converging, stop repeating the same question or
|
|
112
|
+
hypothesis. Reuse an applicable recorded ruling; within delegation, diagnose and choose a different
|
|
113
|
+
evidence-supported method. A genuine unresolved user decision or rule conflict is surfaced once
|
|
114
|
+
through its owner, never guessed or treated as permission. Do not manufacture `[CONFIRM-NN]` for
|
|
115
|
+
the agent's internal choice of method.
|
|
82
116
|
- **Closure is a checklist, not a feeling.** The reasons to stop asking that do not count, each with why:
|
|
83
117
|
- *"The feature is simple enough."* — Simplicity shortens the spec; it does not waive it. The five-sentence spec still names its criteria.
|
|
84
118
|
- *"I've asked enough questions."* — Question fatigue is not an exit condition. The exit is the Phase 5 review passing.
|
|
85
119
|
- *"The user seems eager to move on."* — Eagerness is a signal to compress the asking (decide more parameters, batch harder), never to skip an unresolved fork.
|
|
86
|
-
- *"We can settle it during implementation."* —
|
|
120
|
+
- *"We can settle it during implementation."* — Missing acceptance requirements cannot be deferred
|
|
121
|
+
as implementation freedom. Record genuine user-owned unknowns; retain method selection within
|
|
122
|
+
the existing planning and delegated-execution contract.
|
|
87
123
|
|
|
88
|
-
Record every genuinely-unresolved
|
|
124
|
+
Record every genuinely-unresolved user-owned requirement or decision as `[CONFIRM-NN]` in `<project-root>/.codearbiter/open-questions.md`, numbered sequentially. A finding that belongs to a different feature or a future scope gets an inline `[NEEDS-TRIAGE]` marker in the notes — never route it to a ticket.
|
|
89
125
|
|
|
90
126
|
**Before closing this loop, check the criteria decided so far against their own stated intent, not merely against each other** (#566: `writing-plans` Phase 4 proves BIJECTION between a plan's tasks and the `AC-NN` ledger — every criterion has a task, every task has a criterion — and that proves the two AGREE, never that the ledger itself is COMPLETE. A criterion missed by both sides passes that check cleanly; catching the miss belongs here, at the source, before Phase 4 writes anything to freeze it in place.) Assemble a scratch file outside the working tree (`mktemp`) shaped like the spec sections Phase 4 is about to write — a `## Scope` heading over the Phase 1 framing, and an `## Acceptance criteria` heading over every criterion decided in this phase's running notes so far — and, when this feature traces to a GitHub issue, its body into a second scratch file (`gh issue view <N> --json body -q .body > <scratch-file>`; omitted when there is no linked issue). Run `"$PY" "<plugin-root>/hooks/_intentlib.py" uncovered-intent <scope-and-criteria-file> [--issue-body <scratch-file>]`. A non-empty result names an in-scope bullet or an issue acceptance checkbox no criterion's text cites — add the missing criterion now, or record it as a `[CONFIRM-NN]` if it is genuinely undecided, never carry it forward uncited. This mechanical pass is the CHEAP half; it catches only an uncited bullet or checkbox.
|
|
91
127
|
|
|
92
128
|
Then ask the half it cannot mechanize, explicitly, as its own step: **if every criterion decided so far passed and nothing else changed, what would still be broken?** A real answer names a criterion the ledger is still missing even though every scope bullet and checkbox is technically cited — a bullet reading "fix all three contaminated skills" against criteria for two of the three passes the citation check above cleanly, and only this question catches it. Finding nothing broken is a reportable result, stated in one line, never a silent skip.
|
|
93
129
|
|
|
94
|
-
Gate: every vague term made concrete; every
|
|
130
|
+
Gate: every vague term made concrete; every material choice resolved under the caller's authority or recorded as a genuine `[CONFIRM-NN]`; every parameter decision recorded in the running notes that seed Phase 4's **Decided parameters** section; no unresolved user-owned acceptance requirement outside a `[CONFIRM-NN]`; the `uncovered_intent` backstop returns empty or every finding is resolved; and the negative question above has been asked and answered, not merely named. A blocking `[CONFIRM-NN]` that gates the spec's core stops the loop — surface it and STOP.
|
|
95
131
|
|
|
96
132
|
## Phase 4 — Write the spec · gate: BLOCK
|
|
97
133
|
|
|
98
|
-
Create the agreed spec
|
|
99
|
-
`<project-root>/.codearbiter/specs/<slug>.html
|
|
100
|
-
|
|
134
|
+
Create or revise the agreed spec at the route-selected spec path, in its selected format.
|
|
135
|
+
New full-lane work uses `<project-root>/.codearbiter/specs/<slug>.html` through the installed
|
|
136
|
+
structured-artifact engine; do not write HTML or its embedded model directly. An existing `.md`
|
|
137
|
+
spec stays on its exact legacy path; never create a counterpart or implicitly convert it.
|
|
138
|
+
The spec holds:
|
|
101
139
|
|
|
102
140
|
- **Problem** — the Phase 1 framing in final form.
|
|
103
141
|
- **Approach** — the Phase 2 choice and the trade-off that picked it, in two or three sentences.
|
|
@@ -113,29 +151,59 @@ Gate: the spec file exists on disk under `specs/`, with at least one acceptance
|
|
|
113
151
|
|
|
114
152
|
The spec earns its approval; it is not waved through. Two passes over the FILE as written, then the stop:
|
|
115
153
|
|
|
116
|
-
1. **Mechanical self-review** — one pass,
|
|
154
|
+
1. **Mechanical self-review** — one pass, correct through the selected format's owning writer, no re-review: no placeholder text (`TBD`, `???`, an unfilled section); no criterion that contradicts the scope; nothing that crosses the `CONTEXT.md` NOT-building boundary; no criterion that contradicts an accepted ADR or `plans/01`'s recorded component boundaries (ADR-0025); every criterion still testable by one or more focused tests after the edits; the vague-language lens applied to the spec's own prose.
|
|
117
155
|
2. **Adversarial pass** — build the strongest case AGAINST the design before the user reads it: the failure mode most likely to be real, the criterion most likely to be wrong, the assumption that would invalidate the approach if false. Present what survives WITH the spec at approval — the user rules on a challenged design, not a defended one. Finding nothing is a reportable result, stated in one line, not a silent skip.
|
|
118
156
|
3. **Approval:**
|
|
119
157
|
- **Under `/feature`** — present the spec and the adversarial findings, and request explicit user approval. Iterate on the file in place until the user approves. A blocking `[CONFIRM-NN]` must be resolved by the user before approval — never auto-resolve it.
|
|
120
|
-
- **
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
158
|
+
- **Initial `/sprint` planning** — prepare the ready draft spec and adversarial findings for
|
|
159
|
+
explicit user approval with its complete draft plan at the caller's one initial review gate.
|
|
160
|
+
For HTML, return the current draft identity to `writing-plans` in `draft_for_pair` mode;
|
|
161
|
+
the combined `arm-sprint` / `sprint-approve` path in `<plugin-root>/includes/artifacts.md`
|
|
162
|
+
observes the exact returned reply and binds/approves both documents atomically. Do not separately approve
|
|
163
|
+
the spec, synthesize a SMARTS receipt, or execute draft tasks. Do not reinterpret one generic reply
|
|
164
|
+
as approval of either artifact or delegation. Autonomy begins only after the
|
|
165
|
+
caller's spec AND plan approval requirement is met. A legacy Markdown caller retains its
|
|
166
|
+
recorded approval mechanism; there is no implicit conversion.
|
|
167
|
+
|
|
168
|
+
- **Within an already-approved sprint** — use its existing delegation only for an in-scope choice.
|
|
169
|
+
For HTML, a supported policy-owned adapter must supply the actual event and engine receipt;
|
|
170
|
+
follow `<plugin-root>/includes/artifacts.md`. A SMARTS score or log entry is not an approval receipt.
|
|
171
|
+
The private `smarts-apply` producer covers only existing plan-method steps under an explicit
|
|
172
|
+
paired user grant; it cannot approve a specification amendment or widen its protected scope.
|
|
173
|
+
Use only a qualified production producer for the requested authority and host; do not invent a capture event
|
|
174
|
+
or reuse inspection-only evidence. A missing producer is not delegation: retain the pending state and use
|
|
175
|
+
only the existing supported authority path. The native engine's presence does not qualify a host adapter.
|
|
176
|
+
Blocking `[CONFIRM-NN]` decisions are never auto-approved in either phase.
|
|
177
|
+
|
|
178
|
+
**Continuation follows the caller.** For a full-lane feature or sprint with approved spec authority,
|
|
179
|
+
return the approved spec identity and review outcome to its planning step; for initial HTML sprint
|
|
180
|
+
review, return the ready draft identity without execution authority. Either may forward directly to
|
|
181
|
+
`writing-plans` (`<plugin-root>/routines/writing-plans/SKILL.md`) when that is the caller's declared
|
|
182
|
+
next step. Do not skip required plan creation, binding or approval by jumping to `tdd`. A subordinate
|
|
183
|
+
invocation returns to the named checkpoint in its caller instead of launching another full workflow.
|
|
184
|
+
The inline small feature route belongs to `/feature` and can reach `tdd` without invoking this full-lane
|
|
185
|
+
specification procedure. Neither path grants commit, PR, merge or publication authority.
|
|
186
|
+
|
|
187
|
+
Gate: both review passes completed against the authoritative file, adversarial findings presented,
|
|
188
|
+
and no unresolved blocking `[CONFIRM-NN]`. Require actual approval verified before execution.
|
|
189
|
+
Only initial combined HTML review may return a ready unapproved draft to its constrained planner.
|
|
190
|
+
The next operation obeys the active caller's sequence and authority.
|
|
125
191
|
|
|
126
192
|
## Hard rules
|
|
127
193
|
|
|
128
194
|
- MUST NOT write implementation code or route to `tdd` before the spec is on disk under `specs/` AND approved.
|
|
129
|
-
- MUST
|
|
195
|
+
- MUST preserve the caller's feature or coherent sprint boundary; unrelated scope is split or excluded, not silently absorbed.
|
|
130
196
|
- MUST NOT manufacture alternatives in Phase 2 — when one sane approach exists, say so and why.
|
|
131
197
|
- MUST NOT write an acceptance criterion that cannot be verified by one or more focused tests.
|
|
132
|
-
- MUST
|
|
133
|
-
- MUST stop a non-converging refinement
|
|
198
|
+
- MUST record material parameter choices; ask genuine missing user decisions in full, not internal method-selection questions already covered by delegation.
|
|
199
|
+
- MUST stop a non-converging refinement strategy; reuse recorded rulings or authorized diagnosis rather than repeat an answered question. Genuine conflicts still route to their owner.
|
|
134
200
|
- MUST run the `uncovered_intent` mechanical backstop and ask the negative-judgment question ("if every criterion passed and nothing else changed, what would still be broken?") before closing Phase 3 — bijective coverage in `writing-plans` proves the plan and the ledger agree with each other, never that the ledger is complete (#566).
|
|
135
201
|
- MUST run the Phase 5 mechanical self-review and adversarial pass against the file as written, and present the adversarial findings at approval.
|
|
136
202
|
- MUST NOT resolve a `[CONFIRM-NN]` by guessing — surface it and record it in `open-questions.md`.
|
|
137
203
|
- MUST NOT auto-approve a spec carrying a blocking `[CONFIRM-NN]`, even under `/sprint` — it escalates to the user.
|
|
138
204
|
- MUST NOT contradict the NOT-building list or redefine domain vocabulary in `CONTEXT.md` — a contradiction is a conflict to surface, not reconcile.
|
|
139
|
-
- MUST NOT run decompose's six-layer whole-project interview
|
|
140
|
-
- MUST
|
|
141
|
-
- MUST, at exit, run the follow-up harvest (`<plugin-root>/includes/harvest.md`)
|
|
205
|
+
- MUST NOT run decompose's six-layer whole-project interview or force a coherent sprint through repeated one-feature interviews.
|
|
206
|
+
- MUST NOT use SMARTS to approve the initial sprint; record delegated decisions in the existing audit trail and verify actual authority for the selected artifact format.
|
|
207
|
+
- MUST, at exit, run the follow-up harvest (`<plugin-root>/includes/harvest.md`) in the active caller's mode:
|
|
208
|
+
batch-confirm interactive work; use autonomous promotion only under existing delegation. A blocking
|
|
209
|
+
decision is never promoted into authority or silently demoted to a follow-up.
|
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: commit-gate
|
|
3
|
-
description:
|
|
3
|
+
description: Create a verified local Git commit when committing changes is requested. Not for explaining commit history, drafting a message only, or postponing a commit. Applies every commit gate and never implies a push or PR.
|
|
4
|
+
argument-hint: (none)
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# commit-gate
|
|
7
8
|
|
|
8
9
|
The only permitted path to a commit. Bypassing it is a hard-rule violation. Routed to when the user invokes `/commit` or any equivalent instruction to persist staged changes.
|
|
9
10
|
|
|
11
|
+
No command arguments are required; inspect current Git state. Test-only requests use the
|
|
12
|
+
recorded invocation in `tech-stack.md` without entering this committing procedure. PR
|
|
13
|
+
readiness belongs to the existing PR workflow; an informational or message-only request
|
|
14
|
+
must not reach staging, commit, or this procedure's writing close.
|
|
15
|
+
|
|
10
16
|
## Pre-flight
|
|
11
17
|
|
|
12
18
|
Read these, or STOP and surface the gap — never guess a command:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: executing-plans
|
|
3
|
-
description: The checkpoint coordinator for /feature. Routed to by /feature once a writing-plans plan exists.
|
|
3
|
+
description: The checkpoint coordinator for /feature. Routed to by /feature once a writing-plans plan exists. Uses authored HTML checkpoints or bounded legacy batches, delegates each scope to subagent-driven-development (fresh author agent per task, full review chain, fresh verification), then stops for a human checkpoint before the next batch. The checkpointed counterpart to /sprint's autonomous run.
|
|
4
4
|
disable-model-invocation: true
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -23,6 +23,8 @@ Coordinate the plan in small, user-acknowledged batches. Routed to by `/feature`
|
|
|
23
23
|
`writing-plans` has produced a plan. Each batch is executed by `subagent-driven-development` — fresh
|
|
24
24
|
author agent per task, spec-compliance review, quality review, fresh verification — and the user
|
|
25
25
|
checkpoints between batches. The orchestrator never implements; it schedules and checkpoints.
|
|
26
|
+
An HTML checkpoint is an acceptance scope, not a new user checkpoint in `/sprint`. Sprint routes
|
|
27
|
+
directly to `subagent-driven-development` and does not inherit this attended coordinator's pauses.
|
|
26
28
|
|
|
27
29
|
## Pre-flight
|
|
28
30
|
|
|
@@ -42,22 +44,34 @@ Read these, or STOP and surface the gap — never guess a path, a command, or a
|
|
|
42
44
|
|
|
43
45
|
## Phase 1 — Batch plan · gate: BLOCK
|
|
44
46
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
+
For Markdown, group remaining tasks into small batches; the three-to-five task ceiling is legacy
|
|
48
|
+
presentation guidance, not a reason to rewrite typed scope. For HTML, read the authored checkpoint partition
|
|
49
|
+
through the installed engine. Build the sequence from the plan's exact checkpoint membership and ordering,
|
|
50
|
+
retaining each checkpoint's full task-ID set as its acceptance scope. Skip a checkpoint only when current
|
|
51
|
+
engine evidence establishes its accepted state. Do not remove `REVIEW` tasks from an unfinished checkpoint:
|
|
52
|
+
they still need the combined review and whole-scope acceptance. Likewise, do not drop `BLOCKED` members:
|
|
53
|
+
excluding one does not make the checkpoint complete. Resume it only through the supported reconciliation path
|
|
54
|
+
and refreshed eligibility. Respect explicit dependencies in either format.
|
|
55
|
+
|
|
56
|
+
A smaller display grouping must not split an HTML acceptance scope, combine checkpoints, or change their
|
|
57
|
+
membership to fit a task-count ceiling. Execute and accept one authored scope at a time. If the partition
|
|
58
|
+
itself is unsuitable, return the actual problem to `writing-plans` for the existing amendment/approval path;
|
|
59
|
+
do not mutate scope identity in the coordinator or add a new batching registry.
|
|
47
60
|
|
|
48
61
|
**Resume is the normal re-entry.** For Markdown, a task already `ACCEPTED` in
|
|
49
62
|
the plan's status column was verified before an earlier interruption. For HTML,
|
|
50
|
-
derive
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
because the session died mid-plan.
|
|
63
|
+
derive resume from current `eligible` evidence and the authored checkpoint partition above.
|
|
64
|
+
For Markdown, exclude accepted tasks from new batches. For HTML, retain checkpoint membership while
|
|
65
|
+
selecting only eligible work, and say which current accepted checkpoints are already complete.
|
|
66
|
+
Stale proof requires its existing reconciliation and revalidation, not automatic reimplementation.
|
|
67
|
+
Never restart the pipeline at brainstorming merely because the session died mid-plan.
|
|
55
68
|
|
|
56
69
|
After process recreation on an HTML pair, rediscover the same authoritative pair
|
|
57
70
|
and query `identity` and `eligible` again. An `IN_PROGRESS` task is not proof of
|
|
58
|
-
completion
|
|
59
|
-
|
|
60
|
-
|
|
71
|
+
completion. Use the installed reconciliation adapter in `<plugin-root>/includes/artifacts.md` for the exact task,
|
|
72
|
+
including its genuine host-observed decision and exact stored retry identity; do not construct
|
|
73
|
+
an authority event in this coordinator. A supported `task-reconcile` transition must precede
|
|
74
|
+
redispatch through `task-start` with a fresh complete context ticket. A task in `REVIEW` still requires fresh evidence and the current
|
|
61
75
|
scope review before `accept-scope`; conversation memory cannot advance it.
|
|
62
76
|
|
|
63
77
|
For each task, confirm the plan names its exact target paths and its verification command. A task
|
|
@@ -69,8 +83,10 @@ and what follows. Do NOT stop for a separate acknowledgment — the user approve
|
|
|
69
83
|
surfaces there (or the user interrupts). Each unresolved unknown is a `[CONFIRM-NN]` in
|
|
70
84
|
`open-questions.md` — surface it, do not guess past it.
|
|
71
85
|
|
|
72
|
-
Gate: a batch sequence exists and every task has a target path and a verification command.
|
|
73
|
-
|
|
86
|
+
Gate: a batch sequence exists and every task has a target path and a verification command.
|
|
87
|
+
Missing current authority or capability, a stale prerequisite, or a `[CONFIRM-NN]` blocking the
|
|
88
|
+
first scope is a gate failure. Follow the existing diagnostic or reconciliation owner; do not
|
|
89
|
+
invent a plan, drop blocked members, or restart the interview to clear it.
|
|
74
90
|
|
|
75
91
|
## Phase 2 — Execute batch · gate: BLOCK
|
|
76
92
|
|
|
@@ -78,8 +94,9 @@ Invoke `subagent-driven-development` (`<plugin-root>/routines/subagent-driven-de
|
|
|
78
94
|
spec slug so it can read its own pre-flight files. Do not implement anything here — the author agents,
|
|
79
95
|
review chain, and verification all run inside that skill.
|
|
80
96
|
|
|
81
|
-
For HTML, pass the selected spec/plan identities and task
|
|
82
|
-
|
|
97
|
+
For HTML, pass the selected spec/plan identities and the complete task-ID set for one authored checkpoint;
|
|
98
|
+
do not pass a partial or cross-checkpoint task set. Labels and presentation batches do not confer acceptance.
|
|
99
|
+
The nested workflow uses engine eligibility to select work inside that scope, records dispatch with `task-start`, records
|
|
83
100
|
the separate verification and spec-review receipts with `task-review`, and
|
|
84
101
|
records whole-scope acceptance once with `accept-scope`. Preserve every returned
|
|
85
102
|
identity and receipt for the checkpoint and later commit proof.
|