@fro.bot/systematic 2.7.2 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/agents/design/design-implementation-reviewer.md +0 -1
  2. package/agents/design/design-iterator.md +0 -1
  3. package/agents/design/figma-design-sync.md +0 -1
  4. package/agents/docs/ankane-readme-writer.md +0 -1
  5. package/agents/document-review/adversarial-document-reviewer.md +0 -1
  6. package/agents/document-review/coherence-reviewer.md +0 -1
  7. package/agents/document-review/design-lens-reviewer.md +0 -1
  8. package/agents/document-review/feasibility-reviewer.md +0 -1
  9. package/agents/document-review/product-lens-reviewer.md +0 -1
  10. package/agents/document-review/scope-guardian-reviewer.md +0 -1
  11. package/agents/document-review/security-lens-reviewer.md +0 -1
  12. package/agents/research/best-practices-researcher.md +0 -1
  13. package/agents/research/framework-docs-researcher.md +0 -1
  14. package/agents/research/git-history-analyzer.md +0 -1
  15. package/agents/research/issue-intelligence-analyst.md +0 -1
  16. package/agents/research/learnings-researcher.md +0 -1
  17. package/agents/research/repo-research-analyst.md +0 -1
  18. package/agents/research/slack-researcher.md +0 -1
  19. package/agents/review/adversarial-reviewer.md +0 -1
  20. package/agents/review/agent-native-reviewer.md +0 -1
  21. package/agents/review/api-contract-reviewer.md +0 -1
  22. package/agents/review/architecture-strategist.md +0 -1
  23. package/agents/review/cli-agent-readiness-reviewer.md +0 -1
  24. package/agents/review/cli-readiness-reviewer.md +0 -1
  25. package/agents/review/code-simplicity-reviewer.md +0 -1
  26. package/agents/review/correctness-reviewer.md +0 -1
  27. package/agents/review/data-integrity-guardian.md +0 -1
  28. package/agents/review/data-migration-expert.md +0 -1
  29. package/agents/review/data-migrations-reviewer.md +0 -1
  30. package/agents/review/deployment-verification-agent.md +0 -1
  31. package/agents/review/dhh-rails-reviewer.md +0 -1
  32. package/agents/review/julik-frontend-races-reviewer.md +0 -1
  33. package/agents/review/kieran-python-reviewer.md +0 -1
  34. package/agents/review/kieran-rails-reviewer.md +0 -1
  35. package/agents/review/kieran-typescript-reviewer.md +0 -1
  36. package/agents/review/maintainability-reviewer.md +0 -1
  37. package/agents/review/pattern-recognition-specialist.md +0 -1
  38. package/agents/review/performance-oracle.md +0 -1
  39. package/agents/review/performance-reviewer.md +0 -1
  40. package/agents/review/previous-comments-reviewer.md +0 -1
  41. package/agents/review/project-standards-reviewer.md +0 -1
  42. package/agents/review/reliability-reviewer.md +0 -1
  43. package/agents/review/schema-drift-detector.md +0 -1
  44. package/agents/review/security-reviewer.md +0 -1
  45. package/agents/review/security-sentinel.md +0 -1
  46. package/agents/review/testing-reviewer.md +0 -1
  47. package/agents/workflow/bug-reproduction-validator.md +0 -1
  48. package/agents/workflow/lint.md +0 -1
  49. package/agents/workflow/pr-comment-resolver.md +0 -1
  50. package/agents/workflow/spec-flow-analyzer.md +0 -1
  51. package/agents/workflow/systematic-implementer.md +39 -0
  52. package/package.json +1 -1
  53. package/skills/ce-work/SKILL.md +12 -1
  54. package/skills/writing-systematic-skills/SKILL.md +10 -6
  55. package/skills/writing-systematic-skills/references/foundation-conventions.md +11 -5
  56. package/skills/ce-work-beta/SKILL.md +0 -416
  57. package/skills/ce-work-beta/references/codex-delegation-workflow.md +0 -327
  58. package/skills/ce-work-beta/references/shipping-workflow.md +0 -129
@@ -1,327 +0,0 @@
1
- # Codex Delegation Workflow
2
-
3
- When `delegation_active` is true, code implementation is delegated to the Codex CLI (`codex exec`) instead of being implemented directly. The orchestrating OpenCode agent retains control of planning, review, git operations, and orchestration.
4
-
5
- ## Delegation Decision
6
-
7
- If `work_delegate_decision` is `ask`, present the recommendation and wait for the user's choice before proceeding.
8
-
9
- **When recommending Codex delegation:**
10
-
11
- > "Codex delegation active. [N] implementation units -- delegating in one batch."
12
- > 1. Delegate to Codex *(recommended)*
13
- > 2. Execute with OpenCode instead
14
-
15
- **When recommending Codex delegation, multiple batches:**
16
-
17
- > "Codex delegation active. [N] implementation units -- delegating in [X] batches."
18
- > 1. Delegate to Codex *(recommended)*
19
- > 2. Execute with OpenCode instead
20
-
21
- **When recommending OpenCode (all units are trivial):**
22
-
23
- > "Codex delegation active, but these are small changes where the cost of delegating outweighs having OpenCode do them."
24
- > 1. Execute with OpenCode *(recommended)*
25
- > 2. Delegate to Codex anyway
26
-
27
- If the user chooses the delegation option, proceed to Pre-Delegation Checks below. If the user chooses the OpenCode option, set `delegation_active` to false and return to standard execution in the parent skill.
28
-
29
- If `work_delegate_decision` is `auto` (the default), state the execution plan in one line and proceed without waiting: "Codex delegation active. Delegating [N] units in [X] batch(es)." If all units are trivial, set `delegation_active` to false and proceed: "Codex delegation active. All units are trivial -- executing with OpenCode."
30
-
31
- ## Pre-Delegation Checks
32
-
33
- Run these checks **once before the first batch**. If any check fails, fall back to standard mode for the remainder of the plan execution. Do not re-run on subsequent batches.
34
-
35
- **0. Platform Gate**
36
-
37
- Codex delegation is only supported when the orchestrating agent is running in OpenCode. If the current session is Codex, Gemini CLI, OpenCode, or any other platform, set `delegation_active` to false and proceed in standard mode.
38
-
39
- **1. Environment Guard**
40
-
41
- Check whether the current agent is already running inside a Codex sandbox:
42
-
43
- ```bash
44
- if [ -n "$CODEX_SANDBOX" ] || [ -n "$CODEX_SESSION_ID" ]; then
45
- echo "inside_sandbox=true"
46
- else
47
- echo "inside_sandbox=false"
48
- fi
49
- ```
50
-
51
- If `inside_sandbox` is true, delegation would recurse or fail.
52
-
53
- - If `delegation_source` is `argument`: emit "Already inside Codex sandbox -- using standard mode." and set `delegation_active` to false.
54
- - If `delegation_source` is `config` or `default`: set `delegation_active` to false silently.
55
-
56
- **2. Availability Check**
57
-
58
- **Codex availability (pre-resolved):**
59
- !`command -v codex >/dev/null 2>&1 && echo "CODEX_AVAILABLE" || echo "CODEX_NOT_FOUND"`
60
-
61
- If the line above shows `CODEX_AVAILABLE`, proceed to the next check.
62
- If it shows `CODEX_NOT_FOUND`, the Codex CLI is not installed. Emit "Codex CLI not found (install via `npm install -g @openai/codex` or `brew install codex`) -- using standard mode." and set `delegation_active` to false.
63
- If it shows an unresolved command string, run `command -v codex` using a shell tool. If the command prints a path, proceed. If it fails or prints nothing, emit the same message and set `delegation_active` to false.
64
-
65
- **3. Consent Flow**
66
-
67
- If `consent_granted` is not true (from config `work_delegate_consent`):
68
-
69
- Present a one-time consent warning using the platform's blocking question tool (`question` in OpenCode, `request_user_input` in Codex, `ask_user` in Gemini, `ask_user` in Pi (requires the `pi-ask-user` extension)). The consent warning explains:
70
- - Delegation sends implementation units to `codex exec` as a structured prompt
71
- - **yolo mode** (`--yolo`): Full system access including network. Required for verification steps that run tests or install dependencies. **Recommended.**
72
- - **full-auto mode** (`--full-auto`): Workspace-write sandbox, no network access.
73
-
74
- Present the sandbox mode choice: (1) yolo (recommended), (2) full-auto.
75
-
76
- On acceptance:
77
- - Resolve the repo root: `git rev-parse --show-toplevel`. Write `work_delegate_consent: true` and `work_delegate_sandbox: <chosen-mode>` to `<repo-root>/.systematic/config.local.yaml`
78
- - To write: (1) if file or directory does not exist, create `<repo-root>/.systematic/` and write the YAML file; (2) if file exists, merge new keys preserving existing keys
79
- - Update `consent_granted` and `sandbox_mode` in the resolved state
80
-
81
- On decline:
82
- - Ask whether to disable delegation entirely for this project
83
- - If yes: write `work_delegate: false` to `<repo-root>/.systematic/config.local.yaml` (using the same repo root resolved above). To write: (1) if file or directory does not exist, create `<repo-root>/.systematic/` and write the YAML file; (2) if file exists, merge new keys preserving existing keys. Set `delegation_active` to false, proceed in standard mode
84
- - If no: set `delegation_active` to false for this invocation only, proceed in standard mode
85
-
86
- **Headless consent:** If running in a headless or non-interactive context, delegation proceeds only if `work_delegate_consent` is already `true` in the config file. If consent is not recorded, set `delegation_active` to false silently.
87
-
88
- ## Batching
89
-
90
- Delegate all units in one batch. If the plan exceeds 5 units, split into batches at the plan's own phase boundaries, or in groups of roughly 5 -- never splitting units that share files. Skip delegation entirely if every unit is trivial.
91
-
92
- ## Prompt Template
93
-
94
- At the start of delegated execution, create a per-run OS-temp scratch directory via `mktemp -d` and capture its **absolute path** for all downstream use. All scratch files for this invocation live under that directory. Do not use `.context/` — these scratch files are per-run throwaway that get cleaned up when delegated execution ends (see Cleanup below), matching the repo Scratch Space convention for one-shot artifacts. Do not pass unresolved shell-variable strings to non-shell tools (Write, Read); use the absolute path returned by `mktemp -d`.
95
-
96
- ```bash
97
- SCRATCH_DIR="$(mktemp -d -t ce-work-codex-XXXXXX)"
98
- echo "$SCRATCH_DIR"
99
- ```
100
-
101
- Refer to the echoed absolute path as `<scratch-dir>` throughout the rest of this workflow.
102
-
103
- Before each batch, write a prompt file to `<scratch-dir>/prompt-batch-<batch-num>.md`.
104
-
105
- Build the prompt from the batch's implementation units using these XML-tagged sections:
106
-
107
- ```xml
108
- <task>
109
- [For a single-unit batch: Goal from the implementation unit.
110
- For a multi-unit batch: list each unit with its Goal, stating the concrete
111
- job, repository context, and expected end state for each.]
112
- </task>
113
-
114
- <files>
115
- [Combined file list from all units in the batch -- files to create, modify, or read.]
116
- </files>
117
-
118
- <patterns>
119
- [File paths from all units' "Patterns to follow" fields. If no patterns:
120
- "No explicit patterns referenced -- follow existing conventions in the
121
- modified files."]
122
- </patterns>
123
-
124
- <approach>
125
- [For a single-unit batch: Approach from the unit.
126
- For a multi-unit batch: list each unit's approach, noting dependencies
127
- and suggested ordering.]
128
- </approach>
129
-
130
- <constraints>
131
- - Do NOT run git commit, git push, or create PRs -- the orchestrating agent handles all git operations
132
- - Restrict all modifications to files within the repository root
133
- - Keep changes tightly scoped to the stated task -- avoid unrelated refactors, renames, or cleanup
134
- - Resolve the task fully before stopping -- do not stop at the first plausible answer
135
- - If you discover mid-execution that you need to modify files outside the repo root, complete what you can within the repo and report what you could not do via the result schema issues field
136
- </constraints>
137
-
138
- <testing>
139
- Before writing tests, check whether the plan's test scenarios cover all
140
- categories that apply to each unit. Supplement gaps before writing tests:
141
- - Happy path: core input/output pairs from each unit's goal
142
- - Edge cases: boundary values, empty/nil inputs, type mismatches
143
- - Error/failure paths: invalid inputs, permission denials, downstream failures
144
- - Integration: cross-layer scenarios that mocks alone won't prove
145
-
146
- Write tests that name specific inputs and expected outcomes. If your changes
147
- touch code with callbacks, middleware, or event handlers, verify the
148
- interaction chain works end-to-end.
149
- </testing>
150
-
151
- <verify>
152
- After implementing, run ALL test files together in a single command (not
153
- per-file). Cross-file contamination (e.g., mocked globals leaking between
154
- test files) only surfaces when tests run in the same process. If tests
155
- fail, fix the issues and re-run until they pass. Do not report status
156
- "completed" unless verification passes. This is your responsibility --
157
- the orchestrator will not re-run verification independently.
158
-
159
- [Test and lint commands from the project. Use the union of all units'
160
- verification commands as a single combined invocation.]
161
- </verify>
162
-
163
- <output_contract>
164
- Report your result via the --output-schema mechanism. Fill in every field:
165
- - status: "completed" ONLY if all changes were made AND verification passes,
166
- "partial" if incomplete, "failed" if no meaningful progress
167
- - files_modified: array of file paths you changed
168
- - issues: array of strings describing any problems, gaps, or out-of-scope
169
- work discovered
170
- - summary: one-paragraph description of what was done
171
- - verification_summary: what you ran to verify (command and outcome).
172
- Example: "Ran `bun test` -- 14 tests passed, 0 failed."
173
- If no verification was possible, say why.
174
- </output_contract>
175
- ```
176
-
177
- ## Result Schema
178
-
179
- Write the result schema to `<scratch-dir>/result-schema.json` (using the absolute path captured at the start) once at the start of delegated execution:
180
-
181
- ```json
182
- {
183
- "type": "object",
184
- "properties": {
185
- "status": { "enum": ["completed", "partial", "failed"] },
186
- "files_modified": { "type": "array", "items": { "type": "string" } },
187
- "issues": { "type": "array", "items": { "type": "string" } },
188
- "summary": { "type": "string" },
189
- "verification_summary": { "type": "string" }
190
- },
191
- "required": ["status", "files_modified", "issues", "summary", "verification_summary"],
192
- "additionalProperties": false
193
- }
194
- ```
195
-
196
- Each batch's result is written to `<scratch-dir>/result-batch-<batch-num>.json` via the `-o` flag. On plan failure, files are left in place for debugging.
197
-
198
- If the result JSON is absent or malformed after a successful exit code, classify as task failure.
199
-
200
- ## Execution Loop
201
-
202
- Initialize a `consecutive_failures` counter at 0 before the first batch.
203
-
204
- **Clean-baseline preflight:** Before the first batch, verify there are no uncommitted changes to tracked files:
205
-
206
- ```bash
207
- git diff --quiet HEAD
208
- ```
209
-
210
- This intentionally ignores untracked files. Only staged or unstaged modifications to tracked files make rollback unsafe. However, if untracked files exist at paths in the batch's planned Files list, rollback (`git clean -fd -- <paths>`) would delete them. If such overlaps are detected, warn the user and recommend committing or stashing those files before proceeding.
211
-
212
- If tracked files are dirty, stop and present options: (1) commit current changes, (2) stash explicitly (`git stash push -m "pre-delegation"`), (3) continue in standard mode (sets `delegation_active` to false). Do not auto-stash user changes.
213
-
214
- **Delegation invocation:** For each batch, execute these as **separate Bash tool calls** (not combined into one):
215
-
216
- **Step A — Launch (background, separate Bash call):**
217
-
218
- Write the prompt file, then make a single Bash tool call with `run_in_background: true` set on the tool parameter. This call returns immediately and has no timeout ceiling.
219
-
220
- Substitute the literal absolute path captured at setup for every `<scratch-dir>` below. Each Bash tool call starts a fresh shell, so the `$SCRATCH_DIR` variable from the setup snippet is not preserved — an unresolved `$SCRATCH_DIR` would expand empty and break result detection.
221
-
222
- ```bash
223
- # Substitute the resolved sandbox_mode value (yolo or full-auto) from the skill state
224
- SANDBOX_MODE="<sandbox_mode>"
225
-
226
- # Resolve sandbox flag
227
- if [ "$SANDBOX_MODE" = "full-auto" ]; then
228
- SANDBOX_FLAG="--full-auto"
229
- else
230
- SANDBOX_FLAG="--dangerously-bypass-approvals-and-sandbox"
231
- fi
232
-
233
- codex exec \
234
- $SANDBOX_FLAG \
235
- --output-schema "<scratch-dir>/result-schema.json" \
236
- -o "<scratch-dir>/result-batch-<batch-num>.json" \
237
- - < "<scratch-dir>/prompt-batch-<batch-num>.md"
238
- ```
239
-
240
- **Conditional flags** — only include each line when the corresponding skill-state value is set:
241
-
242
- - If `delegate_model` is set, insert ` -m "<delegate_model>" \` as a line before `$SANDBOX_FLAG`.
243
- - If `delegate_effort` is set, insert ` -c 'model_reasoning_effort="<delegate_effort>"' \` as a line before `$SANDBOX_FLAG`.
244
-
245
- When either value is unset, omit its line entirely — Codex resolves the default from the user's `~/.codex/config.toml` (and ultimately the CLI's own built-in default). Do not substitute a placeholder string for unset values.
246
-
247
- Critical: `run_in_background: true` must be set as a **Bash tool parameter**, not as a shell `&` suffix. The tool parameter is what removes the timeout ceiling. A shell `&` inside a foreground Bash call still hits the 2-minute default timeout.
248
-
249
- Quoting is critical for the `-c` flag when present: use single quotes around the entire key=value and double quotes around the TOML string value inside. Example: `-c 'model_reasoning_effort="high"'`.
250
-
251
- Do not improvise CLI flags or modify this invocation template beyond the documented conditional insertions.
252
-
253
- **Step B — Poll (foreground, separate Bash calls):**
254
-
255
- After the launch call returns, make a **new, separate** foreground Bash tool call that polls for the result file. This keeps the agent's turn active so the user cannot interfere with the working tree.
256
-
257
- Substitute the literal absolute path captured at setup for `<scratch-dir>`. The shell variable from Step A does not survive across separate Bash tool calls.
258
-
259
- ```bash
260
- RESULT_FILE="<scratch-dir>/result-batch-<batch-num>.json"
261
- for i in $(seq 1 6); do
262
- test -s "$RESULT_FILE" && echo "DONE" && exit 0
263
- sleep 10
264
- done
265
- echo "Waiting for Codex..."
266
- ```
267
-
268
- If the output is "Waiting for Codex...", issue the same polling command again as another separate Bash call. Repeat until the output is "DONE", then read the result file and proceed to classification.
269
-
270
- **Polling termination conditions:** Stop polling when any of these conditions is met:
271
-
272
- - **Result file appears** (output is "DONE") -- proceed to result classification normally.
273
- - **Background process exits with non-zero code** -- classify as CLI failure (row 1). Rollback and fall back to standard mode.
274
- - **Background process exits with zero code but result file is absent** -- classify as task failure (row 2: exit 0, result JSON missing). Rollback and increment `consecutive_failures`.
275
- - **5 polling rounds** elapse (~5 minutes) without the result file appearing and without a background process notification -- treat as a hung process. Classify as CLI failure (row 1). Rollback and fall back to standard mode.
276
-
277
- **Result classification:** Codex is responsible for running verification internally and fixing failures before reporting -- the orchestrator does not re-run verification independently.
278
-
279
- | # | Signal | Classification | Action |
280
- |---|--------|---------------|--------|
281
- | 1 | Exit code != 0 | CLI failure | Rollback to HEAD. Fall back to standard mode for ALL remaining work. |
282
- | 2 | Exit code 0, result JSON missing or malformed | Task failure | Rollback to HEAD. Increment `consecutive_failures`. |
283
- | 3 | Exit code 0, `status: "failed"` | Task failure | Rollback to HEAD. Increment `consecutive_failures`. |
284
- | 4 | Exit code 0, `status: "partial"` | Partial success | Keep the diff. Complete remaining work locally, verify, and commit. Increment `consecutive_failures`. |
285
- | 5 | Exit code 0, `status: "completed"` | Success | Commit changes. Reset `consecutive_failures` to 0. |
286
-
287
- **Result handoff — surface to user:** After reading the result JSON and before committing or rolling back, display a summary so the user sees what happened. Format:
288
-
289
- > **Codex batch <batch-num> — <classification>**
290
- > <summary from result JSON>
291
- >
292
- > **Files:** <comma-separated list from files_modified>
293
- > **Verification:** <verification_summary from result JSON>
294
- > **Issues:** <issues list, or "None">
295
-
296
- On failure or partial results, include the classification reason (e.g., "status: failed", "result JSON missing") so the user understands why the orchestrator is rolling back or completing locally.
297
-
298
- Keep this brief — the goal is transparency, not a wall of text. One short block per batch.
299
-
300
- **Rollback procedure:**
301
-
302
- ```bash
303
- git checkout -- .
304
- git clean -fd -- <paths from the batch's combined Files list>
305
- ```
306
-
307
- Do NOT use bare `git clean -fd` without path arguments.
308
-
309
- **Commit on success:**
310
-
311
- ```bash
312
- git add $(git diff --name-only HEAD; git ls-files --others --exclude-standard)
313
- git commit -m "feat(<scope>): <batch summary>"
314
- ```
315
-
316
- **Between batches** (plans split into multiple batches): Report what completed, test results, and what's next. Continue immediately unless the user intervenes -- the checkpoint exists so the user *can* steer, not so they *must*.
317
-
318
- **Circuit breaker:** After 3 consecutive failures, set `delegation_active` to false and emit: "Codex delegation disabled after 3 consecutive failures -- completing remaining units in standard mode."
319
-
320
- **Scratch cleanup:** No explicit cleanup needed — OS temp handles eventual cleanup (macOS `$TMPDIR` periodic purge; Linux/WSL `/tmp` reboot or periodic cleanup). Leaving `<scratch-dir>` in place after the run also preserves intermediate artifacts for debugging if anything went wrong.
321
-
322
- ## Mixed-Model Attribution
323
-
324
- When some units are executed by Codex and others locally:
325
- - If all units used delegation: attribute to the Codex model
326
- - If all units used standard mode: attribute to the current agent's model
327
- - If mixed: note which units were delegated in the PR description and credit both models
@@ -1,129 +0,0 @@
1
- # Shipping Workflow
2
-
3
- This file contains the shipping workflow (Phase 3-4). Load it only when all Phase 2 tasks are complete and execution transitions to quality check.
4
-
5
- ## Phase 3: Quality Check
6
-
7
- 1. **Run Core Quality Checks**
8
-
9
- Always run before submitting:
10
-
11
- ```bash
12
- # Run full test suite (use project's test command)
13
- # Examples: bin/rails test, npm test, pytest, go test, etc.
14
-
15
- # Run linting (per AGENTS.md)
16
- # Use linting-agent before pushing to origin
17
- ```
18
-
19
- 2. **Code Review** (REQUIRED)
20
-
21
- Every change gets reviewed before shipping. The depth scales with the change's risk profile, but review itself is never skipped.
22
-
23
- **Tier 2: Full review (default)** -- REQUIRED unless Tier 1 criteria are explicitly met. Invoke the `ce-code-review` skill with `mode:autofix` to run specialized reviewer agents, auto-apply safe fixes, and record residual downstream work in the per-run artifact. When the plan file path is known, pass it as `plan:<path>`. This is the mandatory default -- proceed to Tier 1 only after confirming every criterion below.
24
-
25
- **Tier 1: Inline self-review** -- A lighter alternative permitted only when **all four** criteria are true. Before choosing Tier 1, explicitly state which criteria apply and why. If any criterion is uncertain, use Tier 2.
26
- - Purely additive (new files only, no existing behavior modified)
27
- - Single concern (one skill, one component -- not cross-cutting)
28
- - Pattern-following (implementation mirrors an existing example with no novel logic)
29
- - Plan-faithful (no scope growth, no deferred questions resolved with surprising answers)
30
-
31
- 3. **Residual Work Gate** (REQUIRED when Tier 2 ran)
32
-
33
- After Tier 2 code review completes, inspect the Residual Actionable Work summary it returned (or read the run artifact directly if the summary was not emitted). If one or more residual `downstream-resolver` findings remain, do not proceed to Final Validation until the user decides how to handle them.
34
-
35
- Ask the user using the platform's blocking question tool (`question` in OpenCode with `ToolSearch select:question` pre-loaded if needed, `request_user_input` in Codex, `ask_user` in Gemini, `ask_user` in Pi (requires the `pi-ask-user` extension)). Fall back to numbered options in chat only when the harness genuinely lacks a blocking tool. Never silently skip the gate.
36
-
37
- Stem: `Code review found N residual finding(s) the skill did not auto-fix. How should the agent proceed?`
38
-
39
- Options (four or fewer, self-contained labels):
40
- - `Apply/fix now` — loop back into review with focused fixes; the agent investigates each finding, applies changes where safe, and re-runs review.
41
- - `File tickets via project tracker` — load `references/tracker-defer.md` in Interactive mode; the agent files tickets in the project's detected tracker (or `gh` fallback, or leaves them in the report if no sink exists) and proceeds to Final Validation.
42
- - `Accept and proceed` — record the residual findings verbatim in a durable "Known Residuals" sink before shipping. If a PR will be created or updated in Phase 4, include them in the PR description's "Known Residuals" section (the agent owns this when calling `ce-commit-push-pr`). If the user later chooses the no-PR `ce-commit` path, create `docs/residual-review-findings/<branch-or-head-sha>.md`, include the accepted findings and source review-run context, stage it with the implementation commit, and mention the file path in the final summary. The user has acknowledged the risk, but the findings must not live only in the transient session.
43
- - `Stop — do not ship` — abort the shipping workflow. The user will handle findings manually before re-invoking.
44
-
45
- Skip this gate entirely when the review reported `Residual actionable work: none.` or when only Tier 1 (inline self-review) was used. Do not proceed past this gate on an `Accept and proceed` decision until the agent has recorded whether the durable sink is `PR Known Residuals` or `docs/residual-review-findings/<branch-or-head-sha>.md`.
46
-
47
- 4. **Final Validation**
48
- - All tasks marked completed
49
- - Testing addressed -- tests pass and new/changed behavior has corresponding test coverage (or an explicit justification for why tests are not needed)
50
- - Linting passes
51
- - Code follows existing patterns
52
- - Figma designs match (if applicable)
53
- - No console errors or warnings
54
- - If the plan has a `Requirements` section (or legacy `Requirements Trace`), verify each requirement is satisfied by the completed work
55
- - If any `Deferred to Implementation` questions were noted, confirm they were resolved during execution
56
-
57
- 5. **Prepare Operational Validation Plan** (REQUIRED)
58
- - Add a `## Post-Deploy Monitoring & Validation` section to the PR description for every change.
59
- - Include concrete:
60
- - Log queries/search terms
61
- - Metrics or dashboards to watch
62
- - Expected healthy signals
63
- - Failure signals and rollback/mitigation trigger
64
- - Validation window and owner
65
- - If there is truly no production/runtime impact, still include the section with: `No additional operational monitoring required` and a one-line reason.
66
-
67
- ## Phase 4: Ship It
68
-
69
- 1. **Prepare Evidence Context**
70
-
71
- Do not invoke `ce-demo-reel` directly in this step. Evidence capture belongs to the PR creation or PR description update flow, where the final PR diff and description context are available.
72
-
73
- Note whether the completed work has observable behavior (UI rendering, CLI output, API/library behavior with a runnable example, generated artifacts, or workflow output). The `ce-commit-push-pr` skill will ask whether to capture evidence only when evidence is possible.
74
-
75
- 2. **Update Plan Status**
76
-
77
- If the input document has YAML frontmatter with a `status` field, update it to `completed`:
78
- ```
79
- status: active -> status: completed
80
- ```
81
-
82
- 3. **Commit and Create Pull Request**
83
-
84
- Load the `ce-commit-push-pr` skill to handle committing, pushing, and PR creation. The skill handles convention detection, branch safety, logical commit splitting, adaptive PR descriptions, and attribution badges.
85
-
86
- When providing context for the PR description, include:
87
- - The plan's summary and key decisions
88
- - Testing notes (tests added/modified, manual testing performed)
89
- - Evidence context from step 1, so `ce-commit-push-pr` can decide whether to ask about capturing evidence
90
- - Figma design link (if applicable)
91
- - The Post-Deploy Monitoring & Validation section (see Phase 3 Step 5)
92
- - Any "Known Residuals" accepted in the Phase 3 Residual Work Gate, rendered as a dedicated section in the PR body with severity, file:line, and title per finding
93
-
94
- If the user prefers to commit without creating a PR, load the `ce-commit` skill instead.
95
-
96
- 4. **Notify User**
97
- - Summarize what was completed
98
- - Link to PR (if one was created)
99
- - Note any follow-up work needed
100
- - Suggest next steps if applicable
101
-
102
- ## Quality Checklist
103
-
104
- Before creating PR, verify:
105
-
106
- - [ ] All clarifying questions asked and answered
107
- - [ ] All tasks marked completed
108
- - [ ] Testing addressed -- tests pass AND new/changed behavior has corresponding test coverage (or an explicit justification for why tests are not needed)
109
- - [ ] Linting passes (use linting-agent)
110
- - [ ] Code follows existing patterns
111
- - [ ] Figma designs match implementation (if applicable)
112
- - [ ] Evidence decision handled by `ce-commit-push-pr` when the change has observable behavior
113
- - [ ] Commit messages follow conventional format
114
- - [ ] PR description includes Post-Deploy Monitoring & Validation section (or explicit no-impact rationale)
115
- - [ ] Code review completed (inline self-review or full `ce-code-review`)
116
- - [ ] PR description includes summary, testing notes, and evidence when captured
117
- - [ ] PR description includes Compound Engineered badge with accurate model and harness
118
-
119
- ## Code Review Tiers
120
-
121
- Every change gets reviewed. The tier determines depth, not whether review happens.
122
-
123
- **Tier 2 (full review)** -- REQUIRED default. Invoke `ce-code-review mode:autofix` with `plan:<path>` when available. Safe fixes are applied automatically; residual work is recorded in the run artifact for downstream routing. Always use this tier unless all four Tier 1 criteria are explicitly confirmed.
124
-
125
- **Tier 1 (inline self-review)** -- permitted only when all four are true (state each explicitly before choosing):
126
- - Purely additive (new files only, no existing behavior modified)
127
- - Single concern (one skill, one component -- not cross-cutting)
128
- - Pattern-following (mirrors an existing example, no novel logic)
129
- - Plan-faithful (no scope growth, no surprising deferred-question resolutions)