acstack 0.49.2 → 0.50.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/README.md +35 -42
  3. package/agents/codex/frontend-verifier.toml +8 -5
  4. package/agents/codex/task-checker.toml +43 -173
  5. package/agents/codex/task-executor.toml +18 -88
  6. package/agents/codex/test-writer.toml +18 -26
  7. package/agents/frontend-verifier.md +8 -5
  8. package/agents/task-checker.md +43 -173
  9. package/agents/task-executor.md +18 -88
  10. package/agents/test-writer.md +18 -26
  11. package/cli/dist/index.js +0 -2
  12. package/cli/dist/index.js.map +2 -2
  13. package/cli/package.json +1 -1
  14. package/docs/config-reference.md +31 -50
  15. package/docs/workflows.md +28 -66
  16. package/orchestrator/AGENTS.md +146 -273
  17. package/package.json +1 -1
  18. package/pi/agents/frontend-verifier.md +8 -5
  19. package/pi/agents/task-checker.md +43 -173
  20. package/pi/agents/task-executor.md +20 -88
  21. package/pi/agents/test-writer.md +18 -26
  22. package/pi/extension.ts +2 -2
  23. package/skills/browser-verify/SKILL.md +2 -2
  24. package/skills/grilling/SKILL.md +9 -10
  25. package/skills/implement/SKILL.md +23 -90
  26. package/skills/implement/decision-log.md +1 -1
  27. package/skills/implement/design-pass.md +159 -21
  28. package/skills/map/SKILL.md +4 -7
  29. package/skills/pre-commit-review/SKILL.md +24 -24
  30. package/skills/pre-commit-review/auto-fix.md +1 -1
  31. package/skills/pre-commit-review/interactive.md +1 -1
  32. package/skills/quick-fix/SKILL.md +20 -22
  33. package/skills/setup/SKILL.md +2 -2
  34. package/skills/setup/first-run.md +3 -12
  35. package/skills/setup/report.md +5 -10
  36. package/skills/setup/row-fixes.md +3 -6
  37. package/skills/implement/relaxed-tdd.md +0 -28
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: implement
3
- description: Execute implementation work via the TDD pipeline (test-writer -> task-executor -> task-checker). A map is a stored graph of question and work nodes. Claims afk nodes – away from keyboard, meaning nodes an agent settles alone – from the map frontier, the nodes ready to be worked now, when a map exists; runs the same discipline directly on the request when none does. A unit of work carries its own size – one node is a quick change, forty is a long effort, and nothing declares which. Invoke whenever the way is clear and something needs building, changing or extending, however small. Use quick-fix instead when something is broken and needs a root cause found, and map instead when decisions still need settling before anyone can build.
3
+ description: Implement clear requests with adaptive testing and verification under the shared Implementation discipline in orchestrator/AGENTS.md. A map is a stored graph of question and work nodes. Claims afk nodes – away from keyboard, meaning nodes an agent settles alone – from the map frontier, the nodes ready to be worked now, when a map exists; runs the same discipline directly on the request when none does. A unit of work carries its own size – one node is a quick change, forty is a long effort, and nothing declares which. Invoke whenever the way is clear and something needs building, changing or extending, however small. Use quick-fix instead when something is broken and needs a root cause found, and map instead when decisions still need settling before anyone can build.
4
4
  argument-hint: "[map name, or the request to implement]"
5
5
  ---
6
6
 
@@ -12,19 +12,13 @@ $ARGUMENTS
12
12
 
13
13
  ## What this skill does
14
14
 
15
- Implements work under the TDD pipeline. The unit of work is a map node when a
16
- map exists, and the request itself when none does – same discipline either
17
- way. Progress lives on the tracker as claims and resolutions; there is no
18
- checkbox file to maintain.
15
+ - Apply the shared Implementation discipline in `orchestrator/AGENTS.md`
16
+ - Use a map node as the work item when a map exists, otherwise use the request itself
17
+ - Keep tracker claims and resolutions as the progress record
18
+ - Choose delegation for confidence or independent scopes rather than a fixed sequence
19
19
 
20
20
  ## Steps
21
21
 
22
- Before step 1, copy the eight step headings below into your todo list word
23
- for word. They go ahead of any task-specific items. A step you skip stays in
24
- the list, marked `skip: <reason>`.
25
-
26
- When step 5 runs on a node, copy its eight numbered steps the same way.
27
-
28
22
  ### 1. Find the work
29
23
 
30
24
  Check the configured tracker for maps (`workflow.maps.tracker` in
@@ -107,69 +101,21 @@ Claim each node as you start it:
107
101
 
108
102
  Nodes describe behaviour, not paths. **Resolve paths at claim time**.
109
103
 
110
- Before any code change, dispatch parallel read-only codebase-search subagents
111
- over the relevant code. Use `Explore` on Claude Code and `scout` on pi.
112
-
113
- Use as many as there are distinct places to look, not a fixed count. Act on
114
- what they find.
115
-
116
- Downstream pipeline subagents start fresh. Pass the source, test, and doc paths
117
- you already discovered into each test-writer, task-executor, task-checker, audit,
118
- polish, and verifier prompt. Tell them to read those paths directly instead of
119
- searching the codebase again.
104
+ Investigate relevant source, callers, tests, and docs directly or through useful delegation.
105
+ Pass discovered paths and requirements to any delegated agents to avoid repeated searches.
120
106
 
121
107
  ### 5. Execute within the claim
122
108
 
123
- The pipeline's state lives inside the claim, not on the node. For each
124
- claimed node (or the bare request), run the Implementation discipline to
125
- completion:
126
-
127
- 1. **test-writer subagent** – tests from the node's behaviour description.
128
- Under strict they must all fail before step 2 runs. Skip step 1 for pure
129
- config or setup work with no testable behaviour.
130
-
131
- 2. **task-executor subagent** – make the tests pass. Executor CANNOT modify
132
- test files.
133
-
134
- 3. **Format** – run `commands.format` over the files the work touched. A
135
- `null` value means this project has no format step.
136
-
137
- Report a non-zero exit. It never counts as a failed implementation.
138
-
139
- 4. **task-checker subagent** – verify the build compiles, lints, and
140
- typechecks. Verify tests pass, the full suite passes, and test count >=
141
- baseline. Also check the mock audit, TDD isolation, and integration
142
- wired.
109
+ Apply the shared Implementation discipline to the claimed node or bare request.
143
110
 
144
- When `acstack/project.yaml` configures `frontend` and frontend files
145
- changed, the checker also runs the frontend build, lint, and unit
146
- tests.
111
+ - Choose useful checks before nontrivial edits
112
+ - Test, implement, format, and verify against requirements
113
+ - Get independent review when the shared policy requires it
114
+ - Read `design-pass.md` when the design gate is on and configured frontend files changed
115
+ - Delegate configured real-browser verification after the required gates pass
116
+ - Fix failures and repeat the affected checks
117
+ - Release a stalled claim (`--status open`) when the session must stop
147
118
 
148
- 5. **`/impeccable audit`** – report design findings on the changed frontend
149
- files. Steps 5 to 7 run only when three conditions hold: the design gate
150
- is on, `acstack/project.yaml` configures `frontend`, and frontend files
151
- changed.
152
-
153
- 6. **`/impeccable polish`** – fix the same files, from the audit findings.
154
-
155
- 7. **task-checker subagent, second run** – verify the code polish changed.
156
-
157
- Read `design-pass.md` before steps 5 to 7. It holds who types the
158
- commands, how to read the gate, and what polish must leave alone.
159
-
160
- 8. **frontend-verifier subagent** – verify the UI in a browser. The
161
- verifier runs after the second checker passes, only when
162
- `acstack/project.yaml` configures `frontend`, frontend files changed,
163
- and `workflow.frontend_verification` is true.
164
-
165
- `workflow.tdd.strict: false`, relaxed TDD, runs step 2 before step 1 and
166
- skips nothing. Read `relaxed-tdd.md` when the project sets it. It holds how
167
- the test-writer and the checker's gate change.
168
-
169
- If either checker run fails, route back to the executor with the feedback.
170
- If the work stalls or the session must stop mid-node, release the claim
171
- (`--status open`). The node is plainly open again, and you need no phase
172
- breadcrumb.
173
119
 
174
120
  **Decision log**: on afk nodes, append one row per decision point to
175
121
  `<main checkout>/acstack/.decisions/<name>.tsv`. A decision point is a fork chosen, a
@@ -178,14 +124,12 @@ unit verified, a revert, or a blocker.
178
124
  Read `decision-log.md` before the first row. It holds how to find the main
179
125
  checkout, the columns, and the `.gitignore` the directory needs.
180
126
 
181
- **Parallelism**: afk nodes run unlimited and in parallel. When 2+ frontier
182
- nodes touch non-overlapping files, launch an agent team where each teammate
183
- owns one node and its file set. Otherwise, or on a host without agent teams,
184
- work them sequentially.
127
+ **Parallelism**: use teams when independent nodes benefit from parallel work.
128
+ Assign non-overlapping files, and schedule shared-file changes sequentially.
185
129
 
186
130
  ### 6. Resolve
187
131
 
188
- When the checker passes, resolve the node in one call:
132
+ When required verification passes, resolve the node in one call:
189
133
 
190
134
  ```bash
191
135
  ~/.claude/acstack/bin/acstack node update <id> --map <name> --status resolved \
@@ -216,8 +160,7 @@ pass before claiming the next node.
216
160
  ### 8. Completion
217
161
 
218
162
  Stop when the afk frontier is empty, or when only `hitl` nodes remain (hand
219
- those to `/acstack:map`). With no map, stop when the checker passes and Step
220
- 7 verification is green.
163
+ those to `/acstack:map`). With no map, stop when required verification is green.
221
164
 
222
165
  Report: nodes resolved, tests passing, lines added/removed. Remind the user:
223
166
  `/acstack:commit` to commit – spec sync extracts the durable record from the
@@ -225,21 +168,11 @@ diff.
225
168
 
226
169
  ## Key rules
227
170
 
228
- - **TDD pipeline is mandatory** – test-writer -> task-executor ->
229
- task-checker -> frontend-verifier (frontend only). Only pure config work
230
- skips the test-writer.
231
- `workflow.tdd.strict: false` reorders the first two and skips neither.
232
-
233
- With the design gate on, the audit and polish pass and a second
234
- task-checker run sit between the first checker and the verifier
235
-
236
- - **Executors CANNOT modify test files** – if tests are wrong, report it.
237
- - **The tracker is the progress record** – claim on start, resolve on pass,
238
- release on stall. No checkbox files, no phase fields.
171
+ - Apply `orchestrator/AGENTS.md` as the shared verification policy
172
+ - Respect separate test ownership when chosen
173
+ - Claim on start, resolve after verification, and release on stall
174
+ - Investigate before editing, directly or through useful delegation
239
175
 
240
- - **Explore before writing** – parallel read-only codebase-search subagents
241
- over the relevant code, sized to the node, before any edit. Use `Explore` on
242
- Claude Code and `scout` on pi.
243
176
 
244
177
  - **Resume is a query** – picking up where you left off means asking the
245
178
  tracker what is workable now, not reconstructing history. A fresh session
@@ -9,7 +9,7 @@ row.
9
9
  Write one row per decision point, never one per action:
10
10
 
11
11
  - **A fork chosen** – two ways to build something, and you picked one
12
- - **A unit verified** – a node's checker passed, or a build verification went green
12
+ - **A unit verified** – a node's verification passed, or a build verification went green
13
13
  - **A revert** – you undid work, and the row names what triggered it
14
14
  - **A blocker** – something stopped the node, and the row names it
15
15
 
@@ -1,32 +1,170 @@
1
- # The audit and polish pass
1
+ # The design pass
2
2
 
3
- Step 5 in `SKILL.md` runs the pipeline in eight numbered steps. `SKILL.md`
4
- states when steps 5 to 7 run. This file holds how to run them.
3
+ The parent session owns audit and polish; frontend checks remain required even when the session delegates no task-checker.
5
4
 
6
- 5. **`/impeccable audit`** – report design findings on the changed frontend
7
- files. The audit edits nothing. It needs no browser.
5
+ ```mermaid
6
+ flowchart TD
7
+ P["Before UI edits<br/>Load design context"] --> A["Discover frontend files"]
8
+ A --> B["Run static checks and detector"]
9
+ B -->|clear| C["Parent session<br/>Audit"]
10
+ B -->|findings| F["Fix and recheck"]
11
+ F --> B
12
+ C --> D["Parent session<br/>Polish"]
13
+ D --> E["Recheck final code"]
14
+ E -->|failure| F
15
+ E -->|pass| G["Configured real-browser verification"]
16
+ ```
8
17
 
9
- You type the command yourself. impeccable's plugin loads it into your chat
10
- as a markdown playbook.
18
+ ## 0. Load design context before a UI edit (mandatory)
11
19
 
12
- Read the design gate with `~/.claude/acstack/bin/acstack design-gate`.
20
+ impeccable is a third-party design plugin. It holds the project's design context, meaning the files that state the design rules and the token definitions a UI file follows.
13
21
 
14
- The file list is the one the checker derived in its section 5.5, from
15
- `git status --porcelain -- <frontend.directory>`.
22
+ Load that context before your first edit under `frontend.directory`. Load it once per task.
16
23
 
17
- 6. **`/impeccable polish`** – fix the same files. Polish reads the audit
18
- findings as its backlog. It edits source.
24
+ **Check the design gate first**
19
25
 
20
- You type this command yourself too.
26
+ The design gate is the set of optional checks impeccable adds to acstack's pipeline. `workflow.design_review` in `acstack/project.yaml` turns the gate on. Ask acstack for the answer:
21
27
 
22
- Tell polish to leave a factual claim in copy untouched. Tell it to list
23
- every such claim in its report.
28
+ ```bash
29
+ ~/.claude/acstack/bin/acstack design-gate --json
30
+ ```
24
31
 
25
- Only `polish` runs from the audit's "Recommended Actions". Tell the audit
26
- to name each other command against the finding that earned it.
32
+ - exit code 0 means the gate is on
33
+ - exit code 1 means the gate is off
27
34
 
28
- Name `harden`, `clarify`, `adapt`, `optimize`, and `onboard` in your
29
- completion report, so the user can pick one later.
35
+ The command prints one JSON object:
30
36
 
31
- 7. **task-checker subagent, second run** – polish changed the code, so verify
32
- it again. This run happens only when polish ran.
37
+ ```json
38
+ {"on": true, "reasons": ["..."], "impeccable": {"version": "4.2.0", "launcher": "/abs/path/to/scripts/impeccable"}}
39
+ ```
40
+
41
+ The `impeccable` field holds the launcher path. It holds `null` only when the gate is off.
42
+
43
+ When the gate is off, edit exactly as you do today. Make no impeccable call, and skip the rest of this section.
44
+
45
+ **Load the context once per task**
46
+
47
+ When the gate is on, run the launcher path the JSON printed:
48
+
49
+ ```bash
50
+ <launcher> context --target <file>
51
+ ```
52
+
53
+ - `<launcher>` is the `impeccable.launcher` path from the design-gate JSON
54
+ - `context` is a verb of impeccable's bundled launcher binary, not of its npm command-line tool
55
+ - `<file>` is the first file you edit under `frontend.directory`
56
+
57
+ Run this command once for the whole task. impeccable's own skill says to follow the directives it prints and never to rerun the command.
58
+
59
+ **Directives you act on**
60
+
61
+ - `RESOLVED_CONTEXT` – JSON naming where the project's design files live, such as the token definitions you reuse
62
+
63
+ **Directives you report instead**
64
+
65
+ Each directive below asks for work you do not own. Put it in your report and carry on with the edit.
66
+
67
+ - `CONTEXT_STALE` – the loaded context is out of date. Never rerun `context`
68
+ - `NO_PRODUCT_MD` and `PRODUCT_INIT_REQUIRED` – both point at impeccable's `init`, which owns `PRODUCT.md`
69
+ - `INCUMBENT_WORLD_UNDOCUMENTED` and `WORLD_DISCOVERY_REQUIRED` – both point at impeccable's `document`, which owns `DESIGN.md`
70
+ - `UPDATE_AVAILABLE` – never run impeccable's `update` in the same turn, because it rewrites files this session is reading
71
+ - `MANUAL_DETECTOR_REQUIRED` – report it to the verification owner, who runs the detector under `skills/implement/design-pass.md`
72
+
73
+ **File ownership**
74
+
75
+ You never write `PRODUCT.md` or `DESIGN.md`. impeccable's `init` interviews the user and writes `PRODUCT.md`. acstack's sync skill runs impeccable's `document` at commit time, which refreshes `DESIGN.md`.
76
+
77
+ Edit only assigned files, including tests when the task assigns no separate test owner.
78
+
79
+ **impeccable checks the files you write**
80
+
81
+ impeccable installs its own PostToolUse hook, a check Claude Code runs right after a file write. The hook reads each UI file you write. You never run that check yourself.
82
+
83
+ ## 1. Discover frontend files
84
+
85
+ - Follow the shared Implementation discipline in `orchestrator/AGENTS.md`
86
+ - The verification owner gathers the file list, completes static checks, and handles the detector
87
+ - A delegated task-checker may own this work, but its presence is optional
88
+ - Read `acstack/project.yaml` before deriving paths
89
+ - This pass requires a configured `frontend`
90
+ - `frontend.directory` defaults to `frontend/` when omitted
91
+ - If the project configures no frontend, warn that `frontend.directory` is missing and skip this pass
92
+ - Derive one changed-file list for the checks, detector, audit, and polish
93
+
94
+ ```bash
95
+ git status --porcelain -- <frontend.directory>
96
+ ```
97
+
98
+ - Include modified, added, and untracked files (`??`)
99
+ - Drop paths carrying a `D` status because the detector cannot read deleted files
100
+ - Treat a missing directory or unmatched pathspec as an empty list
101
+ - Skip this pass when the list is empty
102
+ - Run configured frontend checks when the list contains files
103
+ - `frontend.commands.build`
104
+ - `frontend.commands.lint`
105
+ - `frontend.commands.test`
106
+ - Leave browser interaction to `frontend-verifier` after the required gates pass
107
+
108
+ ## 2. Run the design detector
109
+
110
+ - Check the design gate before running the detector
111
+
112
+ ```bash
113
+ ~/.claude/acstack/bin/acstack design-gate
114
+ ```
115
+
116
+ - Exit code 0 prints `on`
117
+ - Exit code 1 prints `off: <reason>`
118
+ - Record the gate state and skip the detector, audit, and polish when the gate is off
119
+ - When the gate is on, run the nonadvisory detector over the discovered file list
120
+ - The detector reads files without starting a browser
121
+ - It searches upward from each target for `DESIGN.md`
122
+
123
+ ```bash
124
+ npx impeccable detect --json --no-advisory <file> [<file>...]
125
+ ```
126
+
127
+ - Use this run to set the verdict
128
+ - Exit code 0 passes
129
+ - Exit code 2 fails verification
130
+ - Report each finding with its file and line, then send it to the implementation owner
131
+ - Any other exit code means the detector could not run
132
+ - Report a warning with the command output and continue verification
133
+ - Detector unavailability alone does not fail the task
134
+ - Run the advisory detector only after the nonadvisory run exits 0
135
+
136
+ ```bash
137
+ npx impeccable detect --json <file> [<file>...]
138
+ ```
139
+
140
+ - Use the same file list and report each `"advisory": true` finding as a note
141
+ - Omit the notes when none exist
142
+ - Advisory findings never change the verdict or require implementation changes
143
+ - Exit codes 0 and 2 hold usable advisory output
144
+ - Report other exit codes as advisory-run warnings and continue
145
+
146
+ ## 3. Audit and polish
147
+
148
+ - Run audit and polish only when the design gate is on and configured frontend files changed
149
+ - Complete applicable static checks and resolve detector failures before audit
150
+ - The parent session is the session directing this work, including direct implementation without delegation
151
+ - A delegated checker returns the discovered file list and findings to the parent without editing files
152
+ - The parent session must type `/impeccable audit` over the discovered file list
153
+ - Audit edits nothing and needs no browser
154
+ - Ask audit to name each recommended command against its finding
155
+ - The parent session must type `/impeccable polish` over the same files using the audit findings
156
+ - Slash playbooks expand only in the session that types them
157
+ - Leave factual claims in copy untouched during unattended polish
158
+ - Ask polish to list every factual claim it left alone
159
+ - Run only `polish` from the audit's recommended commands
160
+ - `harden`, `clarify`, `adapt`, `optimize`, and `onboard` require a human decision
161
+ - Repeat recommended command names with their findings in the completion report
162
+
163
+ ## 4. Recheck final code
164
+
165
+ - The parent sends polished code back to the independent checker when the workflow chose one
166
+ - The checker reruns affected tests, static checks, and the detector without editing files
167
+ - Without a delegated checker, the parent reruns those checks on the polished code
168
+ - Resolve failures before browser verification
169
+ - Delegate `frontend-verifier` on final code when the project enables configured browser verification
170
+ - Report actual checks and results, including detector warnings and advisory findings
@@ -176,13 +176,11 @@ the list, marked `skip: <reason>`.
176
176
  the node's diagram shape, never its route):
177
177
  - `hitl` nodes: run grilling rounds over them. A round is the whole hitl
178
178
  frontier.
179
- - `afk` nodes: claim and run without the user. Unlimited, and in parallel
180
- when independent. Research goes to read-only codebase-search subagents:
181
- `Explore` on Claude Code and `scout` on pi.
179
+ - `afk` nodes: claim and run without the user. Choose direct work or useful delegation
180
+ under the shared Implementation discipline in `orchestrator/AGENTS.md`.
182
181
 
183
182
  Implementation work follows `/acstack:implement`'s procedure – it owns
184
- the claim-execute-resolve flow, the explorer dispatch, and the TDD
185
- pipeline. Do not restate that flow here. Invoke it.
183
+ the claim-execute-resolve flow and adaptive verification. Do not restate that flow here. Invoke it.
186
184
 
187
185
  4. **Claim, then resolve** – `afk` nodes only. A `hitl` resolution happens
188
186
  inside the grilling round, with no claim step. Both are compositions over
@@ -196,8 +194,7 @@ the list, marked `skip: <reason>`.
196
194
  <what was decided or done, and why>"
197
195
  ```
198
196
 
199
- The pipeline's state lives inside the claim, not on the node – there is no
200
- phase field to maintain. If the work stalls or fails, release the claim
197
+ Work stays inside the claim, with no per-phase bookkeeping. If the work stalls or fails, release the claim
201
198
  (`--status open`) and the node is plainly open again.
202
199
 
203
200
  5. **After every resolution**, in order:
@@ -40,9 +40,9 @@ LLM decided to commit during autonomous work -> auto-fix.
40
40
 
41
41
  ```
42
42
  1. SNAPSHOT – collect the diff and understand what changed
43
- 2. DISCOVER – learn project conventions dynamically (parallel subagents)
44
- 3. REVIEW – analyze changes against conventions + best practices (parallel subagents)
45
- 4. ADJACENT – check surrounding code for related rot (parallel subagents)
43
+ 2. DISCOVER – learn project conventions dynamically
44
+ 3. REVIEW – analyze changes against conventions and requirements
45
+ 4. ADJACENT – check surrounding code for related rot
46
46
  5. REPORT – synthesize findings
47
47
  6. FIX – auto-fix or interactive proposal waves
48
48
  ```
@@ -69,15 +69,16 @@ Categorize changed files into scopes using the project configuration:
69
69
  - **tests**: files under `directories.tests` from project.yaml
70
70
  - **other**: everything else
71
71
 
72
- If no meaningful code changes exist (only docs, config, assets), report "No code changes to review" and exit. Run the prose lint from Step 3 before you exit, when Markdown files changed.
72
+ Judge changes by effect, including behavior changed through config, assets, or shipped guidance.
73
+ For nonbehavioral edits, review accuracy and run prose lint when Markdown changed.
73
74
 
74
75
  ## Step 2: DISCOVER – Learn project conventions (parallel)
75
76
 
76
- Launch **3 parallel read-only codebase-search subagents** to build a dynamic understanding of the project's current conventions.
77
- Use `Explore` on Claude Code and `scout` on pi.
78
- Do NOT hardcode conventions – discover them fresh each time.
77
+ Follow the shared Implementation discipline in `orchestrator/AGENTS.md` for delegation and required independent review.
78
+ Investigate these dimensions directly or through useful delegation.
79
+ Discover current conventions rather than hardcoding them.
79
80
 
80
- **Subagent A – Living Specs & Architecture:**
81
+ **Living specs and architecture:**
81
82
 
82
83
  ```
83
84
  Read the living specs relevant to this change:
@@ -88,7 +89,7 @@ Read the living specs relevant to this change:
88
89
  Report: list of project conventions and patterns relevant to these changes.
89
90
  ```
90
91
 
91
- **Subagent B – Codebase Patterns via Search:**
92
+ **Codebase patterns:**
92
93
 
93
94
  ```
94
95
  Search the codebase for established patterns related to the changes.
@@ -99,7 +100,7 @@ Identify: how does the rest of the codebase handle similar things?
99
100
  Report: established patterns, common approaches, naming conventions observed.
100
101
  ```
101
102
 
102
- **Subagent C – Local Context & Config:**
103
+ **Local context and configuration:**
103
104
 
104
105
  ```
105
106
  For each changed file, read:
@@ -109,15 +110,15 @@ For each changed file, read:
109
110
  Report: local conventions, related code patterns, existing abstractions nearby.
110
111
  ```
111
112
 
112
- Synthesize the three reports into a **convention profile** – the set of expectations
113
- review subagents measure changes against.
113
+ Synthesize findings into a convention profile for the review.
114
114
 
115
115
  ## Step 3: REVIEW – Analyze changes (parallel)
116
116
 
117
- Launch **3 parallel review subagents**, each examining a different quality dimension.
118
- Every subagent receives the diff AND the convention profile from Step 2.
117
+ Review every dimension below, directly or through useful delegation.
118
+ Give delegated reviewers the diff and the convention profile from Step 2.
119
+ Assess coverage against requirements instead of assuming a task-checker already assessed it.
119
120
 
120
- **Subagent 1 – Hardcodes & SSOT:**
121
+ **Hardcodes and single source of truth:**
121
122
 
122
123
  ```
123
124
  Examine the diff for:
@@ -132,7 +133,7 @@ For each finding, report:
132
133
  FILE:LINE | SEVERITY (MUST/SHOULD/CONSIDER) | WHAT | WHY | SUGGESTED FIX
133
134
  ```
134
135
 
135
- **Subagent 2 – Scalability & Readability:**
136
+ **Scalability and readability:**
136
137
 
137
138
  ```
138
139
  Examine the diff for:
@@ -148,7 +149,7 @@ For each finding, report:
148
149
  FILE:LINE | SEVERITY (MUST/SHOULD/CONSIDER) | WHAT | WHY | SUGGESTED FIX
149
150
  ```
150
151
 
151
- **Subagent 3 – Edge Cases & Robustness:**
152
+ **Edge cases and failure handling:**
152
153
 
153
154
  ```
154
155
  Examine the diff for:
@@ -178,9 +179,8 @@ Add each finding to the review as `SHOULD | PROSE`, at the `file:line` it names.
178
179
 
179
180
  ## Step 4: ADJACENT – Check surrounding code for rot
180
181
 
181
- For each file with findings from Step 3, launch a **read-only codebase-search subagent**.
182
- Use up to 3 subagents in parallel.
183
- Each subagent examines the rest of that file and its immediate imports for the same categories of issue.
182
+ For each file with findings, examine the surrounding code and immediate imports for related issues.
183
+ Delegate when useful, with non-overlapping scopes.
184
184
 
185
185
  ```
186
186
  File [path] has these issues in the changed code: [summary].
@@ -197,7 +197,7 @@ same module, or same pattern). Stay narrowly scoped.
197
197
 
198
198
  ## Step 5: REPORT – Synthesize findings
199
199
 
200
- Merge all subagent findings. Deduplicate. Sort by:
200
+ Merge all findings. Deduplicate. Sort by:
201
201
 
202
202
  1. MUST FIX (correctness, security, will-break-in-prod)
203
203
  2. SHOULD FIX (convention violations, readability, maintainability)
@@ -212,7 +212,7 @@ For each finding, make sure it has:
212
212
  - Why it matters (1 sentence)
213
213
  - Suggested fix (concrete, actionable – code snippet or approach)
214
214
 
215
- If any finding needs deeper analysis to determine the right fix, launch a **planning subagent**:
215
+ If a finding needs deeper analysis, investigate directly or delegate with this brief:
216
216
 
217
217
  ```
218
218
  This code has [problem]. The file is [path]. Here's the surrounding context: [context].
@@ -233,11 +233,11 @@ Consider: does a fix here require changes in other files? What's the minimal cha
233
233
  | SHOULD | Violates conventions, hurts maintainability, tech debt | SSOT violations, unclear naming, missing error handling on I/O |
234
234
  | CONSIDER | Improvement opportunity, not urgent | Adjacent rot, minor style, could-be-cleaner patterns |
235
235
 
236
- ## What this skill does not check
236
+ ## Review responsibilities and tool checks
237
237
 
238
238
  - **Formatting/style** – linters and formatters handle this
239
239
  - **Type errors** – typecheckers handle this
240
- - **Test coverage** – task-checker handles this
240
+ - Assess test adequacy under the shared Implementation discipline, even when no task-checker ran
241
241
  - **UI rendering** – frontend-verify handles this
242
242
  - **Security scanning** – dedicated security tools handle credentials in committed code
243
243
 
@@ -4,7 +4,7 @@ Step 6 of `SKILL.md` in auto-fix mode.
4
4
 
5
5
  For each finding (MUST first, then SHOULD, then CONSIDER):
6
6
 
7
- 1. Launch a **task-executor subagent** with the finding + suggested fix
7
+ 1. Apply the shared Implementation discipline in `orchestrator/AGENTS.md` to the finding, directly or through a task-executor
8
8
  2. Verify the fix doesn't break anything (run lint, typecheck, and test commands from project.yaml)
9
9
  3. If fix breaks something, revert and try alternate approach
10
10
  4. Move to next finding
@@ -30,6 +30,6 @@ Reply with numbers to fix (e.g., "1,2,4") or "all" or "skip all", and any notes
30
30
 
31
31
  After user responds:
32
32
 
33
- - Fix selected items via task-executor subagents (parallelize independent fixes)
33
+ - Fix selected items under the shared Implementation discipline in `orchestrator/AGENTS.md`, directly or through useful delegation
34
34
  - Present next wave if more findings remain
35
35
  - Continue until all findings addressed or user says "done" / "skip the rest"
@@ -18,9 +18,9 @@ If `$ARGUMENTS` is empty, ask the user to describe what's broken.
18
18
 
19
19
  ## Before you start
20
20
 
21
- Copy the seven step headings below into your todo list word for word. They go ahead of any task-specific items. A step you skip stays in the list, marked `skip: <reason>`.
21
+ Read the shared Implementation discipline in `orchestrator/AGENTS.md`.
22
+ Choose checks and delegation under that policy while investigating the bug.
22
23
 
23
- When Step 5 runs, copy its four numbered steps the same way.
24
24
 
25
25
  ## Step 1: Understand the problem
26
26
 
@@ -37,11 +37,11 @@ If the user provided an error message or stack trace, note the key details (file
37
37
 
38
38
  ## Step 2: Explore the codebase
39
39
 
40
- **Do NOT skip this step.** Delegate exploration to subagents:
40
+ Investigate directly or delegate when another agent improves confidence:
41
41
 
42
- 1. **Locate the code**: Launch a read-only codebase-search subagent to find the files involved. Use `Explore` on Claude Code and `scout` on pi. Read only a file you can already name.
42
+ 1. **Locate the code**: Find the files involved, including existing regression coverage
43
43
 
44
- 2. **Read the integration points**: Have the subagent read the broken function's callers and callees, not just the function. Understand:
44
+ 2. **Read the integration points**: Read the broken function's callers and callees, not just the function:
45
45
  - What calls this code? (upstream)
46
46
  - What does this code call? (downstream)
47
47
  - What data flows through it? (inputs/outputs)
@@ -69,7 +69,7 @@ Based on the exploration, identify the root cause – not just the symptom.
69
69
  Bad: "The function returns null" (symptom).
70
70
  Good: "The function returns null because the query filter uses `org_id`, but the test user's org isn't in the result set" (root cause).
71
71
 
72
- If the root cause isn't clear after exploration, escalate to deeper investigation with parallel debug subagents. Don't guess.
72
+ If the root cause remains unclear, investigate further or seek independent help rather than guessing.
73
73
 
74
74
  ## Step 4: Plan the fix
75
75
 
@@ -83,12 +83,14 @@ If the fix touches more than 3 files, pause. Confirm the scope with the user –
83
83
 
84
84
  ## Step 5: Implement via the Implementation discipline
85
85
 
86
- Follow the standard pipeline:
86
+ Apply the shared policy to the minimal fix.
87
+
88
+ - Reproduce the bug with a failing regression test before fixing it when practical
89
+ - Confirm the intended failure, then implement the fix
90
+ - Explain any departure from tests-first work
91
+ - Preserve regression protection and separate test ownership when chosen
92
+ - Follow `../implement/design-pass.md` when its frontend design gate applies
87
93
 
88
- 1. **test-writer** – Write a failing test that reproduces the problem (if testable behavior exists). Skip for pure config/infra fixes.
89
- 2. **task-executor** – Implement the minimal fix to make the test pass. Executor CANNOT modify test files.
90
- 3. **task-checker** – Verify: task tests pass, full suite passes, test count >= baseline, no regressions.
91
- 4. **frontend-verify** – Only if the fix touches frontend files (check `frontend.directory` in project.yaml).
92
94
 
93
95
  ## Step 6: Verify
94
96
 
@@ -99,15 +101,9 @@ Run build verification using commands from `acstack/project.yaml`:
99
101
  # Read these from project.yaml – do not hardcode
100
102
  ```
101
103
 
102
- **STOP – if the fix touches frontend files, you MUST visually verify before proceeding to Step 7.**
103
-
104
- If the project has a frontend verification agent or browser verification configured, use them. Otherwise, take a browser screenshot and think through:
105
-
106
- 1. **Expected vs actual** – What should the change look like? Does the screenshot match?
107
- 2. **Gaps** – Is anything missing, wrong, or showing the wrong data/labels/formatting?
108
- 3. **General UX** – Anything weird? Overlapping elements, bad spacing, truncation, unprofessional appearance?
104
+ Use the configured frontend gates under the shared policy.
105
+ Do not proceed with failed required checks or unverified configured browser behavior.
109
106
 
110
- If verification finds a problem, fix it. Verify again. Do NOT proceed to Step 7 with unverified frontend changes.
111
107
 
112
108
  ## Step 7: Report
113
109
 
@@ -118,8 +114,10 @@ Problem: <one-line description>
118
114
  Root cause: <what was actually wrong>
119
115
  Fix: <what changed and why>
120
116
  Files modified: <list>
121
- Tests: <added/modified/passing>
122
- Regressions: none
117
+ Verification: <actual commands and results>
118
+ Blocked checks: <checks that could not run and why, or none>
119
+ Missing regression protection: <behavior left unprotected, or none identified>
120
+ Remaining risks: <known risks and uncertainty, or none identified>
123
121
  ```
124
122
 
125
- Remind the user to `/commit` when they're satisfied.
123
+ Remind the user to `/acstack:commit` when they're satisfied.