@arbiterforge/ca-pi 0.18.4 → 0.19.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/README.md +1 -1
- package/package.json +1 -1
- package/plugins/ca-pi/CHANGELOG.md +54 -0
- package/plugins/ca-pi/COMMANDS.md +2 -2
- package/plugins/ca-pi/SKILLS.md +5 -5
- package/plugins/ca-pi/SPRINT.md +43 -230
- package/plugins/ca-pi/agents/backend-author.md +5 -5
- package/plugins/ca-pi/agents/checkpoint-aggregator.md +7 -0
- package/plugins/ca-pi/agents/frontend-author.md +5 -5
- package/plugins/ca-pi/agents/infra-author.md +6 -7
- package/plugins/ca-pi/agents/scout.md +25 -24
- package/plugins/ca-pi/arbiter.md +6 -4
- package/plugins/ca-pi/generated/command-catalog.json +5 -5
- 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 +37 -37
- package/plugins/ca-pi/hooks/_approvallib.py +41 -0
- package/plugins/ca-pi/hooks/_artifactlib.py +61 -115
- package/plugins/ca-pi/hooks/_artifactpromptlib.py +12 -12
- package/plugins/ca-pi/hooks/_bashguardlib.py +66 -4
- package/plugins/ca-pi/hooks/_contextselectlib.py +38 -35
- package/plugins/ca-pi/hooks/_contextwriterlib.py +114 -0
- package/plugins/ca-pi/hooks/_host.py +1 -1
- package/plugins/ca-pi/hooks/_prerequisitelib.py +35 -0
- package/plugins/ca-pi/hooks/_provenancelib.py +107 -1
- package/plugins/ca-pi/hooks/_readinjectlib.py +21 -7
- package/plugins/ca-pi/hooks/_reconciliationlib.py +167 -2
- package/plugins/ca-pi/hooks/_releaselib.py +6 -6
- package/plugins/ca-pi/hooks/_sprintapprovallib.py +52 -2
- package/plugins/ca-pi/hooks/artifact-reconcile.py +13 -4
- package/plugins/ca-pi/hooks/hostapi.py +1 -1
- package/plugins/ca-pi/hooks/init-codearbiter.py +34 -5
- package/plugins/ca-pi/includes/artifacts-attestation.md +434 -0
- package/plugins/ca-pi/includes/artifacts.md +133 -492
- package/plugins/ca-pi/includes/author-tdd-workflow.md +32 -21
- package/plugins/ca-pi/includes/fresh-verification.md +14 -12
- package/plugins/ca-pi/includes/harvest.md +3 -3
- package/plugins/ca-pi/includes/reference-map.md +1 -1
- package/plugins/ca-pi/includes/routing-table.md +3 -3
- package/plugins/ca-pi/includes/sprint-authority.md +6 -1
- package/plugins/ca-pi/includes/verification-boundary.md +11 -2
- package/plugins/ca-pi/package.json +1 -1
- package/plugins/ca-pi/routines/INDEX.md +8 -8
- package/plugins/ca-pi/routines/brainstorming/SKILL.md +65 -202
- package/plugins/ca-pi/routines/commit-gate/SKILL.md +60 -25
- package/plugins/ca-pi/routines/context-check/SKILL.md +89 -53
- package/plugins/ca-pi/routines/context-creation/SKILL.md +114 -220
- package/plugins/ca-pi/routines/decompose/SKILL.md +139 -167
- package/plugins/ca-pi/routines/executing-plans/SKILL.md +38 -136
- package/plugins/ca-pi/routines/finishing-a-development-branch/SKILL.md +45 -55
- package/plugins/ca-pi/routines/refactor/SKILL.md +27 -12
- package/plugins/ca-pi/routines/release/SKILL.md +1 -1
- package/plugins/ca-pi/routines/subagent-driven-development/SKILL.md +80 -230
- package/plugins/ca-pi/routines/tdd/SKILL.md +115 -228
- package/plugins/ca-pi/routines/writing-plans/SKILL.md +104 -174
- package/plugins/ca-pi/skills/ca-audit/SKILL.md +2 -2
- package/plugins/ca-pi/skills/ca-checkpoint/SKILL.md +1 -1
- package/plugins/ca-pi/skills/ca-commit/SKILL.md +60 -25
- package/plugins/ca-pi/skills/ca-context-check/SKILL.md +89 -53
- package/plugins/ca-pi/skills/ca-create-context/SKILL.md +114 -220
- package/plugins/ca-pi/skills/ca-decompose/SKILL.md +139 -167
- package/plugins/ca-pi/skills/ca-feature/SKILL.md +21 -38
- package/plugins/ca-pi/skills/ca-fix/SKILL.md +15 -9
- package/plugins/ca-pi/skills/ca-init/SKILL.md +18 -40
- package/plugins/ca-pi/skills/ca-pr/SKILL.md +45 -55
- package/plugins/ca-pi/skills/ca-refactor/SKILL.md +27 -12
- package/plugins/ca-pi/skills/ca-release/SKILL.md +1 -1
- package/plugins/ca-pi/skills/ca-review/SKILL.md +5 -8
- package/plugins/ca-pi/skills/ca-sprint/SKILL.md +11 -25
- package/plugins/ca-pi/skills/ca-status/SKILL.md +15 -6
|
@@ -1,27 +1,38 @@
|
|
|
1
|
-
# Author
|
|
1
|
+
# Author verification workflow
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
Use the caller's scoped obligations and selected verification approach from
|
|
4
|
+
`<plugin-root>/routines/tdd/SKILL.md`. Keep each obligation tied to its source and
|
|
5
|
+
proving check. Apply `<plugin-root>/includes/verification-boundary.md` for local
|
|
6
|
+
checks and exact-head hosted CI.
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
approved surface and parity contract. An ADR remains a user-attributed decision
|
|
14
|
-
through `/adr`, never an author shortcut.
|
|
8
|
+
| Route | Required evidence |
|
|
9
|
+
|---|---|
|
|
10
|
+
| /fix | Observe genuine target RED before repair, then fresh GREEN for the same named regression with unchanged assertions. Reuse an adequate current bug-origin RED. |
|
|
11
|
+
| /feature | Keep the agreed spec and criteria. Prefer test-first work; existing implementation may use current criterion-focused checks and meaningful negative controls. Report the observed sequence accurately. |
|
|
12
|
+
| /refactor | Keep the approved surface and parity contract. Establish passing characterization before restructuring and preserve baseline assertions throughout implementation. |
|
|
15
13
|
|
|
16
|
-
|
|
14
|
+
For a bug-origin fix, carry the current expectation, cited evidence, supported
|
|
15
|
+
cause and regression oracle into the existing obligation ledger. Check the
|
|
16
|
+
original caller's repair authority and source freshness through the fix owner.
|
|
17
|
+
Do not fabricate a feature artifact. An ADR remains a user-attributed decision
|
|
18
|
+
through `/adr`.
|
|
17
19
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
6. **Stage for commit** — only after steps 1–5 complete
|
|
20
|
+
Name the existing target test and reuse it when its assertion matches the defect;
|
|
21
|
+
add tests for uncovered obligations. An import, setup or unrelated failure is not
|
|
22
|
+
target RED. Retain unrelated baseline failures and their outputs. A material
|
|
23
|
+
fixture or setup change requires renewed target RED on the broken source before
|
|
24
|
+
claiming RED-to-GREEN. Preserve the regression's assertions between those runs.
|
|
24
25
|
|
|
25
|
-
For
|
|
26
|
+
For intermittent or timing defects, prefer a faithful deterministic seam.
|
|
27
|
+
Otherwise declare a finite repeated-trial bound and failure oracle before running
|
|
28
|
+
it. Report the sample limits; do not claim deterministic proof from a passing
|
|
29
|
+
sample or retry until GREEN.
|
|
26
30
|
|
|
27
|
-
|
|
31
|
+
Implement only the assigned scope. Run its proving checks and affected existing
|
|
32
|
+
contracts on the resulting source, then applicable coverage, lint and type checks.
|
|
33
|
+
Preserve failures and actual user stops; never skip tests, suppress failures or
|
|
34
|
+
waive required checks to obtain a pass.
|
|
35
|
+
|
|
36
|
+
Return changed paths, obligation evidence, actual commands/cwd/results and pending
|
|
37
|
+
checks to the caller. Stage only when that action is assigned and authorized;
|
|
38
|
+
committing and publication retain their own owners and permissions.
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Current verification evidence
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
Verify the caller's actual task or acceptance criterion before claiming completion.
|
|
4
|
+
Read the command, cwd, relevant source and input identities, output and exit code.
|
|
5
|
+
A result is reusable across execution, commit and PR preparation when those inputs
|
|
6
|
+
still match and the observed behavior proves the required claim.
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
-
|
|
13
|
-
|
|
14
|
-
-
|
|
8
|
+
- Reuse inspected current results, including an earlier phase's result. A phase
|
|
9
|
+
transition, bookkeeping edit or new receipt ID alone requires no rerun.
|
|
10
|
+
- Run the missing or affected check when evidence is absent, its inputs changed,
|
|
11
|
+
its scope is insufficient, or its outcome is unresolved. A passing general suite
|
|
12
|
+
cannot replace a missing criterion-specific check.
|
|
13
|
+
- Inspect delegated command output and its source binding before relying on it.
|
|
14
|
+
A self-report without accessible evidence is insufficient.
|
|
15
|
+
- Keep a relevant failure or contradictory later result visible until resolved.
|
|
16
|
+
Correct the affected work and rerun its check; preserve unrelated valid results.
|
|
@@ -43,14 +43,14 @@ as a **GitHub issue**, not the board.
|
|
|
43
43
|
the board BUT record one audit line (`harvest declined: N candidates from <origin>`)
|
|
44
44
|
to `triage.log` (append-only — use Edit/`>>`, never Write) so the decline is
|
|
45
45
|
recoverable, not invisible.
|
|
46
|
-
- **Autonomous (`/sprint`):**
|
|
46
|
+
- **Autonomous (`/sprint`):** promote in-scope follow-ups and append each
|
|
47
47
|
promotion (id + `(from origin)`) to `sprint-log.md` — append-only, so use Edit/`>>`,
|
|
48
48
|
never Write (H-05 blocks a Write to it). A blocking decision is never auto-promoted
|
|
49
49
|
— it escalates and STOPs.
|
|
50
50
|
4. **Apply.** On confirm, route each:
|
|
51
51
|
- **work → `open-tasks.md`** — a queued, ID-less `- [ ] <desc> (from <origin>)` via
|
|
52
|
-
`/ca-task add --
|
|
53
|
-
|
|
52
|
+
`/ca-task add --from <origin> -- "<desc>"`. Put optional
|
|
53
|
+
`--boundaries a,b` before `--`; the terminator lets a description start with `-`.
|
|
54
54
|
- **non-blocking decision → `open-questions.md`** "Deferred decisions" (a
|
|
55
55
|
non-`CONFIRM-NN` bullet with the back-ref).
|
|
56
56
|
- **blocking decision → ESCALATE**, never the Deferred-decisions section: `promote`
|
|
@@ -19,4 +19,4 @@ then route to the owning skill or agent. This map answers *what to read before t
|
|
|
19
19
|
| Out-of-scope finding | — | inline `[NEEDS-TRIAGE]` marker (never an ADR); promoted to `open-tasks.md` by the harvest at the workflow's terminal step |
|
|
20
20
|
| Following up on workflow residue / a backlog task | `open-tasks.md` (schema), `<plugin-root>/includes/harvest.md` | `/ca-task` writer; harvest (`extract_*` → `promote`) at a terminal step |
|
|
21
21
|
| Generating a user-facing deliverable (UI, report, PR/CHANGELOG prose, slide, chart) | `<plugin-root>/includes/anti-slop-design/INDEX.md` (then `core` + the medium leaf) | `design-quality-reviewer` agent |
|
|
22
|
-
| Provenance drift
|
|
22
|
+
| Provenance drift or requested refresh of initialized context | Selected documents + `.codearbiter/.provenance/` + `.codearbiter/code-map.md` | `context-check` skill (`/ca-context-check`); reuse the selected scope and existing authorization |
|
|
@@ -21,8 +21,8 @@ reached the same way.
|
|
|
21
21
|
|
|
22
22
|
| Invocation cue | Primary route | Also dispatch | Hard gate |
|
|
23
23
|
|---|---|---|---|
|
|
24
|
-
| New feature | `/feature` Step 0 triage → full lane `brainstorming` → `writing-plans` → `executing-plans` → `tdd`, or logged small lane straight to `tdd` | `backend-`/`frontend-`/`infra-author` |
|
|
25
|
-
| Autonomous sprint | `/sprint` → `SPRINT.md` (brainstorm → plan → `subagent-driven-development`) |
|
|
24
|
+
| New feature | `/feature` Step 0 triage → full lane `brainstorming` → `writing-plans` → `executing-plans` → `tdd`, or logged small lane straight to `tdd` | `backend-`/`frontend-`/`infra-author` | Maintain useful full-lane spec/plan and applicable tests; small lane requires its listed criteria and triage log, not another permission question |
|
|
25
|
+
| Autonomous sprint | `/sprint` → `SPRINT.md` (brainstorm → plan → `subagent-driven-development`) | implementation or useful delegated authors; reviews by actual risk | No duplicate artifact approval; real host/security and unresolved material decisions remain stops; meaningful auto-decisions logged |
|
|
26
26
|
| Bug fix | `/fix` → `tdd` (bug variant) | impl author | Failing regression test before any fix code |
|
|
27
27
|
| Docs edit / dep bump / revert | `/chore` (type-scaled gates) | `dependency-reviewer` for deps | No behavioral code; suite green for deps/revert; exits via `commit-gate` |
|
|
28
28
|
| Exploratory throwaway spike | `/spike` (self-contained command) → `spike/<slug>` branch | — | Never merges or PRs; `commit-gate`-exempt (nothing on the branch can land); exits to a findings note or `/feature` |
|
|
@@ -53,5 +53,5 @@ reached the same way.
|
|
|
53
53
|
| Local runtime work (run, watch, exercise this repo's own app) | `mode --ops` → narrows the persona per `includes/ops-mode.md`, no skill/agent dispatch | — | Advisory only, no hook becomes mode-aware; permitted only when the operation starts, observes, or exercises and leaves no change in tracked files or git history — anything that mutates tracked files, the index, git history, or published state still routes normally |
|
|
54
54
|
| Promote a workflow's un-actioned follow-ups | `includes/harvest.md` (run at a terminal step) → `/ca-task` (work) / `open-questions.md` (decision) | — | Batch-confirm interactive; SMARTS-logged auto under `/sprint`; dedup by `(from <origin>)`; a blocking decision escalates, never demoted |
|
|
55
55
|
| Zero-onboarding dry-run of the reviewer fleet | `/ca-preview` (no skill; reuses `includes/review-matrix.md` to predict reviewers) | — | Read-only; writes nothing, stages nothing, `git status` unchanged; no `/ca-init` or `.codearbiter/` required; empty diff exits clean |
|
|
56
|
-
|
|
|
56
|
+
| Context drift audit or requested scoped/full refresh of initialized context | `context-check` at `<plugin-root>/routines/context-check/SKILL.md` (explicit `/ca-status drift` or `/ca-context-check`) | — | Audits are read-only; a direct refresh request selects its scope without another per-document approval. Preserve unselected content and initialized state; MUST NOT commit on its own. Commit-gate auto-heal owns routine maintenance. |
|
|
57
57
|
| Deep on-demand codebase audit | `tribunal` at `<plugin-root>/routines/tribunal/SKILL.md` (explicit `/ca-tribunal` retained) | `tribunal-lens-reviewer` per active lens (+ optional `map-structure`/`map-deps` on large repos) | Read-only until the filing gate; runs only after the user acknowledges the token estimate; never blocks a merge/commit; nothing filed or sent without explicit authorization |
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Historical sprint approval and delegated method authority
|
|
2
|
+
|
|
3
|
+
This is an explicit historical attestation and recovery reference, not the normal sprint
|
|
4
|
+
workflow. Load it only for a requested attestation claim or an already-observed transaction
|
|
5
|
+
that needs recovery. Ordinary planning, method changes and execution use `SPRINT.md` under
|
|
6
|
+
the existing authorization; do not arm this protocol to obtain permission for them.
|
|
2
7
|
|
|
3
8
|
This private extension adds no registered command, skill or agent. Check that the verified installed
|
|
4
9
|
native capability lists `sprint-approval-context`, `sprint-approve` and `smarts-apply`; a schema name
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
# Local and hosted verification boundary
|
|
2
2
|
|
|
3
3
|
Use **impact-bounded local verification** for the contributor loop. Before a
|
|
4
|
-
commit or pull request,
|
|
4
|
+
commit or pull request, establish the smallest applicable set that directly proves the
|
|
5
5
|
changed obligations and affected contracts, plus applicable lint/type-check,
|
|
6
6
|
coverage, generated-artifact parity, staged secret scanning, and specialized
|
|
7
|
-
security, dependency, migration, release, ADR, or deployment gates.
|
|
7
|
+
security, dependency, migration, release, ADR, or deployment gates. Reuse inspected
|
|
8
|
+
results while their relevant source, inputs, command and obligations still match;
|
|
9
|
+
run missing or affected checks. A phase transition alone does not require a rerun. A failing
|
|
8
10
|
local check blocks. Do not require a repository-wide or cross-platform suite on
|
|
9
11
|
the contributor's machine merely to create a commit or open a pull request.
|
|
10
12
|
|
|
@@ -25,3 +27,10 @@ gates. It never waives focused regression proof, coverage thresholds, lint or
|
|
|
25
27
|
type-check failures, security and secret controls, dependency review, migration
|
|
26
28
|
review, release invariants, ADR lifecycle proof, deployment review, or exact-head
|
|
27
29
|
merge protection.
|
|
30
|
+
|
|
31
|
+
Use the host relevant to the change for a needed live check. Do not require users
|
|
32
|
+
to install, configure, or switch hosts to complete ordinary work. Cross-adapter
|
|
33
|
+
compatibility belongs to maintainer CI; additional live-host trials require an
|
|
34
|
+
explicit acceptance requirement. If the available host denies a needed action,
|
|
35
|
+
report that limitation once and continue independent authorized work. Do not retry
|
|
36
|
+
an unchanged denial or seek another host merely to obtain a passing result.
|
|
@@ -12,25 +12,25 @@ not both merely to repeat the same procedure. This index lists what each skill O
|
|
|
12
12
|
|
|
13
13
|
| Skill | Routed to by | Owns |
|
|
14
14
|
|---|---|---|
|
|
15
|
-
| [tdd](tdd/SKILL.md) | `/feature` (
|
|
15
|
+
| [tdd](tdd/SKILL.md) | `/feature` (with its selected spec), `/fix`, `/refactor` | Scoped verification: regression-first fixes, behavioral feature checks, characterization baselines, coverage and lint; return observed evidence to the commit owner. |
|
|
16
16
|
| [commit-gate](commit-gate/SKILL.md) | `/commit` | The commit gate: nine phases — permission, branch, classification, impact-bounded local verification under the shared [verification boundary](../includes/verification-boundary.md), behavioral proof, diff review, selective stage, message, commit. No commit while an applicable check is red, the behavior unproven, or secrets/cruft present; exhaustive exact-head proof remains a hosted-CI merge gate. |
|
|
17
17
|
| [decision-variance](decision-variance/SKILL.md) | Architectural reconciliation or variance report; explicit `/reconcile` retained | One SMARTS arbitration owner; report-only is non-mutating. Analysis card loads on demand; only explicit user choices enter the append-only log. |
|
|
18
18
|
| [debug](debug/SKILL.md) | Diagnosis intent or `/debug` | Investigate-then-decide root-cause analysis: five phases. Investigation only, no code change here; returns one evidence-backed result: confirmed_code_defect, confirmed_noncode_cause, design_question, no_action, or unresolved. Follow-up action retains caller authority; no default task or ADR write. |
|
|
19
19
|
| [refactor](refactor/SKILL.md) | Behavior-preserving restructure intent or `/refactor` | Behavior-preserving change behind a parity-coverage proof gate; routes to `tdd` Phase 1 for coverage backfill or new test seams. |
|
|
20
|
-
| [context-creation](context-creation/SKILL.md) | `/create-context` (brownfield) | Back-fills `.codearbiter/` from
|
|
20
|
+
| [context-creation](context-creation/SKILL.md) | `/create-context` (brownfield) | Back-fills `.codearbiter/` from bounded source inspection and optional agents; writes `CONTEXT.md` (`arbiter: enabled` + `stage:`) and locks it `<!--INITIALIZED-->`. |
|
|
21
21
|
| [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. |
|
|
22
|
-
| [brainstorming](brainstorming/SKILL.md) | `/feature` (front), `/sprint` planning | Caller-scoped feature or coherent sprint specification.
|
|
23
|
-
| [writing-plans](writing-plans/SKILL.md) | `/feature`, `/sprint` (after the spec) |
|
|
24
|
-
| [executing-plans](executing-plans/SKILL.md) | `/feature` |
|
|
25
|
-
| [subagent-driven-development](subagent-driven-development/SKILL.md) | `/sprint` (engine), `executing-plans` (batch scope) |
|
|
22
|
+
| [brainstorming](brainstorming/SKILL.md) | `/feature` (front), `/sprint` planning | Caller-scoped feature or coherent sprint specification. Keeps material user decisions explicit without duplicate artifact approval. Preserves the selected format, recorded intent and handoff to a maintained plan. |
|
|
23
|
+
| [writing-plans](writing-plans/SKILL.md) | `/feature`, `/sprint` (after the spec) | Maintains the selected spec's criterion/task coverage, dependencies and relevant checks in the same format. Typed draft binding requires no special sprint approval or future reviewer adapter. |
|
|
24
|
+
| [executing-plans](executing-plans/SKILL.md) | `/feature` | Assistive feature coordinator: uses authored HTML checkpoint membership or meaningful legacy batches, delegates useful work, and reports results. Pauses for explicit user-requested checkpoints or actual decisions, not routine status reporting. |
|
|
25
|
+
| [subagent-driven-development](subagent-driven-development/SKILL.md) | `/sprint` (engine), `executing-plans` (batch scope) | Work from real task dependencies; implement or delegate coherently, run relevant checks, record DONE separately from verified evidence, and retry affected failures. Real user stops, security controls and unresolved material decisions still apply. |
|
|
26
26
|
| [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. |
|
|
27
27
|
| [finishing-a-development-branch](finishing-a-development-branch/SKILL.md) | PR intent or `/feature` / `/sprint` terminal handoff |Select watch/cleanup before creation preflight. Own PR opening after the current-head gates; sprint opens only. Merge/discard require explicit authority and their own proof. |
|
|
28
|
-
| [using-git-worktrees](using-git-worktrees/SKILL.md) | `subagent-driven-development`, `dispatching-parallel-agents` (opt-in) | OPTIONAL per-unit filesystem isolation for parallel work; integrates
|
|
28
|
+
| [using-git-worktrees](using-git-worktrees/SKILL.md) | `subagent-driven-development`, `dispatching-parallel-agents` (opt-in) | OPTIONAL per-unit filesystem isolation for parallel work; integrates completed units onto the caller's working branch for independent commit-gate checks. Never the default path. |
|
|
29
29
|
| [secret-handling](secret-handling/SKILL.md) | changed code reads/writes/passes a secret | The secret-source gate: identify → source → sinks/persistence. Secrets only from the approved store in `security-controls.md`; never in source, log, error, telemetry, image, or LLM prompt. Dispatches `auth-crypto-reviewer`. |
|
|
30
30
|
| [crypto-compliance](crypto-compliance/SKILL.md) | changed code uses crypto/hashing/signing/TLS/random | The banned-primitive gate: one scan. Rejects broken primitives, disabled TLS verification, home-rolled crypto; approved list lives in `security-controls.md`. Dispatches `auth-crypto-reviewer`. |
|
|
31
31
|
| [decision-lifecycle](decision-lifecycle/SKILL.md) | Record a decided ADR / inspect ADR health (`/adr`, `/adr-status`) | One owner; select read-only status before authoring prerequisites. User-attributed writing loads its reference on demand. Full-stem identity; Accepted/Planned is not delivery proof. |
|
|
32
32
|
| [release](release/SKILL.md) | `/release` | Lean declared-policy release, three phases: derive the next identity from Conventional Commits under `version-policy` + roll the changelog; cut the annotated tag and qualify declared assets through either a protected hosted `release-build` or a provenance-bound retained exact-head CI cohort; publish that tag and only those assets on explicit authorization, then verify the remote inventory. SemVer remains the default. No tag on a red suite; no direct-to-main/force-push; nothing published unbidden; a release commit routes through `commit-gate`. |
|
|
33
33
|
| [security-architecture](security-architecture/SKILL.md) | Requested threat model or `/threat-model` |Read-only STRIDE analysis of a sensitive design. Lesser gaps remain constraints; critical unmitigated threats stop the pass. No ordinary-change auto-entry. |
|
|
34
|
-
| [context-check](context-check/SKILL.md) |
|
|
34
|
+
| [context-check](context-check/SKILL.md) | Context refresh, drift-audit intent, `/status drift`, or `/context-check` | Report drift or refresh selected documents under existing authorization. No staging or commits; routine auto-heal remains with commit-gate. |
|
|
35
35
|
| [post-merge-cleanup](post-merge-cleanup/SKILL.md) | Merged-branch cleanup intent, `/ca-pr --cleanup`, or `/ca-cleanup` |Prove fetched containment, classify residue, confirm each discard, and transition fast-forward-only. Preserve unique work, stashes and remote branches. |
|
|
36
36
|
| [tribunal](tribunal/SKILL.md) | Deliberate deep-audit intent or `/ca-tribunal` |Cost-approved deep audit with persisted findings and resumable triage. Separate approval for issue filing and telemetry; never a required gate. |
|
|
@@ -1,209 +1,72 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: brainstorming
|
|
3
|
-
description:
|
|
3
|
+
description: Refine feature and sprint intent into a useful specification. Capture scope, observable criteria and material choices without repeated artifact approval ceremonies.
|
|
4
4
|
disable-model-invocation: true
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# brainstorming
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
`
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
A
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
## Phase
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
-
|
|
67
|
-
|
|
68
|
-
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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.
|
|
76
|
-
|
|
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.
|
|
79
|
-
|
|
80
|
-
## Phase 2 — Shape the approach · gate: BLOCK
|
|
81
|
-
|
|
82
|
-
Before drilling into details, establish WHICH design the details belong to:
|
|
83
|
-
|
|
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.
|
|
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.
|
|
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).
|
|
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.
|
|
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.
|
|
89
|
-
|
|
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.
|
|
92
|
-
|
|
93
|
-
## Phase 3 — Socratic refinement loop · gate: BLOCK
|
|
94
|
-
|
|
95
|
-
Turn the chosen approach concrete. The discipline is decide-or-ask, never drift:
|
|
96
|
-
|
|
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.
|
|
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.
|
|
104
|
-
- Run every answer through three lenses:
|
|
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.
|
|
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`.
|
|
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.
|
|
116
|
-
- **Closure is a checklist, not a feeling.** The reasons to stop asking that do not count, each with why:
|
|
117
|
-
- *"The feature is simple enough."* — Simplicity shortens the spec; it does not waive it. The five-sentence spec still names its criteria.
|
|
118
|
-
- *"I've asked enough questions."* — Question fatigue is not an exit condition. The exit is the Phase 5 review passing.
|
|
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.
|
|
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.
|
|
123
|
-
|
|
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.
|
|
125
|
-
|
|
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.
|
|
127
|
-
|
|
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.
|
|
129
|
-
|
|
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.
|
|
131
|
-
|
|
132
|
-
## Phase 4 — Write the spec · gate: BLOCK
|
|
133
|
-
|
|
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:
|
|
139
|
-
|
|
140
|
-
- **Problem** — the Phase 1 framing in final form.
|
|
141
|
-
- **Approach** — the Phase 2 choice and the trade-off that picked it, in two or three sentences.
|
|
142
|
-
- **Scope** — what is in, and the explicit out-of-scope boundary.
|
|
143
|
-
- **Decided parameters** — the parameter-level choices made in Phase 3, each in one line, so the approval reads them instead of discovering them in code review.
|
|
144
|
-
- **Acceptance criteria** — a numbered list, each criterion concrete and testable: a specific input, the observable output, the boundary or failure behavior. Each criterion is verifiable by one or more focused tests. "It works well" is not a criterion. These become `tdd` Phase 1 obligations — one obligation per criterion, so an untestable criterion is a defect to fix here, not in `tdd`.
|
|
145
|
-
- **Open questions** — every `[CONFIRM-NN]` raised, cross-referenced to `open-questions.md`.
|
|
146
|
-
- **Governs** *(optional)* — a spec-header line `**Governs:** <comma-separated globs>` that enrolls the approved spec in file-scoped just-in-time context injection: on a Read of any file matching one of the listed globs, a pointer to this spec is surfaced to the agent (tier 3 of the file→knowledge map). Adding the line is sufficient to enroll; no other change required.
|
|
147
|
-
|
|
148
|
-
Gate: the spec file exists on disk under `specs/`, with at least one acceptance criterion and every criterion individually testable.
|
|
149
|
-
|
|
150
|
-
## Phase 5 — Review, approval & handoff · gate: STOP
|
|
151
|
-
|
|
152
|
-
The spec earns its approval; it is not waved through. Two passes over the FILE as written, then the stop:
|
|
153
|
-
|
|
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.
|
|
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.
|
|
156
|
-
3. **Approval:**
|
|
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.
|
|
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.
|
|
191
|
-
|
|
192
|
-
## Hard rules
|
|
193
|
-
|
|
194
|
-
- MUST NOT write implementation code or route to `tdd` before the spec is on disk under `specs/` AND approved.
|
|
195
|
-
- MUST preserve the caller's feature or coherent sprint boundary; unrelated scope is split or excluded, not silently absorbed.
|
|
196
|
-
- MUST NOT manufacture alternatives in Phase 2 — when one sane approach exists, say so and why.
|
|
197
|
-
- MUST NOT write an acceptance criterion that cannot be verified by one or more focused tests.
|
|
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.
|
|
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).
|
|
201
|
-
- MUST run the Phase 5 mechanical self-review and adversarial pass against the file as written, and present the adversarial findings at approval.
|
|
202
|
-
- MUST NOT resolve a `[CONFIRM-NN]` by guessing — surface it and record it in `open-questions.md`.
|
|
203
|
-
- MUST NOT auto-approve a spec carrying a blocking `[CONFIRM-NN]`, even under `/sprint` — it escalates to the user.
|
|
204
|
-
- MUST NOT contradict the NOT-building list or redefine domain vocabulary in `CONTEXT.md` — a contradiction is a conflict to surface, not reconcile.
|
|
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.
|
|
9
|
+
Refine the agreed outcome before implementation. This is intent clarification and specification authoring, not a second permission system. The feature or sprint request is the initial authorization; ask about consequential choices not already answered, not whether an artifact may exist.
|
|
10
|
+
|
|
11
|
+
## Format and caller
|
|
12
|
+
|
|
13
|
+
For artifact I/O, load `<plugin-root>/includes/artifacts.md` and select the source with `_select_authoring_route`. Retain that source identity through specification authoring.
|
|
14
|
+
|
|
15
|
+
The calling feature or sprint owns scope and the next step. A sprint may include several related features under one coherent goal. A small inline feature remains the caller's mini-spec lane. Specification authoring itself does not grant commit, publication, override, provider spending, or irreversible-operation authority.
|
|
16
|
+
|
|
17
|
+
Use relevant CONTEXT.md, tech-stack.md and security-controls.md when present. Read an existing open-questions document and relevant ADR/plan headings index-first. Missing optional historical indices are not blockers. Preserve real decisions while distinguishing an accepted decision from implemented or released behavior.
|
|
18
|
+
|
|
19
|
+
## Recorded intent and consequential conflicts
|
|
20
|
+
|
|
21
|
+
Use an index-first recorded-intent read to avoid asking about settled choices.
|
|
22
|
+
This pre-flight is exempt from the read-or-STOP rule when optional project
|
|
23
|
+
history is absent: **intent: silent — no decomposition record**. Do not
|
|
24
|
+
manufacture a plan or an approval to fill that gap.
|
|
25
|
+
|
|
26
|
+
If a proposed solution resurrects a capability `plans/02` records as deferred,
|
|
27
|
+
identify the original reason and any stated re-evaluation trigger, then fork to ask
|
|
28
|
+
only when the *outcome* would materially change. An explicit current owner steer
|
|
29
|
+
can settle that fork; an ordinary implementation detail cannot silently reverse
|
|
30
|
+
a recorded deferral.
|
|
31
|
+
|
|
32
|
+
A candidate that contradicts an accepted ADR must be **surfaced WITH the ADR
|
|
33
|
+
citation, never silently dropped**. A recommended outcome change is paired with
|
|
34
|
+
a supersession fork via `/adr` instead of pretending the old decision never
|
|
35
|
+
existed. If the contradiction is the only sane approach, that IS the fork:
|
|
36
|
+
show the choice and consequence to the owner once, respecting an already
|
|
37
|
+
recorded superseding instruction. A referenced ADR is not a new permission
|
|
38
|
+
token for safe, in-scope investigation or implementation.
|
|
39
|
+
|
|
40
|
+
## Phase 1 - Frame
|
|
41
|
+
|
|
42
|
+
State the problem, observable result, intended scope and explicit exclusions. Respect what the user already requested. If a record conflicts with new intent, identify the material decision and which work it affects; do not automatically create another approval round for ordinary method choices.
|
|
43
|
+
|
|
44
|
+
## Phase 2 - Select a viable approach
|
|
45
|
+
|
|
46
|
+
Consider genuine trade-offs where they matter, recommend a suitable approach and explain why. Do not manufacture straw alternatives. Reversible implementation methods remain agent-owned within the agreed outcome. Ask for a user ruling on an unresolved, consequential product choice, not on every viable implementation detail.
|
|
47
|
+
|
|
48
|
+
Review applicable ADRs and explicit exclusions. A real conflicting architecture decision goes to its owner. Mentioning a protected file does not by itself restart the entire feature interview.
|
|
49
|
+
|
|
50
|
+
## Phase 3 - Make acceptance observable
|
|
51
|
+
|
|
52
|
+
Turn intended scope into specific criteria: input or trigger, expected behavior, and relevant failure/boundary condition. Check integration risks and ask: **if every criterion passed, what would still be broken?** For meaningful behavior changes, plan one or more focused tests against the actual obligation; do not create tests solely to clear an artifact gate. For complex or issue-backed work, a bounded `_intentlib.py uncovered-intent` inspection can catch uncited requirements. It is not a mandatory permission gate for every small change.
|
|
53
|
+
|
|
54
|
+
Choose sensible defaults and record material parameters. Do not create CONFIRM placeholders for normal method choices. A consequential unresolved requirement warrants one clear user question; independent work may proceed if that decision affects only part of the plan. Do not repeatedly ask the same question merely because an artifact was revised.
|
|
55
|
+
|
|
56
|
+
## Phase 4 - Write the spec
|
|
57
|
+
|
|
58
|
+
Create or update the route-selected spec with: problem, chosen approach and rationale, included/excluded scope, meaningful parameters, observable acceptance criteria, and actual open decisions. For HTML use typed `create` and `apply`, stable criterion IDs, current CAS, and symbol-scoped readback; never edit embedded HTML/JSON directly. Existing Markdown remains on the legacy path without automatic conversion. Do not invent a command, test, source, approval or result.
|
|
59
|
+
|
|
60
|
+
Drafts may be incomplete. `validate` with `gate: ready` identifies missing coverage and structure. Diagnostics help complete the plan; they are not a reason to prohibit independent authorized investigation. A conflicting write or structural failure still prevents claiming the artifact was saved. A ready spec is not proof of implementation.
|
|
61
|
+
|
|
62
|
+
## Phase 5 - Self-review and handoff
|
|
63
|
+
|
|
64
|
+
Read back the saved specification. Check consistency, alignment with the user's request, exclusions, and ability to verify: no criterion that contradicts an accepted ADR without an explicitly resolved, source-visible owner decision. Identify a plausible failure mode or say none was found. Proportion the review to risk rather than mandating an adversarial committee.
|
|
65
|
+
|
|
66
|
+
For full-lane feature or sprint work, return the selected spec identity, normative digest, criteria, and genuinely open decisions directly to `writing-plans` (`<plugin-root>/routines/writing-plans/SKILL.md`). The caller maintains its ordering; do not skip a useful plan to reach implementation. An existing spec should resume at its actual unfinished step, not restart an interview.
|
|
67
|
+
|
|
68
|
+
**Do not demand separate spec approval or `arm-sprint`/`sprint-approve` merely to progress.** An explicitly requested human review pause and real user-owned decisions still apply. Historical paired approval, producer capture or SMARTS grant remains historical; do not fabricate a receipt. In-scope method updates during work are typed plan maintenance, not another permission interview.
|
|
69
|
+
|
|
70
|
+
## Hard boundaries
|
|
71
|
+
|
|
72
|
+
Never broaden the requested outcome, ignore a genuine host denial or user stop, manufacture verification evidence, silently change representation, or claim a saved/verified state without observing it. Preserve source integrity and independently applicable security controls. Avoid interviews for already-answered or agent-owned choices.
|