@arbiterforge/ca-pi 0.18.3 → 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.
Files changed (74) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/plugins/ca-pi/CHANGELOG.md +60 -0
  4. package/plugins/ca-pi/COMMANDS.md +2 -2
  5. package/plugins/ca-pi/SKILLS.md +5 -5
  6. package/plugins/ca-pi/SPRINT.md +43 -230
  7. package/plugins/ca-pi/agents/backend-author.md +5 -5
  8. package/plugins/ca-pi/agents/checkpoint-aggregator.md +7 -0
  9. package/plugins/ca-pi/agents/frontend-author.md +5 -5
  10. package/plugins/ca-pi/agents/infra-author.md +6 -7
  11. package/plugins/ca-pi/agents/scout.md +25 -24
  12. package/plugins/ca-pi/arbiter.md +6 -4
  13. package/plugins/ca-pi/generated/command-catalog.json +5 -5
  14. package/plugins/ca-pi/helpers/artifacts/ca-artifact-darwin-amd64 +0 -0
  15. package/plugins/ca-pi/helpers/artifacts/ca-artifact-darwin-arm64 +0 -0
  16. package/plugins/ca-pi/helpers/artifacts/ca-artifact-linux-amd64 +0 -0
  17. package/plugins/ca-pi/helpers/artifacts/ca-artifact-linux-arm64 +0 -0
  18. package/plugins/ca-pi/helpers/artifacts/ca-artifact-windows-amd64.exe +0 -0
  19. package/plugins/ca-pi/helpers/artifacts/ca-artifact-windows-arm64.exe +0 -0
  20. package/plugins/ca-pi/helpers/artifacts/release.json +37 -37
  21. package/plugins/ca-pi/hooks/_approvallib.py +41 -0
  22. package/plugins/ca-pi/hooks/_artifactlib.py +61 -115
  23. package/plugins/ca-pi/hooks/_artifactpromptlib.py +12 -12
  24. package/plugins/ca-pi/hooks/_bashguardlib.py +66 -4
  25. package/plugins/ca-pi/hooks/_contextselectlib.py +38 -35
  26. package/plugins/ca-pi/hooks/_contextwriterlib.py +114 -0
  27. package/plugins/ca-pi/hooks/_host.py +1 -1
  28. package/plugins/ca-pi/hooks/_prerequisitelib.py +35 -0
  29. package/plugins/ca-pi/hooks/_provenancelib.py +107 -1
  30. package/plugins/ca-pi/hooks/_readinjectlib.py +21 -7
  31. package/plugins/ca-pi/hooks/_reconciliationlib.py +170 -3
  32. package/plugins/ca-pi/hooks/_releaselib.py +6 -6
  33. package/plugins/ca-pi/hooks/_sprintapprovallib.py +52 -2
  34. package/plugins/ca-pi/hooks/artifact-reconcile.py +13 -4
  35. package/plugins/ca-pi/hooks/hostapi.py +1 -1
  36. package/plugins/ca-pi/hooks/init-codearbiter.py +34 -5
  37. package/plugins/ca-pi/includes/artifacts-attestation.md +434 -0
  38. package/plugins/ca-pi/includes/artifacts.md +133 -492
  39. package/plugins/ca-pi/includes/author-tdd-workflow.md +32 -21
  40. package/plugins/ca-pi/includes/fresh-verification.md +14 -12
  41. package/plugins/ca-pi/includes/harvest.md +3 -3
  42. package/plugins/ca-pi/includes/reference-map.md +1 -1
  43. package/plugins/ca-pi/includes/routing-table.md +3 -3
  44. package/plugins/ca-pi/includes/sprint-authority.md +6 -1
  45. package/plugins/ca-pi/includes/verification-boundary.md +11 -2
  46. package/plugins/ca-pi/package.json +1 -1
  47. package/plugins/ca-pi/routines/INDEX.md +8 -8
  48. package/plugins/ca-pi/routines/brainstorming/SKILL.md +65 -202
  49. package/plugins/ca-pi/routines/commit-gate/SKILL.md +60 -25
  50. package/plugins/ca-pi/routines/context-check/SKILL.md +89 -53
  51. package/plugins/ca-pi/routines/context-creation/SKILL.md +114 -220
  52. package/plugins/ca-pi/routines/decompose/SKILL.md +139 -167
  53. package/plugins/ca-pi/routines/executing-plans/SKILL.md +38 -136
  54. package/plugins/ca-pi/routines/finishing-a-development-branch/SKILL.md +45 -55
  55. package/plugins/ca-pi/routines/refactor/SKILL.md +27 -12
  56. package/plugins/ca-pi/routines/release/SKILL.md +1 -1
  57. package/plugins/ca-pi/routines/subagent-driven-development/SKILL.md +80 -230
  58. package/plugins/ca-pi/routines/tdd/SKILL.md +115 -228
  59. package/plugins/ca-pi/routines/writing-plans/SKILL.md +104 -174
  60. package/plugins/ca-pi/skills/ca-audit/SKILL.md +2 -2
  61. package/plugins/ca-pi/skills/ca-checkpoint/SKILL.md +1 -1
  62. package/plugins/ca-pi/skills/ca-commit/SKILL.md +60 -25
  63. package/plugins/ca-pi/skills/ca-context-check/SKILL.md +89 -53
  64. package/plugins/ca-pi/skills/ca-create-context/SKILL.md +114 -220
  65. package/plugins/ca-pi/skills/ca-decompose/SKILL.md +139 -167
  66. package/plugins/ca-pi/skills/ca-feature/SKILL.md +21 -38
  67. package/plugins/ca-pi/skills/ca-fix/SKILL.md +15 -9
  68. package/plugins/ca-pi/skills/ca-init/SKILL.md +18 -40
  69. package/plugins/ca-pi/skills/ca-pr/SKILL.md +45 -55
  70. package/plugins/ca-pi/skills/ca-refactor/SKILL.md +27 -12
  71. package/plugins/ca-pi/skills/ca-release/SKILL.md +1 -1
  72. package/plugins/ca-pi/skills/ca-review/SKILL.md +5 -8
  73. package/plugins/ca-pi/skills/ca-sprint/SKILL.md +11 -25
  74. package/plugins/ca-pi/skills/ca-status/SKILL.md +15 -6
package/README.md CHANGED
@@ -10,7 +10,7 @@ and durable project context. You decide. codeArbiter enforces.
10
10
  <img alt="Claude Code plugin" src="https://img.shields.io/badge/Claude_Code-plugin-d97757">
11
11
  <img alt="Codex plugin" src="https://img.shields.io/badge/OpenAI_Codex-plugin-10a37f">
12
12
  <img alt="Pi Feature Forge preview" src="https://img.shields.io/badge/ca--pi-Feature_Forge_preview-d97757">
13
- <img alt="version 2.26.3" src="https://img.shields.io/badge/version-2.26.3-2b7489">
13
+ <img alt="version 3.0.0" src="https://img.shields.io/badge/version-3.0.0-2b7489">
14
14
  <img alt="core lanes" src="https://img.shields.io/badge/core_lanes-18-555">
15
15
  <img alt="skills" src="https://img.shields.io/badge/skills-22-555">
16
16
  <img alt="agents" src="https://img.shields.io/badge/agents-20-555">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arbiterforge/ca-pi",
3
- "version": "0.18.3",
3
+ "version": "0.19.0",
4
4
  "license": "AGPL-3.0-only",
5
5
  "repository": {
6
6
  "type": "git",
@@ -4,6 +4,66 @@ All notable changes to `ca-pi` are documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.19.0] - 2026-10-14
8
+
9
+ ### Changed
10
+
11
+ - Keep routine artifact context assistive and smaller: move optional strict
12
+ legacy receipt, approval, and recovery reference procedures out of the
13
+ default artifact include. Load them only when an explicit proof/old-state
14
+ consumer needs them. No artifact permission gate or model reviewer is added.
15
+
16
+ - Keep command-result applicability aligned with the exact referenced
17
+ acceptance criteria and bounded task/shared source inputs plus known build
18
+ controls. Distinguish `scoped_changed`, `scoped_unchanged` and
19
+ `unassessed` without pretending that a partial fingerprint proves tests,
20
+ shared imports or independent review.
21
+ - Record mixed 0.3.1/0.3.2 engine compatibility and fail-closed old-client
22
+ behavior in disposable cross-binary fixtures; preserve historical files,
23
+ receipts and post-upgrade edits rather than promising a destructive downgrade.
24
+ - Normal feature/sprint execution guidance uses advisory plan state and real
25
+ checks instead of mandatory artifact approval codes or per-task reviewer fleets.
26
+ Recorded-intent conflicts and material ADR supersession remain visible without
27
+ becoming an additional permission protocol.
28
+ - Add read-only `task-context` to deliver one bounded task and its directly
29
+ referenced criteria/dependencies/prerequisites without an evidence snapshot,
30
+ reviewer dispatch, or persistent context ticket. Stale and oversized requests
31
+ fail explicitly; this is not a host-qualification claim.
32
+ - Start the assistive state-engine overhaul in PR #983: native work tracking no
33
+ longer requires artifact approval codes or context tickets.
34
+ - Record task-scoped prerequisite observations and completed implementation
35
+ batches separately from verified acceptance, with compact symbol reads and
36
+ human-readable HTML. New records use schema 0.3.2; historical reads retain
37
+ their bytes and evidence.
38
+ - Native plan authoring no longer requires artifact approval or every future
39
+ reviewer/verification adapter; generated planning guidance uses coherent work
40
+ units rather than mandatory five-minute slices.
41
+ - Explicit batch reviews can select fresh passing reruns of still-reviewed work
42
+ without recreating each task review. Original evidence remains distinct, and
43
+ source/support/workspace integrity is still checked.
44
+ - Align runtime adapter identities and the second Codex package manifest with
45
+ the unreleased candidate versions.
46
+ - Retire *unanswered* paired-approval and ARMED prerequisite prompts
47
+ through existing internal helpers without obtaining another code; submitted
48
+ pairs and confirmed prerequisites retain exact recovery, while old standalone
49
+ approvals fail closed rather than guessing that no user replied.
50
+ - Retire unanswered legacy reconciliation prompts with an explicit superseded
51
+ disposition, without a new approval code. Committed or uncertain attempts
52
+ retain exact replay/recovery; no task state or evidence is forged by cleanup.
53
+ - Preserve ordinary task command results as bounded, caller-reported
54
+ pass/fail/skip/unknown observations. Definition drift is visible, source
55
+ freshness remains explicitly unassessed, and no review/approval is invented.
56
+ - Canonicalize macOS temporary-directory aliases before validating the native
57
+ reconciliation root, retaining the existing unsafe-path/attempt refusals.
58
+ - This is an unreleased source candidate. Host-workflow conversion, full upgrade
59
+ qualification, and publication remain tracked by the overhaul PR.
60
+
61
+ ## [0.18.4] - 2026-10-13
62
+
63
+ ### Fixed
64
+
65
+ - Fix task reconciliation for Unicode text while preserving armed requests and prompt-route integrity.
66
+
7
67
  ## [0.18.3] - 2026-10-13
8
68
 
9
69
  ### Fixed
@@ -38,8 +38,8 @@ loads only when that route is invoked. Never bulk-read the directory.
38
38
 
39
39
  | Command | Argument | Purpose |
40
40
  |---|---|---|
41
- | `/ca-feature` | `"description"` | Approve a spec and plan, then build test-first. This is the entry to new behavior. |
42
- | `/ca-sprint` | `["goal"] [--farm]` | Run one approved spec through plan-to-PR execution with SMARTS-scored decisions. `--farm` is an off-by-default Feature Forge preview that requires `FARM_API_KEY`. |
41
+ | `/ca-feature` | `"description"` | Clarify the agreed outcome, maintain its spec and plan, and build test-first within the authorized scope. This is the entry to new behavior. |
42
+ | `/ca-sprint` | `["goal"] [--farm]` | Maintain the agreed spec and plan, execute authorized work, and report actual checks and material decisions. `--farm` is an off-by-default Feature Forge preview that requires `FARM_API_KEY`. |
43
43
  | `/ca-fix` | `"bug description"` | Prove a confirmed defect with a failing regression test, then make the smallest fix. |
44
44
  | `/ca-refactor` | `"surface and motivation"` | Restructure behind behavioral parity proven by unchanged pre-existing tests. |
45
45
  | `/ca-chore` | `<docs\|deps\|revert> …` | Route non-behavioral work through type-scaled gates. |
@@ -36,11 +36,11 @@ skill is invoked — never bulk-read this directory.
36
36
  |---|---|
37
37
  | `/ca-add-dep` | Vet a new or changed third-party dependency for license, provenance, and supply-chain risk before any install runs. |
38
38
  | `/ca-chore` | Sanctioned lane for non-behavioral work — docs-only edits, dependency bumps, reverts. Type-scaled gates; no TDD demanded of prose. |
39
- | `/ca-feature` | Start a feature: brainstorm a spec, get it approved, then drive it test-first through the pipeline. The one entry to implementation. |
39
+ | `/ca-feature` | Build an authorized feature from a maintained specification, testable criteria and useful plan, without duplicating user approval. |
40
40
  | `/ca-fix` | Fix a confirmed bug: a failing regression test first, then a minimal fix, then the rest of the tdd gates. |
41
41
  | `/ca-refactor` | Restructure code without changing observable behavior: rename, extract, inline, move, deduplicate, or replace an internal implementation with an equivalent one. Prove parity through unchanged pre-existing tests. Not for new behavior, bug fixes, explanation-only questions, or committing finished work. |
42
42
  | `/ca-spike` | Exploratory spike on a throwaway branch — answer a named question with disposable code. Never merges; exits to a findings note or /ca-feature. |
43
- | `/ca-sprint` | Autonomous sprint — one interactive spec gate, then plan-to-PR execution with every auto-decision SMARTS-scored and logged. Hard gates remain true stops. |
43
+ | `/ca-sprint` | Run an autonomous sprint from maintained specs and plans, with truthful verification and no duplicate artifact approval ceremonies. |
44
44
 
45
45
  ### Review
46
46
 
@@ -115,8 +115,8 @@ skill is invoked — never bulk-read this directory.
115
115
 
116
116
  | Skill | Purpose | Replacement |
117
117
  |---|---|---|
118
- | `/ca-create-context` | Build project context from an existing codebase through isolated scouts, resolve gaps, and preserve initialization gates. | `/ca-init --brownfield` |
119
- | `/ca-decompose` | Develop greenfield project context through a layered interview, preserve decisions, and initialize only after the required gates. | `/ca-init --greenfield` |
118
+ | `/ca-create-context` | Build source-backed project context through bounded inspection, optional agents, and safe selected writes. | `/ca-init --brownfield` |
119
+ | `/ca-decompose` | Develop greenfield context from a durable interview and initialize it through the native context writer. | `/ca-init --greenfield` |
120
120
 
121
121
  ### Ship
122
122
 
@@ -129,7 +129,7 @@ skill is invoked — never bulk-read this directory.
129
129
 
130
130
  | Skill | Purpose | Replacement |
131
131
  |---|---|---|
132
- | `/ca-context-check` | Audit stale provenance-tracked docs on request. Report first; re-scout or re-baseline only for selected docs. | `/ca-status drift` |
132
+ | `/ca-context-check` | Inspect context drift and refresh selected source-backed documents under existing authorization. | `/ca-status drift` |
133
133
 
134
134
  ## Internal
135
135
 
@@ -1,261 +1,74 @@
1
- <!-- codeArbiter v2 — /sprint: autonomous sprint mode. This is the mode body,
2
- loaded on demand when /ca-sprint (commands/sprint.md) is invoked; the command
3
- file is the thin entry point, this file is the procedure. -->
1
+ <!-- codeArbiter /sprint body. Loaded by the existing sprint command. -->
4
2
 
5
- # /sprint — autonomous sprint
3
+ # /sprint - autonomous, assistive execution
6
4
 
7
- Brainstorm a sprint with the user, then execute it end-to-end — deciding "as the user" on everything
8
- that is not a true hard gate. Every auto-decision is logged. Hard gates are real stops, rare by design.
5
+ The user's sprint request authorizes the agreed work. Build and maintain its spec and plan, then execute **without a second artifact approval system**. Make ordinary in-scope method decisions, record meaningful deviations, verify outcomes, and report real blockers. Do not make the user repeatedly certify prerequisites or evidence identities.
9
6
 
10
- ## Structured-artifact boundary
7
+ ## Representation and resume
11
8
 
12
- For new sprint work or an existing `.html` spec/plan match, load
13
- `<plugin-root>/includes/artifacts.md` before resume classification or artifact
14
- I/O. Call `_select_authoring_route` with the trusted project root, slug,
15
- `workflow: sprint`, and `lane: full`; use only its returned format and paths. For a selected HTML
16
- route it checks the installed capability before writing; a missing or invalid
17
- helper is a STOP and the workflow must not fall back to Markdown.
18
- Its validated identity, authority, binding and task-state operations replace the
19
- `.md` and status-column assumptions below for that pipeline. An existing `.md`
20
- pair remains on the legacy path. Discovery requires a
21
- complete same-extension spec/plan pair: select that exact pair as authoritative. A
22
- mixed-extension or duplicate match is a STOP. A lone spec resumes in its exact format, and the
23
- next plan must use the same extension. The workflow must not create, rename, or
24
- convert its counterpart to repair ambiguity. New full-lane sprint specs use the
25
- installed structured-artifact engine and default to canonical `.html`. The HTML
26
- path must block `--farm` before canary
27
- or dispatch; do not project it into legacy farm JSON.
9
+ For new full sprint work or an existing HTML spec/plan, load `<plugin-root>/includes/artifacts.md` and use `_select_authoring_route` with the trusted root, slug, `workflow: sprint`, `lane: full`. New complete sprint artifacts default to canonical HTML through the pinned native writer. An existing Markdown pair remains Markdown; a complete same-extension spec/plan pair is authoritative. A mixed-extension or duplicate match is a STOP. A lone spec resumes in its exact format, and the next plan must use the same extension. Do not create, rename, or convert a counterpart to repair ambiguity.
28
10
 
29
- ## Execution backend: premium (default) vs. `--farm`
11
+ **Resume first.** Resolve `_resolve_workflow_pair`. For an HTML pair, read state only through the installed engine `identity`, `index`, and symbol-scoped `read`. For a Markdown pair, use the existing Markdown status ledger. Resume either exact format without creating or consulting a shadow artifact. A task marked `IN_PROGRESS` requires inspection of running workers and partial work, not automatic redispatch. Do not demand a new approval because a session was restarted.
30
12
 
31
- > **`--farm` is a Feature Forge `preview`** — shipped off by default. Historical runs informed its
32
- > design but count as zero current qualification evidence. The premium subagent path is the blessed
33
- > default. The fresh-evidence promotion bar lives in `<plugin-root>/includes/farm.md`.
13
+ The HTML writer may refuse a genuinely invalid/missing payload; that means an artifact was not saved, not permission to invent a Markdown fallback. Ordinary safe investigation may continue. HTML `--farm` dispatch remains disabled.
34
14
 
35
- `/sprint` runs the normal premium-subagent path unless invoked as `/sprint --farm`. The `--farm` flag
36
- selects the pluggable execution backend: Claude still authors the spec, the failing tests, and the plan,
37
- but a worker (not a premium subagent) implements each task behind the same hard gates. Thread the flag
38
- into Phase 1 (`writing-plans --farm`) and Phase 2 (the farm dispatch path in
39
- `subagent-driven-development`); if `--farm` is set, pre-flight `FARM_API_KEY` and BLOCK if absent,
40
- citing `<plugin-root>/includes/farm.md`, before brainstorming begins. Everything else about
41
- `/sprint` (the one interactive gate, deciding-as-the-user, hard gates, logging) is identical between
42
- backends. The worker-seam design (the cheap/premium/agentic policies the seam admits) lives in
43
- `farm.md`; do not restate it here.
15
+ ## Backend
44
16
 
45
- ## Phase 1 — Sprint spec · gate: STOP
17
+ Default is the normal agent-assisted implementation engine. Delegate when it helps; **one fresh premium subagent and two reviewers per task are not mandatory**. `/sprint --farm` remains a separately requested legacy Markdown preview backend governed by `<plugin-root>/includes/farm.md` and `subagent-driven-development/references/farm-dispatch.md`: do not run without real provider configuration and budget, bypass its circuit breaker, or silently switch to premium on a failure. No model is selected, charged, or invoked by the artifact writer alone.
46
18
 
47
- **Resume first:** discover this sprint's existing artifacts. Call the private
48
- bridge resolver `_resolve_workflow_pair` with the trusted project root and sprint
49
- slug; its returned paths and format own this resume. Select a complete
50
- same-extension spec/plan pair as authoritative. A lone spec resumes in its exact
51
- format, and the next plan must use the same extension. A mixed-extension or
52
- duplicate match is a STOP. For an HTML pair, obtain state only through the
53
- installed engine `identity`, `index`, and symbol-scoped `read` operations. For a
54
- Markdown pair, use the existing Markdown status ledger. Resume either exact format
55
- without creating or consulting a shadow artifact; the workflow must not create,
56
- rename, or convert its counterpart. Do not re-brainstorm — confirm the resume
57
- with the user and re-enter per `/feature`'s Resume ladder (approved spec + plan with remaining
58
- dependency-clean `PENDING` tasks → straight to Phase 2, executing only those tasks; the legacy
59
- plan's `status` column or the typed engine's execution ledger is authoritative for its own format).
60
- `BLOCKED` tasks remain non-selectable until their owning reconciliation path records a supported
61
- transition. An interrupted sprint is re-entered, never restarted.
19
+ ## Recorded intent before drafting
62
20
 
63
- Route to `brainstorming` (`<plugin-root>/routines/brainstorming/SKILL.md`), scoped to a **sprint** — a coherent chunk of work (several features or one
64
- goal), not a single feature. Drive it to a concrete sprint spec at the
65
- route-selected spec path, then to `writing-plans`
66
- (`<plugin-root>/routines/writing-plans/SKILL.md`) for the task breakdown at the
67
- matching route-selected plan path. New sprint work uses `.html` through the
68
- installed engine.
21
+ Perform the **recorded-intent read — BEFORE first material spec shaping, fail-soft**.
22
+ Read only relevant plan/decision index entries and expand cited records as needed.
23
+ Absent `plans/` or `decisions/` is never a STOP; it is
24
+ **intent: silent — no decomposition record**, not invented prior consent.
69
25
 
70
- This is the ONE interactive gate, and it is load-bearing: the thoroughness of the spec is what makes
71
- hard-gate stops rare later. Capture the user's intent, priorities, risk tolerance, and any
72
- explicit "decide it this way" steers here. STOP for explicit user approval of the sprint spec AND the
73
- plan before autonomy begins. A blocking `[CONFIRM-NN]` is resolved here, with the user — never carried
74
- into autonomous execution unresolved.
26
+ Do not silently contradict an accepted ADR or a recorded deferral when choosing
27
+ a different outcome. If the named re-evaluation trigger has occurred, the
28
+ decision is reopened; a current explicit owner direction also supersedes lower
29
+ priority history. Ask one consequential question when ownership is genuinely
30
+ unresolved: **one stop per record per sprint**, not repeated approval codes.
31
+ In the sprint log `intent:` goes AFTER the `confidence:` token for
32
+ the existing reader. When a conflict repeats, consider whether the planned
33
+ outcome is wrong **or the record itself is stale** before questioning the user
34
+ again. None of this is an approval prerequisite for routine work.
75
35
 
76
- ### Initial HTML approval sequence
36
+ ## Phase 1 - Establish a useful working agreement
77
37
 
78
- Prepare one review packet containing the ready spec, ready draft plan, adversarial findings and
79
- explicit delegation terms. The installed private pair adapter in
80
- `<plugin-root>/includes/artifacts.md` owns the combined one-reply transaction:
38
+ Use `brainstorming` for a missing spec and `writing-plans` for a missing plan. Bound the sprint goal, requirements, relevant acceptance criteria, real dependencies, and genuinely consequential decisions. Prefer source evidence and existing project decisions; read applicable ADR titles/index first, and only relevant full bodies. A missing planning index is not another user STOP. Avoid bulk context loads and repeated interviews about answered requirements.
81
39
 
82
- 1. Finish the spec as a ready draft. Let `writing-plans` use `_preflight_plan_authoring` with
83
- `draft_for_pair: true` only for this full-lane initial sprint. Populate the same-slug plan as
84
- `draft_preview`, validate both, and review their complete criteria, paths, tests and checkpoints.
85
- Neither draft has execution authority. Do not separately approve this pair or bind it to an
86
- approved source. If review changes the draft spec, use only the explicit `draft_preview`
87
- rebind described in `includes/artifacts.md`, then revalidate both current drafts before arming.
88
- 2. Arm both exact identities with `arm-sprint`. Include `--delegate-methods` only when the presented
89
- terms explicitly ask the user to delegate existing task-method revisions. Present the exact returned reply;
90
- it names both artifacts and `delegate-methods` or `approve-only`, not an ambiguous generic yes.
91
- 3. The existing qualified host observes that single reply. `sprint-approve` validates both frozen
92
- definitions and commits approval plus plan binding in one recoverable native transaction.
93
- Verify both current approved identities before execution. No execution before both approvals.
40
+ For HTML create the spec and plan as typed drafts. A `draft_preview` binding identifies the current source and can be maintained under the existing authorization. Use `validate` for structural/ready diagnostics. **Do not arm `arm-sprint`, `sprint-approve`, `delegate-methods`, or `smarts-apply` to obtain permission to make ordinary plans or choose methods.** Those are historical attestation operations, not prerequisites to this default workflow. An explicit requested human approval checkpoint remains real; do not infer one from an artifact state.
94
41
 
95
- One reply approves the reviewed pair, not future unbounded work. `delegate-methods` does not grant
96
- initial self-approval, product decisions, prerequisite satisfaction, new files, verification changes,
97
- commit/push, provider/spending/disclosure/publication authority, or any security bypass. Keep
98
- no per-feature interviews and no attended execution pauses. A declined, changed or unsupported pair
99
- retains drafts; capability absence is not permission to invent a legacy shadow or receipt.
100
- If an observed reply was interrupted, `resume-sprint` replays its stored transaction without asking
101
- for the same reply again. An armed request with no observed reply cannot be resumed as approval.
102
- The existing sequential single-artifact path remains available for `/feature` and older workflows;
103
- Markdown retains its original approval contract.
42
+ Identify factual prerequisites and scope them to the tasks they really affect. The agent can check a fact through an ordinary authorized tool and record a `prerequisite` observation; a tool result is not a decision made by the user. Ask the actual user about a consequential unresolved product choice. Do not ask to certify a hash, approve a nonce, or reapprove a plan because tests or steps changed.
104
43
 
105
- **Recorded-intent read — BEFORE spec approval, fail-soft (ADR-0025):** consult
106
- `decisions/decision-log.md`, the accepted-ADR index, the `plans/` artifacts' section headings, and
107
- `open-questions.md`'s deferred sections — index-first, bodies only when the index names them
108
- relevant. Surface AT THIS GATE every accepted ADR and open deferral the planned scope plausibly
109
- touches, and capture the user's ruling on each in the approved spec ("conform" / "supersede via
110
- `/adr` first" / "scoped exception, cite the ADR"). A ruling recorded here is a user decision: a
111
- later in-flight collision with a pre-ruled record cites the ruling and proceeds. An absent
112
- `plans/` or `decisions/` records `intent: silent — no decomposition record` in the sprint log and
113
- proceeds — never a STOP.
44
+ The initial request bounds the work; it does **not** grant arbitrary future scope expansion, third-party spending, credential access, irreversible changes, merge, publication, or an override. Keep actual authorizations and explicit user limits intact.
114
45
 
115
- **`--farm` mode:** route the plan step through `writing-plans --farm`, which additionally writes each
116
- task's failing test and co-emits `plans/<sprint-slug>.plan.json`. To preserve the MVP-slice philosophy
117
- (and to cap the blast radius of a bad model), drive the farm **one MVP slice at a time**: emit and
118
- dispatch the plan.json for the current slice, review/merge it, then plan the next slice with the merged
119
- code in hand — rather than authoring every failing test in the sprint up front. The user approves the
120
- sprint spec and the first slice's plan at this gate; subsequent slices proceed under the same autonomy.
46
+ ## Phase 2 - Execute autonomously within the scope
121
47
 
122
- ## Phase 2 — Autonomous execution · gate: BLOCK
48
+ Send the selected plan to `subagent-driven-development` with no artificial per-batch human pause. It reads compact task records, selects actual dependency-clean work, and implements or delegates coherent units. Use TDD where behavior changes benefit from test-first work. Tests, review, and evidence belong to their actual subject and risk; do not require a fixed number of reviewers or rerun them because a receipt ID changed.
123
49
 
124
- Hand the approved plan to `subagent-driven-development` (`<plugin-root>/routines/subagent-driven-development/SKILL.md`) and run it to completion WITHOUT per-batch
125
- human checkpoints — that is the difference from `/feature`'s `executing-plans`. Each task is
126
- test-first via `tdd`, two-pass reviewed, and proven on a fresh run.
50
+ **Deciding on behalf of the sprint:** use the user's intent and priorities to choose reversible implementation methods. Use SMARTS when a genuinely difficult trade-off warrants it, not as a six-lens tax on every step. Record material decisions in `.codearbiter/sprint-log.md` with reason and any meaningful uncertainty. A changed method, verification runner, or task decomposition within the agreed outcome is ordinary typed plan maintenance with a short reason, not a new user grant. A materially different product outcome is a question for the actual owner.
127
51
 
128
- **`--farm` mode:** `subagent-driven-development` detects `plan.json` and takes its farm path —
129
- selecting a model (a canary probe over candidate Zen models, falling back to websearch), dispatching
130
- `farm.js`, then routing every green task through the SAME spec-compliance + quality + fresh-verification
131
- gates the premium path runs (Phases 3–5). Swapping the worker only changes who *writes* the code, never
132
- whether it is *reviewed* — every farm-produced green task still routes through the full review chain. A farm escalation is handled per `subagent-driven-development`'s Phase 2.5
133
- (re-dispatch via premium Phase 2, or `[CONFIRM-NN]` on a genuine spec gap), and a circuit-breaker abort
134
- from `farm.js` (too many escalations) is itself a hard-gate surface: stop and tell the user the model
135
- isn't capable of the slice rather than grinding through.
52
+ For HTML, use receipt-free `task-start`, `task-review` (implementation reported ready), `task-reconcile` (reasoned progress correction), and `accept-scope` (reported implementation `DONE`) as appropriate. These labels **never certify a passing check, independent review, or released artifact**. Preserve applicable test output and state the exact outstanding checks. `eligible` is advisory scheduling; use `verification-status` only when an explicit historical attestation claim is actually needed, never to decide whether ordinary code editing may proceed.
136
53
 
137
- ### Deciding "as the user"
54
+ ## Actual stops
138
55
 
139
- At every point the framework would normally surface for the user's decision — a design choice, an
140
- ambiguity, a trade-off, a non-obvious option — DECIDE rather than stop:
56
+ Stop affected work for an explicit user denial/stop, an unauthorized irreversible or destructive operation, a host/tool sandbox denial, a genuinely consequential missing product decision, or an independently applicable security, secrets, migration, or publication control. A security-critical finding requires resolving its risk, not faking a reviewer pass. Not every change mentioning authentication or an ADR automatically asks the user again when it is already within the agreed task; assess the actual risk and authorization.
141
57
 
142
- - Run the SMARTS 6-lens evaluation (the scoring in
143
- `<plugin-root>/includes/smarts/core.md`), beginning with its Step 0 recorded-intent check
144
- (ADR-0025 — in scope here by name), plus a project-correctness read against `CONTEXT.md` and the
145
- sprint spec. Reuse SMARTS *scoring* only — NOT `decision-variance`'s
146
- Rule 1 ("never decide alone"), which `/sprint` explicitly overrides.
147
- - Choose the option the analysis favors. Decide on EVERY non-hard-gate point **regardless of SMARTS
148
- strength** — `strong`, `moderate`, or `tied`. Break a `tied` toward the sprint spec's stated
149
- priorities; failing that, the §2 conflict hierarchy.
150
- - LOG every auto-decision to `<project-root>/.codearbiter/sprint-log.md` (append-only): the
151
- decision point, the options weighed, the SMARTS verdict, the chosen option, the strength, a
152
- **confidence flag** — `low` for any `tied` or `moderate`, `high` for `strong` — and an
153
- **intent field**: `intent: per <source>` when Step 0 answered or constrained (an answered
154
- decision logs `confidence: high`, with the citation written in the verdict slot), `intent:
155
- silent` otherwise. On a heading line `intent:` goes AFTER the `confidence:` token, or on a body
156
- line — never before it: the harvest's positional parser takes the promoted title as everything
157
- before `· confidence:`. The `low`-confidence
158
- entries are exactly what the user reviews in the morning; nothing is hidden behind autonomy.
58
+ A failing unit test, lint error, mismatched criterion, missing optional context map, changed receipt, or unsupported named-test parser is **not** another permission question. Record the failure and work on a correction or independent task. Do not equate a reported passing command exit with named-test-level proof it does not provide.
159
59
 
160
- ### Typed SMARTS method authority
60
+ ## Recovery without an approval ritual
161
61
 
162
- After the pair's explicit `delegate-methods` approval, use the private `smarts-apply` producer for a
163
- material change to an existing task's method steps. First perform SMARTS Step 0 and the existing
164
- project/ADR/scope checks. Submit the actual options, six-lens comparison, selected option, strength
165
- and rationale with the exact plan revision/model hash and the retained initial `grant_receipt`.
166
- Use the private request shape and adapter in `<plugin-root>/includes/artifacts.md`; a pasted matrix
167
- or an append-only log is not itself authority. A single evidenced option is allowed; an in-scope tie
168
- uses the existing priorities rather than another user interview. Do not manufacture alternatives.
62
+ Investigate the failed obligation and actual output. Fix the affected work, rerun the appropriate checks, and revisit only findings affected by the changed source or result. Do not spawn a full reviewer fleet or restart planning for routine implementation learning.
169
63
 
170
- The producer retains all protected plan fields and requires the original user-approved scope. It can
171
- change only existing task `steps`; paths, tests, criteria, dependencies, prerequisites, rollback and
172
- checkpoint membership cannot expand. It quiesces affected writers by refusing `IN_PROGRESS` and
173
- invalidates affected checkpoint/dependency proof before another attempt, without clearing `BLOCKED`
174
- members or their recorded reasons. A blocked method revision
175
- therefore resumes through fresh `eligible`, context tickets, verification and review, never auto-pass.
176
- The original log still records material reasoning and source citations. No result implies accepted
177
- work or independently proves the truth of model judgment. Changes outside the granted boundary use
178
- their actual authority owner; this producer does not satisfy prerequisites or waive security stops.
64
+ After process recreation, inspect workers and worktree state before changing an `IN_PROGRESS` record. Use `identity` and `eligible` for current advisory state, then a reasoned `task-reconcile` when needed. Never erase a user `BLOCKED` stop or rerun an uncertain attempt merely because its previous response was lost. Use the same journaled operation ID for an uncertain write and the engine's actual recovery operation. Old armed prompt/receipt history remains historical; it is not rearmed to permit progress.
179
65
 
180
- ### Hard gates — true stops, even mid-sprint
66
+ If the same corrective strategy fails twice with no new diagnosis or evidence, change the approach or mark that task blocked with its actual cause; continue unrelated eligible work. Do not weaken tests, invent exceptions, or claim unrun verification passed.
181
67
 
182
- NEVER auto-decided. Halt and surface to the user:
68
+ ## Phase 3 - Return an honest result
183
69
 
184
- - Anything in `security-controls.md`; auth, crypto, secrets, or a trust-boundary change.
185
- - An irreversible operation — data loss, a destructive migration, anything that cannot be rolled back.
186
- - `/override` or hotfix territory — a gate bypass is never taken autonomously.
187
- - A security CRITICAL finding, or a `[CONFIRM-NN]` that requires a missing user decision.
188
- An ordinary failing TDD/verification result instead takes Recovery within the approved sprint;
189
- it remains blocked from acceptance until the original gate and required reviews pass.
190
- - An auto-decision that would contradict an accepted ADR or a recorded deferral rationale
191
- (ADR-0025). The valve, none of it auto-decided: a collision pre-ruled at the Phase 1 gate cites
192
- the ruling and proceeds (that ruling was a user decision); a deferral whose recorded
193
- re-evaluation trigger has occurred is reopened and surfaced, not treated as a contradiction;
194
- one stop per record per sprint — the first stop's answer is logged, later identical collisions
195
- cite it.
196
- - Merge to the default branch (see Phase 3).
70
+ Summarize implemented changes, tests and checks **actually run**, unresolved defects/decisions, risk findings, and what still requires verification. Attribute meaningful autonomous decisions from the sprint log without requiring the user to read a long transcript.
197
71
 
198
- Hard gates are rare BY DESIGN. If they trip repeatedly in one sprint, that is a signal the spec was
199
- too thin, confidence was misplaced, or the record itself is stale — route a repeatedly-tripping
200
- ADR to supersession in the summary; surface it, do not silently grind through.
72
+ If an authorized commit is requested, route through `commit-gate`, then `finishing-a-development-branch` for the chosen PR action. `/sprint` may open a PR under the existing authorized workflow; it must not merge to the default branch, publish a release, discard work, or bypass Git permissions without the appropriate separate authority. A local `DONE` batch is not a shipped release.
201
73
 
202
- ## Recovery within the approved sprint
203
-
204
- A failed TDD, coverage, lint, or fresh-verification result blocks acceptance, not authorized repair.
205
- This section applies only after initial spec-and-plan approval and only inside that approved scope.
206
- Classify the failure before acting: an implementation defect or stale proof takes the owning repair
207
- or reconciliation path; a real authority or security block takes the named Hard gates path.
208
-
209
- Read the diagnostics and current state, give the author a corrective brief containing the failed
210
- obligation and relevant evidence, and rerun the original gate plus every invalidated review.
211
- Never redispatch merely to evade a failing gate. Do not weaken tests, invent an exemption, broaden
212
- scope, or accept a self-reported pass to continue. Use SMARTS and the existing sprint log for material
213
- method choices, not another approval interview for an already-authorized correction.
214
-
215
- For HTML, load `<plugin-root>/includes/artifacts.md` and use the exact current identity,
216
- `eligible`, and applicable `task-reconcile` or `scope-reconcile` operations before redispatch.
217
- Obtain a fresh complete context ticket and capture real policy events for every required receipt.
218
- Never manufacture an approval or a receipt, edit execution cells, or create a shadow ledger.
219
- An invalidated proof needs the appropriate fresh verification/review, not automatic reimplementation.
220
-
221
- Unchanged failure plus unchanged inputs is not progress. After two consecutive corrective attempts
222
- with the same failure and no new evidence, stop that retry strategy. Choose a different authorized
223
- approach supported by a new diagnosis, or persist the stop before continuing independently eligible work.
224
- For HTML, apply `task-block` with the exact current revision and model hash, then rerun `eligible`;
225
- the blocked task and invalidated dependents must not be redispatched. For Markdown,
226
- record the bounded blocked-task report in the authoritative plan and change that task's status to `BLOCKED`;
227
- select only dependency-clean `PENDING` tasks whose dependencies are `ACCEPTED`.
228
- `BLOCKED` tasks must not be redispatched until the owning plan/reconciliation workflow records a
229
- supported transition. This is not automatically another user checkpoint. Ask only for the specific
230
- missing fact or authority when that is the blocker; do not report the incomplete plan as accepted.
231
-
232
- A `commit-gate` refusal returns to its named repair/reconciliation prerequisite. Recovery does not grant commit, provider, spending, disclosure, or publication authority. Security CRITICAL findings,
233
- unresolved `[CONFIRM-NN]` decisions, irreversible operations, and all named Hard gates remain stops.
234
- HTML farm remains disabled. This recovery path does not change farm-only intent or authorize a
235
- silent premium fallback, another provider, or more spending after a farm circuit-breaker abort.
236
-
237
- ## Phase 3 — Land & summarize · gate: BLOCK
238
-
239
- On plan completion, route the branch through `commit-gate`, then `finishing-a-development-branch` —
240
- which under `/sprint` AUTO-SELECTS open-PR and surfaces the merge decision to the user. `/sprint`
241
- never merges and never discards.
242
-
243
- Emit the sprint **Receipt** — the same win-summary shape `finishing-a-development-branch` Phase 4 uses,
244
- widened to the whole sprint: what shipped; obligations covered and the gates that fired with what each
245
- caught; secrets/regressions prevented; suite time; the auto-decision count with every `low`-confidence
246
- call listed for review (cite `sprint-log.md`); any hard gates that tripped, each with the
247
- planning/confidence signal; and any open `[NEEDS-TRIAGE]` items. Drawn from in-hand state, not a fresh
248
- crawl. Close with exactly one warm, synthesizing sentence (per the orchestrator register) — earned,
249
- never on a no-op run.
250
-
251
- ## Hard rules
252
-
253
- - MUST log every auto-decision to `.codearbiter/sprint-log.md` — append-only, never edited, committed as a permanent audit artifact.
254
- - MUST NOT auto-decide a hard gate: `security-controls`, crypto/secrets/auth, irreversible ops, `/override`/hotfix, an unresolvable `[CONFIRM-NN]`, or a contradiction with an accepted ADR / recorded deferral outside the ADR-0025 valve. Halt and surface.
255
- - MUST run the recorded-intent read before Phase 1 spec approval — index-first and fail-soft: an absent `plans/` or `decisions/` logs `intent: silent` and never stops the sprint.
256
- - MUST NOT merge to the default branch or discard autonomously — auto-select open-PR only.
257
- - MUST NOT inherit `decision-variance`'s Rule 1 — `/sprint` decides as the user, reusing only the SMARTS scoring.
258
- - MUST surface a repeated hard-gate-trip pattern as a planning/confidence signal, not grind past it.
259
- - MUST diagnose and repair ordinary in-scope quality failures through Recovery within the approved sprint;
260
- never auto-pass a gate or treat recovery as additional authority.
261
- - MUST, at sprint close, run the follow-up harvest (`<plugin-root>/includes/harvest.md`) in autonomous mode — auto-promote `confidence: low` `sprint-log.md` decisions and any open `[NEEDS-TRIAGE]` to `open-tasks.md` (work) / `open-questions.md` (decisions), each promotion SMARTS-scored and logged. A blocking decision is never auto-promoted — it escalates.
74
+ Harvest applicable follow-up tasks and decisions through `<plugin-root>/includes/harvest.md` without silently broadening this sprint or promoting an unresolved decision into authority. The requested work, not procedural gate count, determines when the sprint is finished.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: backend-author
3
- description: Use when writing or modifying backend/server-side code. Owns the TDD workflow, input validation, framework conventions, and ORM usage. MUST write failing tests before implementation code. Reads tech stack from <project-root>/.codearbiter/tech-stack.md.
3
+ description: Implement backend/server-side code with scoped verification, input validation, framework conventions, and ORM usage. Reads tech stack from <project-root>/.codearbiter/tech-stack.md.
4
4
  tools: Read, Grep, Glob, Bash, Edit, Write
5
5
  classification: author
6
6
  pi-skills: [tdd]
@@ -9,7 +9,7 @@ model: sonnet
9
9
 
10
10
  # Backend Author Agent
11
11
 
12
- Backend implementation executor. Write server-side code only after the `tdd` skill Phase 1 has produced a test obligation checklist. No checklist, no implementation.
12
+ Backend implementation executor. Use the caller's scoped obligations and selected verification approach from the `tdd` skill.
13
13
 
14
14
  ## Required Reading at the Start of Every Task
15
15
 
@@ -19,11 +19,11 @@ Read in full before writing any code:
19
19
  2. `<project-root>/.codearbiter/coding-standards.md` — banned patterns, naming conventions, import style
20
20
  3. `<project-root>/.codearbiter/security-controls.md` — security-boundary rules governing this change
21
21
  4. `<project-root>/.codearbiter/CONTEXT.md` — read the `stage:` frontmatter value (project maturity, 1–4); higher maturity tightens coverage expectations
22
- 5. `<plugin-root>/includes/author-tdd-workflow.md` — the six-step TDD execution order for every task. Read it; do not carry a remembered copy.
22
+ 5. `<plugin-root>/includes/author-tdd-workflow.md` — route-specific verification and the authorized handoff.
23
23
 
24
- ## TDD Workflow (Non-Negotiable)
24
+ ## Verification
25
25
 
26
- Follow the six-step fixed order in `<plugin-root>/includes/author-tdd-workflow.md` for every task — failing tests first, minimum implementation, impact-bounded local verification, lint/type-check, only then stage. The shared `verification-boundary` reserves exhaustive cross-platform proof for exact-head hosted CI.
26
+ Follow `<plugin-root>/includes/author-tdd-workflow.md` using the caller's selected verification approach. Return scoped results and pending checks; stage only when assigned and authorized.
27
27
 
28
28
  ## Required Test Coverage per Feature
29
29
 
@@ -16,6 +16,7 @@ Explicit writer in the checkpoint pipeline. Consume the verdict-aggregator outpu
16
16
  1. `<project-root>/.codearbiter/CONTEXT.md` — the `stage:` value.
17
17
  2. The complete verdict-aggregator output from the current checkpoint run.
18
18
  3. `<project-root>/.codearbiter/checkpoints/` — existing checkpoint documents (to avoid a duplicate).
19
+ 4. The caller's observed reviewed commit, UTC review-start time, and worktree dirty flag. Retain missing values as unknown; do not substitute the current time or commit for an earlier reviewed state.
19
20
 
20
21
  ## Process
21
22
 
@@ -42,6 +43,12 @@ After writing, list the `### DEFERRABLE` findings as follow-up harvest candidate
42
43
  ## Checkpoint Document Structure
43
44
 
44
45
  ```markdown
46
+ ---
47
+ source_commit: <full reviewed commit SHA or null>
48
+ recorded_at: <UTC review-start timestamp or null>
49
+ worktree_dirty: <true, false, or null>
50
+ ---
51
+
45
52
  # Checkpoint — YYYY-MM-DD
46
53
 
47
54
  ## Project state
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: frontend-author
3
- description: Use when writing or modifying frontend/UI code. Owns the TDD workflow, component conventions, state management, and UI security. MUST write failing tests before implementation code. Reads tech stack from <project-root>/.codearbiter/tech-stack.md.
3
+ description: Implement frontend/UI code with scoped verification, component conventions, state management, and UI security. Reads tech stack from <project-root>/.codearbiter/tech-stack.md.
4
4
  tools: Read, Grep, Glob, Bash, Edit, Write
5
5
  classification: author
6
6
  pi-skills: [tdd]
@@ -9,7 +9,7 @@ model: sonnet
9
9
 
10
10
  # Frontend Author Agent
11
11
 
12
- Frontend implementation executor. Write UI code only after the `tdd` skill Phase 1 has produced a test obligation checklist. No checklist, no implementation.
12
+ Frontend implementation executor. Use the caller's scoped obligations and selected verification approach from the `tdd` skill.
13
13
 
14
14
  ## Required Reading at the Start of Every Task
15
15
 
@@ -19,11 +19,11 @@ Read in full before writing any code:
19
19
  2. `<project-root>/.codearbiter/coding-standards.md` — naming, formatting rules, banned patterns
20
20
  3. `<project-root>/.codearbiter/security-controls.md` — security-boundary rules governing API calls and data handling
21
21
  4. `<plugin-root>/includes/anti-slop-design/INDEX.md`, then `core.md` and the `medium-web` leaf (plus the `typography`/`color`/`layout`/`images` craft leaves) — the design reference for any user-facing UI. Load lazily per the router; do not bulk-read the bundle
22
- 5. `<plugin-root>/includes/author-tdd-workflow.md` — the six-step TDD execution order for every task. Read it; do not carry a remembered copy.
22
+ 5. `<plugin-root>/includes/author-tdd-workflow.md` — route-specific verification and the authorized handoff.
23
23
 
24
- ## TDD Workflow (Non-Negotiable)
24
+ ## Verification
25
25
 
26
- Follow the six-step fixed order in `<plugin-root>/includes/author-tdd-workflow.md` for every task — failing tests first, minimum implementation, impact-bounded local verification, lint/type-check, only then stage. The shared `verification-boundary` reserves exhaustive cross-platform proof for exact-head hosted CI.
26
+ Follow `<plugin-root>/includes/author-tdd-workflow.md` using the caller's selected verification approach. Return scoped results and pending checks; stage only when assigned and authorized.
27
27
 
28
28
  ## Required Test Coverage per Feature
29
29
 
@@ -9,12 +9,11 @@ model: sonnet
9
9
 
10
10
  # Infrastructure Author Agent
11
11
 
12
- Infrastructure implementation executor. Write IaC, container, CI/CD, and deployment
13
- configuration only after the owning route clears its prerequisite: approved
14
- feature criteria (and a plan where applicable) for `/feature`, or the original
15
- caller's repair authority and a bug-origin regression obligation for `/fix`.
16
- The regression must be red for the
17
- right reason before implementation. Do not fabricate a feature artifact for a fix.
12
+ Infrastructure implementation executor. Use the caller's scoped obligations and
13
+ selected verification approach: agreed feature criteria, an authorized bug-origin
14
+ regression obligation, or the refactor's approved surface and parity contract.
15
+ For `/fix`, observe target RED before repair. Do not fabricate a feature artifact
16
+ for a fix. Return scoped results; stage only when assigned and authorized.
18
17
 
19
18
  ## Required Reading at the Start of Every Task
20
19
 
@@ -22,7 +21,7 @@ Read in full before writing any infrastructure code:
22
21
 
23
22
  1. `<project-root>/.codearbiter/tech-stack.md` — IaC tool (OpenTofu, Ansible, Helm, etc.), container runtime, CI/CD system, approved registries
24
23
  2. `<project-root>/.codearbiter/security-controls.md` — security boundaries, approved secrets store, compliance requirements affecting infrastructure
25
- 3. `<plugin-root>/includes/author-tdd-workflow.md` — the shared six-step TDD execution order. Read it; do not carry a remembered copy.
24
+ 3. `<plugin-root>/includes/author-tdd-workflow.md` — route-specific verification and the authorized handoff.
26
25
 
27
26
  ## Security Rules
28
27