opencode-swarm 7.122.0 → 7.123.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.opencode/skills/issue-tracer/SKILL.md +341 -0
- package/.opencode/skills/issue-tracer/assets/pr-template.md +59 -0
- package/.opencode/skills/issue-tracer/references/critic-gate.md +245 -0
- package/.opencode/skills/issue-tracer/references/evidence-artifacts.md +267 -0
- package/.opencode/skills/issue-tracer/references/install.md +63 -0
- package/.opencode/skills/issue-tracer/references/localization-playbook.md +95 -0
- package/.opencode/skills/issue-tracer/references/method-provenance.md +13 -0
- package/.opencode/skills/issue-tracer/references/untrusted-content.md +22 -0
- package/.opencode/skills/issue-tracer/scripts/scan-deferred.sh +103 -0
- package/.opencode/skills/issue-tracer/scripts/trace-init.sh +119 -0
- package/dist/cli/{config-doctor-404c8mf8.js → config-doctor-3ksh1534.js} +2 -2
- package/dist/cli/{core-xnwasfpc.js → core-cwgb7ev8.js} +1 -1
- package/dist/cli/{curation-policy-cj1tpzr5.js → curation-policy-4j4qce5a.js} +5 -5
- package/dist/cli/{curator-llm-factory-8rg0f77t.js → curator-llm-factory-mfvd4sqx.js} +22 -20
- package/dist/cli/{curator-3rze3pd4.js → curator-tkyn9bzz.js} +22 -20
- package/dist/cli/{evidence-summary-service-k14ykm03.js → evidence-summary-service-96ndczbk.js} +7 -5
- package/dist/cli/{gate-evidence-tbpezk28.js → gate-evidence-xqks3kk2.js} +3 -3
- package/dist/cli/{guardrail-explain-hdsxa2c5.js → guardrail-explain-4vytbchb.js} +23 -21
- package/dist/cli/{guardrail-log-dhpp0kmn.js → guardrail-log-z291m4gw.js} +3 -3
- package/dist/cli/{hive-promoter-dh38qd9m.js → hive-promoter-y5wsztkc.js} +22 -20
- package/dist/cli/{index-zvae4m8g.js → index-17eybc3z.js} +1 -1
- package/dist/cli/{index-kyvg2cmp.js → index-19zn67q6.js} +1 -1
- package/dist/cli/{index-rbfq77sz.js → index-2j25br0p.js} +12 -10
- package/dist/cli/{index-9xpgytj9.js → index-3rr0ese8.js} +1 -1
- package/dist/cli/{index-68aggz0v.js → index-6sgqnvpw.js} +2 -2
- package/dist/cli/{index-qg11yf8q.js → index-6xnxz6z0.js} +1 -1
- package/dist/cli/{index-emkb0bbe.js → index-7cspygmb.js} +277 -673
- package/dist/cli/{index-jzpv74mq.js → index-7g91saha.js} +24 -22
- package/dist/cli/{index-3r1w7xky.js → index-cqsak7bf.js} +2 -2
- package/dist/cli/index-ctpgsj84.js +547 -0
- package/dist/cli/index-d6h5hq91.js +564 -0
- package/dist/cli/{index-vqcgmy4y.js → index-det5jwfk.js} +1 -1
- package/dist/cli/{index-3sx27bxt.js → index-dywekeen.js} +3 -3
- package/dist/cli/{index-wtn8wf7h.js → index-gw3m5fw0.js} +1 -1
- package/dist/cli/{index-rkd6qwjh.js → index-hns7xjm7.js} +2 -2
- package/dist/cli/{index-xdsj4qtd.js → index-j9kxwshw.js} +5 -5
- package/dist/cli/{index-ahxrne50.js → index-jyrhy4ww.js} +161 -58
- package/dist/cli/{index-j33zb3cx.js → index-m0bmh3w0.js} +4 -4
- package/dist/cli/index-m1abzg93.js +68 -0
- package/dist/cli/{index-ny13nr0x.js → index-n2712byd.js} +6 -6
- package/dist/cli/{index-gr7ssnj9.js → index-q00e4s1s.js} +5 -4
- package/dist/cli/{index-3jvqw5hy.js → index-q27bajqb.js} +1 -1
- package/dist/cli/{index-qt2yaghg.js → index-vcgfqd8f.js} +1 -63
- package/dist/cli/{index-tftv9xh9.js → index-wr8qgpz5.js} +1 -1
- package/dist/cli/index.js +22 -20
- package/dist/cli/{knowledge-escalator-sya06p12.js → knowledge-escalator-dyxsm78k.js} +6 -6
- package/dist/cli/{knowledge-events-xzps61a9.js → knowledge-events-36q6nvae.js} +4 -4
- package/dist/cli/{knowledge-link-sy85fw3w.js → knowledge-link-4yd2z8ev.js} +3 -3
- package/dist/cli/{knowledge-store-qg66a93n.js → knowledge-store-e07b4s54.js} +4 -4
- package/dist/cli/{knowledge-validator-gar6wv4f.js → knowledge-validator-sfyf7wn2.js} +7 -7
- package/dist/cli/pr-subscriptions-x653151h.js +1 -1
- package/dist/cli/{scan-cursor-nx5y5k7r.js → scan-cursor-hm0aqqae.js} +5 -5
- package/dist/cli/{schema-vwxpsk6j.js → schema-13bnng2n.js} +1 -1
- package/dist/cli/scope-persistence-d9erwnvb.js +36 -0
- package/dist/cli/{skill-generator-nt5qxafq.js → skill-generator-63r20a9k.js} +8 -8
- package/dist/config/bundled-skills.d.ts +1 -1
- package/dist/config/constants.d.ts +3 -2
- package/dist/hooks/delegation-gate.d.ts +19 -1
- package/dist/hooks/guardrails/nontransient-circuit.d.ts +47 -0
- package/dist/hooks/scope-guard.d.ts +9 -2
- package/dist/hooks/write-target-resolver.d.ts +30 -0
- package/dist/index.js +406 -370
- package/dist/sandbox/win32/restricted-environment-executor.d.ts +3 -2
- package/dist/scope/scope-binding.d.ts +89 -0
- package/dist/scope/scope-persistence.d.ts +53 -12
- package/dist/state.d.ts +25 -1
- package/dist/tools/declare-scope.d.ts +5 -1
- package/dist/tools/file-extractor-planner.d.ts +31 -0
- package/dist/tools/file-extractor.d.ts +2 -7
- package/package.json +2 -1
- package/dist/cli/index-51gg9947.js +0 -254
- package/dist/cli/scope-persistence-mfr36yc9.js +0 -20
- package/dist/cli/{index-h07wn84h.js → index-7mkpsw6g.js} +3 -3
- package/dist/cli/{pending-delegations-0z3znsec.js → pending-delegations-68cbaqv2.js} +1 -1
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
# Independent Critic Gate
|
|
2
|
+
|
|
3
|
+
This reference drives three independent gates: the Phase 3 plan critic, the Phase 4.5 implementation review, and the Phase 4.6 final critic. Each is adversarial and independent — it does not improve wording; it tries to prove the work is not done. None of them writes production code.
|
|
4
|
+
|
|
5
|
+
Every verdict artifact records the exact commit SHA it examined (or, for an uncommitted tree, a diff hash such as `git diff | git hash-object --stdin`). Closure requires the final-approval SHA/hash to equal the shipped HEAD; a later edit invalidates the approval and re-runs the affected gate. Freshness is checked by comparing hashes, never by recollection.
|
|
6
|
+
|
|
7
|
+
Before any fallback pass: attempt the delegation mechanism and record the verbatim tool-call error, or quote the user/session text forbidding subagents. If authorization is merely unclear and the session is interactive, ask the user. Non-interactive sessions may fall back only with the recorded failure output, stated in the artifact.
|
|
8
|
+
|
|
9
|
+
## Plan Critic (Phase 3)
|
|
10
|
+
|
|
11
|
+
Use before presenting the plan to the user. The critic reviews only evidence and plan quality and tries to prove the plan would fail to fully close the issue and its defect class.
|
|
12
|
+
|
|
13
|
+
### Preferred Invocation
|
|
14
|
+
|
|
15
|
+
If subagent delegation is available, launch a separate critic with this prompt:
|
|
16
|
+
|
|
17
|
+
```markdown
|
|
18
|
+
You are an independent critic reviewing an issue-tracer fix plan before implementation.
|
|
19
|
+
|
|
20
|
+
Your task is to find gaps, unwired functionality, unsupported assumptions, missed edge cases, missing tests, unsafe scope, an under-scoped defect-class sweep, and root-cause errors.
|
|
21
|
+
|
|
22
|
+
Read these artifacts:
|
|
23
|
+
- 01-issue-summary.md
|
|
24
|
+
- 02-reproduction.md
|
|
25
|
+
- 03-localization-log.md
|
|
26
|
+
- 04-root-cause.md
|
|
27
|
+
- 05-fix-plan.md
|
|
28
|
+
|
|
29
|
+
Also inspect any files referenced in the plan. Do not trust summaries if the underlying code is available.
|
|
30
|
+
|
|
31
|
+
Return exactly:
|
|
32
|
+
|
|
33
|
+
# Critic Review
|
|
34
|
+
|
|
35
|
+
## Reviewed SHA / diff hash
|
|
36
|
+
[The commit SHA or diff hash of the tree/plan you examined.]
|
|
37
|
+
|
|
38
|
+
## Verdict
|
|
39
|
+
APPROVE / NEEDS_REVISION / BLOCKED
|
|
40
|
+
|
|
41
|
+
## Evidence Sufficiency
|
|
42
|
+
[Is root cause proven? What evidence is missing?]
|
|
43
|
+
|
|
44
|
+
## Plan Correctness
|
|
45
|
+
[Would the selected fix address the root cause?]
|
|
46
|
+
|
|
47
|
+
## Unwired Functionality
|
|
48
|
+
[Any entry point, export, caller, config, route, UI path, CLI path, docs path, or test path not connected?]
|
|
49
|
+
|
|
50
|
+
## Edge Cases
|
|
51
|
+
[Missed null/empty/error/concurrent/idempotent/security/backward-compat cases.]
|
|
52
|
+
|
|
53
|
+
## Defect-Class Sweep
|
|
54
|
+
[Is the anticipated Phase 4.2 sweep scoped to the real class, or too narrow?]
|
|
55
|
+
|
|
56
|
+
## Test Gaps
|
|
57
|
+
[Positive, negative, regression, integration, fixture, drift, and adversarial gaps.]
|
|
58
|
+
|
|
59
|
+
## Scope Risk
|
|
60
|
+
[Overreach, underreach, public API, migration, external service, or rollout risks.]
|
|
61
|
+
|
|
62
|
+
## Required Revisions
|
|
63
|
+
- [Required change or NONE]
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Fallback Invocation
|
|
67
|
+
|
|
68
|
+
If no independent subagent is available, create `06-critic-review.md` with the same headings (including `## Reviewed SHA / diff hash`) in one clean adversarial pass, prefixed with "Fallback self-critic: independent critic unavailable." Do not leave a stub artifact containing only the disclosure.
|
|
69
|
+
|
|
70
|
+
### Required Critic Questions
|
|
71
|
+
|
|
72
|
+
The critic must answer:
|
|
73
|
+
|
|
74
|
+
1. Does the reproduction actually match the issue, or did the tracer reproduce a nearby symptom?
|
|
75
|
+
2. Is the claimed root cause necessary and sufficient?
|
|
76
|
+
3. Could the fix make the test pass while leaving the real runtime path unwired?
|
|
77
|
+
4. Are all callers/importers/entry points covered?
|
|
78
|
+
5. Are config defaults, feature flags, docs, and generated code surfaces considered?
|
|
79
|
+
6. Are both positive and negative tests included?
|
|
80
|
+
7. Are boundary cases covered: null, empty, missing, malformed, duplicate, concurrent, retry, cancellation, timeout, permission denied, and partial failure?
|
|
81
|
+
8. Does the patch preserve public API and backward compatibility?
|
|
82
|
+
9. Does the plan avoid broad refactors and unrelated cleanup? (The Phase 4.2 defect-class sweep is in-scope by definition and is NOT "unrelated cleanup".)
|
|
83
|
+
10. Is rollback straightforward?
|
|
84
|
+
11. If the fix's exact invocation depends on subtle CLI/subprocess/flag semantics (git flags, gitignore anchoring, shell globs), was the exact candidate invocation empirically verified in an isolated environment — not just asserted as correct?
|
|
85
|
+
12. If the fix scopes or restricts a destructive/broad-acting operation, was it checked against the real target's full blast radius (a dry-run against the actual environment), not only a minimal reproduction?
|
|
86
|
+
|
|
87
|
+
### Verdict Semantics
|
|
88
|
+
|
|
89
|
+
- `APPROVE`: No blocker remains. Implementation can proceed after user approval.
|
|
90
|
+
- `NEEDS_REVISION`: The plan is probably fixable, but one or more revisions are required before user approval.
|
|
91
|
+
- `BLOCKED`: The plan lacks enough evidence, has a wrong root cause, requires a product decision, or needs unavailable context.
|
|
92
|
+
|
|
93
|
+
### Revision Rules
|
|
94
|
+
|
|
95
|
+
If the critic returns `NEEDS_REVISION` or `BLOCKED`: revise `05-fix-plan.md`, record the response to every critic item, and re-run the critic. Do not present the plan as ready until blockers are resolved or explicitly escalated. **Loop bound:** after three revision cycles without convergence, stop and escalate to the user with both positions and the evidence. Never resolve a deadlock by rewording a blocker.
|
|
96
|
+
|
|
97
|
+
## Implementation Review (Phase 4.5)
|
|
98
|
+
|
|
99
|
+
Use AFTER the fix is implemented and validated, to challenge the actual diff. It is independent of the Phase 3 plan critic: the plan critic challenges the plan; this reviewer challenges the real patch and its evidence. The context that wrote the patch must not be the only context that approves it.
|
|
100
|
+
|
|
101
|
+
### Reviewer Mission
|
|
102
|
+
|
|
103
|
+
Find a concrete case where the implemented patch is wrong, incomplete, overfits the regression test, leaves a runtime path unwired, misses a defect-class sibling, or regresses an existing contract. Verify claims against the real code and captured command output — do not trust the implementer's narrative.
|
|
104
|
+
|
|
105
|
+
### Reviewer Inputs (strict)
|
|
106
|
+
|
|
107
|
+
The reviewer receives ONLY: the full diff, `04-root-cause.md`, `07-approved-plan.md`, `08-test-results.md`, `08a-recurrence-sweep.md`, and the files the diff touches. It is NOT given the implementer's `05-fix-plan.md` reasoning or `06-critic-review.md` narrative — those can anchor the reviewer to the implementer's framing. Open the touched files; do not trust summaries.
|
|
108
|
+
|
|
109
|
+
### Preferred Invocation
|
|
110
|
+
|
|
111
|
+
If subagent delegation is available, launch a separate reviewer with this prompt:
|
|
112
|
+
|
|
113
|
+
```markdown
|
|
114
|
+
You are an independent implementation reviewer for an issue-tracer fix that has already been implemented and validated. Your job is to REFUTE it, not to agree with it.
|
|
115
|
+
|
|
116
|
+
Inputs (and only these):
|
|
117
|
+
- the full diff (e.g. `git diff origin/<default-branch>...HEAD`)
|
|
118
|
+
- 04-root-cause.md, 07-approved-plan.md, 08-test-results.md, 08a-recurrence-sweep.md
|
|
119
|
+
- the files the diff touches (open them; do not trust summaries)
|
|
120
|
+
|
|
121
|
+
Find, with concrete evidence:
|
|
122
|
+
- a specific input/environment/caller/sequence where the patch is wrong or incomplete
|
|
123
|
+
- whether the new test would still pass if the bug were only partially fixed (overfitting / plausible-not-correct)
|
|
124
|
+
- any changed path that is not wired into the real runtime path
|
|
125
|
+
- any defect-class sibling the Phase 4.2 sweep missed or misdispositioned
|
|
126
|
+
- any regressed public API, CLI, UI, config, persistence, or concurrency contract
|
|
127
|
+
- any "passed"/"validated" claim not backed by a shown command + output
|
|
128
|
+
- if the fix depends on CLI/subprocess/flag semantics, independently re-run the exact invocation yourself and confirm the observed behavior matches the claim
|
|
129
|
+
- if the fix scopes a destructive/broad-acting operation, independently re-check it against the real target's full blast radius
|
|
130
|
+
|
|
131
|
+
Return exactly:
|
|
132
|
+
|
|
133
|
+
# Implementation Review
|
|
134
|
+
|
|
135
|
+
## Reviewed SHA / diff hash
|
|
136
|
+
[The commit SHA or diff hash you examined.]
|
|
137
|
+
|
|
138
|
+
## Verdict
|
|
139
|
+
APPROVE / NEEDS_REVISION / BLOCKED
|
|
140
|
+
|
|
141
|
+
## Correctness vs Root Cause
|
|
142
|
+
[Does the diff fix the documented root cause, or only the symptom/test?]
|
|
143
|
+
|
|
144
|
+
## Overfitting Check
|
|
145
|
+
[Could the patch be wrong while still passing the new test? Show how or why not.]
|
|
146
|
+
|
|
147
|
+
## Unwired / Runtime-Path Gaps
|
|
148
|
+
[Entry points, exports, callers, config, routes, CLI/UI paths not connected.]
|
|
149
|
+
|
|
150
|
+
## Defect-Class Sweep Integrity
|
|
151
|
+
[Did Phase 4.2 characterize the class correctly, sweep completely, and install a guardrail that bites?]
|
|
152
|
+
|
|
153
|
+
## Contract & Regression Risk
|
|
154
|
+
[Public API, backward-compat, migration, concurrency, security.]
|
|
155
|
+
|
|
156
|
+
## Evidence Integrity
|
|
157
|
+
[Validation claims not backed by captured command output.]
|
|
158
|
+
|
|
159
|
+
## Deferred / Scoped-Out / Unwired
|
|
160
|
+
[Any work silently deferred, scoped out, or left unwired. State NONE only if truly none.]
|
|
161
|
+
|
|
162
|
+
## Required Revisions
|
|
163
|
+
- [Required change or NONE]
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Fallback Invocation
|
|
167
|
+
|
|
168
|
+
If no independent subagent is available, write `08b-implementation-review.md` using the same headings (including `## Reviewed SHA / diff hash` and `## Deferred / Scoped-Out / Unwired`) in one clean adversarial pass, prefixed with "Fallback self-review: independent reviewer unavailable." Do not leave a stub containing only the disclosure.
|
|
169
|
+
|
|
170
|
+
### Verdict Semantics
|
|
171
|
+
|
|
172
|
+
- `APPROVE`: no blocker remains; closure may proceed.
|
|
173
|
+
- `NEEDS_REVISION`: one or more code or evidence changes are required before closure.
|
|
174
|
+
- `BLOCKED`: the patch does not address the root cause, overfits, or needs context/decision the reviewer lacks.
|
|
175
|
+
|
|
176
|
+
### Revision Rules
|
|
177
|
+
|
|
178
|
+
Resolve every `NEEDS_REVISION`/`BLOCKED` item by changing code or capturing real evidence, then re-review. Do not downgrade a blocker by rewording it. Record the response to every reviewer item in `08b-implementation-review.md`. **Loop bound:** after three reviewer/critic revision cycles without convergence, stop and escalate to the user with both positions and evidence.
|
|
179
|
+
|
|
180
|
+
## Final Critic (Phase 4.6)
|
|
181
|
+
|
|
182
|
+
Use after the implementation reviewer has approved the current diff. This critic challenges the entire completion claim, including code, tests, docs, release notes, package metadata, validation evidence, and the reviewer artifact.
|
|
183
|
+
|
|
184
|
+
### Preferred Invocation
|
|
185
|
+
|
|
186
|
+
If subagent delegation is available, launch a separate critic with this prompt:
|
|
187
|
+
|
|
188
|
+
```markdown
|
|
189
|
+
You are the final critic for an issue-tracer implementation that already passed implementation review. Your job is to prove the completion claim is still wrong.
|
|
190
|
+
|
|
191
|
+
Inputs:
|
|
192
|
+
- the current full diff
|
|
193
|
+
- 01-issue-summary.md through 08b-implementation-review.md, including 08a-recurrence-sweep.md
|
|
194
|
+
- 08-test-results.md with captured command output
|
|
195
|
+
- all changed files
|
|
196
|
+
|
|
197
|
+
Check:
|
|
198
|
+
- the reviewer approval is on the latest diff (matching SHA/hash), not an earlier state
|
|
199
|
+
- every NEEDS_REVISION/BLOCKED reviewer item was actually fixed and re-reviewed
|
|
200
|
+
- docs, release notes, package metadata, CLI/API claims, and tests match the implemented behavior
|
|
201
|
+
- the Phase 4.2 guardrail exists and demonstrably bites
|
|
202
|
+
- every acceptance criterion maps to concrete evidence
|
|
203
|
+
- validation claims are backed by commands and output
|
|
204
|
+
- no work was silently deferred, scoped out, or left unwired
|
|
205
|
+
|
|
206
|
+
Return exactly:
|
|
207
|
+
|
|
208
|
+
# Final Critic
|
|
209
|
+
|
|
210
|
+
## Reviewed SHA / diff hash
|
|
211
|
+
[The commit SHA or diff hash you examined; confirm it equals the shipped HEAD.]
|
|
212
|
+
|
|
213
|
+
## Verdict
|
|
214
|
+
APPROVE / NEEDS_REVISION / BLOCKED
|
|
215
|
+
|
|
216
|
+
## Completion Integrity
|
|
217
|
+
[Does the current diff satisfy the issue, the Full-Resolution Contract, and the no-gap checklist?]
|
|
218
|
+
|
|
219
|
+
## Review Freshness
|
|
220
|
+
[Did reviewer approval happen on this exact SHA/hash?]
|
|
221
|
+
|
|
222
|
+
## Drift Check
|
|
223
|
+
[Any mismatch among code, tests, docs, release notes, package metadata, and final summary?]
|
|
224
|
+
|
|
225
|
+
## Deferred / Scoped-Out / Unwired
|
|
226
|
+
[Any work silently deferred, scoped out, or left unwired. State NONE only if truly none.]
|
|
227
|
+
|
|
228
|
+
## Evidence Integrity
|
|
229
|
+
[Any unbacked validation or correctness claim?]
|
|
230
|
+
|
|
231
|
+
## Required Revisions
|
|
232
|
+
- [Required change or NONE]
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### Fallback Invocation
|
|
236
|
+
|
|
237
|
+
If no independent critic is available, write `09-final-critic.md` with the same headings (including `## Reviewed SHA / diff hash` and `## Deferred / Scoped-Out / Unwired`) in one clean adversarial pass, prefixed with "Fallback final critic: independent critic unavailable." Do not leave a stub artifact containing only the disclosure.
|
|
238
|
+
|
|
239
|
+
### Verdict Semantics
|
|
240
|
+
|
|
241
|
+
- `APPROVE`: no blocker remains; closure may proceed if no later edit happens.
|
|
242
|
+
- `NEEDS_REVISION`: one or more code, docs, tests, or evidence changes are required before closure.
|
|
243
|
+
- `BLOCKED`: the completion claim depends on missing context or an unresolved decision.
|
|
244
|
+
|
|
245
|
+
Any edit after final critic approval invalidates the approval. Re-run implementation review when the edit changes the diff, then re-run the final critic. **Loop bound:** after three reviewer/critic revision cycles without convergence, stop and escalate to the user with both positions and evidence.
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
# Evidence Artifacts
|
|
2
|
+
|
|
3
|
+
Use these templates to keep the investigation auditable and resumable. In compact mode each template may be a clearly-headed in-thread block with the identical required content — the storage changes, the required content does not.
|
|
4
|
+
|
|
5
|
+
## `01-issue-summary.md`
|
|
6
|
+
|
|
7
|
+
```markdown
|
|
8
|
+
# Issue Summary
|
|
9
|
+
|
|
10
|
+
## Source
|
|
11
|
+
- Issue: [URL or user-provided text]
|
|
12
|
+
- Repo: [owner/repo or local path]
|
|
13
|
+
- Labels: [labels]
|
|
14
|
+
- State: [open/closed/unknown]
|
|
15
|
+
|
|
16
|
+
## Observed Behavior
|
|
17
|
+
[What actually happens. Include exact errors and stack traces.]
|
|
18
|
+
|
|
19
|
+
## Expected Behavior
|
|
20
|
+
[What should happen.]
|
|
21
|
+
|
|
22
|
+
## Reproduction Steps
|
|
23
|
+
1. [Step]
|
|
24
|
+
2. [Step]
|
|
25
|
+
|
|
26
|
+
## Environment
|
|
27
|
+
- Runtime:
|
|
28
|
+
- OS/platform:
|
|
29
|
+
- Browser/device:
|
|
30
|
+
- Feature flags/config:
|
|
31
|
+
- External services:
|
|
32
|
+
|
|
33
|
+
## Acceptance Criteria
|
|
34
|
+
- [ ] [Measurable behavior]
|
|
35
|
+
- [ ] [Measurable behavior]
|
|
36
|
+
|
|
37
|
+
## Ambiguities
|
|
38
|
+
- [Question or missing input]
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## `02-reproduction.md`
|
|
42
|
+
|
|
43
|
+
```markdown
|
|
44
|
+
# Reproduction Evidence
|
|
45
|
+
|
|
46
|
+
## Commands Tried
|
|
47
|
+
|
|
48
|
+
### Attempt 1
|
|
49
|
+
- Command:
|
|
50
|
+
- Exit code:
|
|
51
|
+
- Result: CONFIRMED / NOT REPRODUCED / BLOCKED
|
|
52
|
+
|
|
53
|
+
```text
|
|
54
|
+
[Exact output]
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Minimal Reproduction
|
|
58
|
+
- Test/script/checklist:
|
|
59
|
+
- Why it matches the reported issue:
|
|
60
|
+
|
|
61
|
+
## Reproduction Verdict
|
|
62
|
+
[Confirmed, blocked, or non-reproducible with reason.]
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## `03-localization-log.md`
|
|
66
|
+
|
|
67
|
+
```markdown
|
|
68
|
+
# Localization Log
|
|
69
|
+
|
|
70
|
+
## Active Hypotheses
|
|
71
|
+
|
|
72
|
+
### H1: [Hypothesis]
|
|
73
|
+
- Status: active / confirmed / ruled_out / inconclusive
|
|
74
|
+
- Suspected file/symbol:
|
|
75
|
+
- Evidence for:
|
|
76
|
+
- Evidence against:
|
|
77
|
+
- Commands/tests:
|
|
78
|
+
- Verdict:
|
|
79
|
+
|
|
80
|
+
## Files Read
|
|
81
|
+
- `path/file.ext:lines` — [why read] — [what was learned]
|
|
82
|
+
|
|
83
|
+
## Searches Run
|
|
84
|
+
- `<search pattern>` — [result]
|
|
85
|
+
|
|
86
|
+
## Tests/Commands Run
|
|
87
|
+
- `command` — PASS/FAIL/BLOCKED — [meaning]
|
|
88
|
+
|
|
89
|
+
## Ruled-Out Paths
|
|
90
|
+
- [Path] — [why ruled out]
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## `04-root-cause.md`
|
|
94
|
+
|
|
95
|
+
```markdown
|
|
96
|
+
# Root Cause
|
|
97
|
+
|
|
98
|
+
## Summary
|
|
99
|
+
[What failed, where, and why.]
|
|
100
|
+
|
|
101
|
+
## Exact Location
|
|
102
|
+
- File:
|
|
103
|
+
- Symbol:
|
|
104
|
+
- Lines:
|
|
105
|
+
|
|
106
|
+
## Broken Contract
|
|
107
|
+
[Invariant or behavioral contract violated.]
|
|
108
|
+
|
|
109
|
+
## Triggering Conditions
|
|
110
|
+
[Inputs/state/environment required.]
|
|
111
|
+
|
|
112
|
+
## Evidence Chain
|
|
113
|
+
1. [Symptom]
|
|
114
|
+
2. [Code evidence]
|
|
115
|
+
3. [Command/test evidence]
|
|
116
|
+
4. [Ruled-out alternatives]
|
|
117
|
+
|
|
118
|
+
## Confidence
|
|
119
|
+
[0–100% with reason. Below 90%, return to localization with a NAMED missing-evidence target instead of guessing. If two hypotheses remain equally supported after a second pass, escalate to the user.]
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## `05-fix-plan.md`
|
|
123
|
+
|
|
124
|
+
```markdown
|
|
125
|
+
# Fix Plan
|
|
126
|
+
|
|
127
|
+
## Issue
|
|
128
|
+
[Short summary.]
|
|
129
|
+
|
|
130
|
+
## Root Cause
|
|
131
|
+
[From 04-root-cause.md.]
|
|
132
|
+
|
|
133
|
+
## Candidate Fixes
|
|
134
|
+
| Candidate | Approach | Files | Pros | Cons | Verdict |
|
|
135
|
+
|---|---|---|---|---|---|
|
|
136
|
+
| A | [Minimal guard/logic/config/state/API fix] | [files] | [pros] | [cons] | selected/rejected |
|
|
137
|
+
|
|
138
|
+
## Selected Fix
|
|
139
|
+
[Exact behavioral change and why it is necessary and sufficient.]
|
|
140
|
+
|
|
141
|
+
## Files Expected to Change
|
|
142
|
+
- `path/file.ext` — [exact reason]
|
|
143
|
+
|
|
144
|
+
## Impact Analysis
|
|
145
|
+
- Callers/importers:
|
|
146
|
+
- Tests/fixtures:
|
|
147
|
+
- Config/docs:
|
|
148
|
+
- API/UI/CLI:
|
|
149
|
+
- Persistence/migrations:
|
|
150
|
+
- Security/privacy:
|
|
151
|
+
- Concurrency/idempotency:
|
|
152
|
+
|
|
153
|
+
## Anticipated Defect-Class Sweep (Phase 4.2)
|
|
154
|
+
- Pattern statement (draft):
|
|
155
|
+
- Search predicates (draft):
|
|
156
|
+
- Guardrail rung intended:
|
|
157
|
+
|
|
158
|
+
## Edge Cases
|
|
159
|
+
- [edge] — covered by [test/check]
|
|
160
|
+
|
|
161
|
+
## Test Plan
|
|
162
|
+
1. [Failing regression test]
|
|
163
|
+
2. [Impacted suite]
|
|
164
|
+
3. [Lint/type/build/security checks]
|
|
165
|
+
|
|
166
|
+
## Unwired Functionality Checklist
|
|
167
|
+
- [ ] Entry point reaches new/changed logic.
|
|
168
|
+
- [ ] All callers use the updated contract correctly.
|
|
169
|
+
- [ ] Error path is observable and handled.
|
|
170
|
+
- [ ] No new branch lacks tests or manual verification.
|
|
171
|
+
- [ ] Documentation/comments match actual behavior.
|
|
172
|
+
|
|
173
|
+
## Risk and Rollback
|
|
174
|
+
- Risk:
|
|
175
|
+
- Rollback:
|
|
176
|
+
|
|
177
|
+
## Critic Status
|
|
178
|
+
- Critic verdict:
|
|
179
|
+
- Required revisions:
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## `06-critic-review.md`
|
|
183
|
+
|
|
184
|
+
Use `references/critic-gate.md` (Plan Critic section). The artifact records the reviewed SHA/diff hash and a verdict.
|
|
185
|
+
|
|
186
|
+
## `07-approved-plan.md`
|
|
187
|
+
|
|
188
|
+
```markdown
|
|
189
|
+
# Reviewed Plan Awaiting Approval
|
|
190
|
+
|
|
191
|
+
[Copy final 05-fix-plan.md here.]
|
|
192
|
+
|
|
193
|
+
## User Approval
|
|
194
|
+
- [ ] User explicitly approved implementation on [date/time/session note]
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
## `08-test-results.md`
|
|
198
|
+
|
|
199
|
+
```markdown
|
|
200
|
+
# Test Results
|
|
201
|
+
|
|
202
|
+
## Regression Test
|
|
203
|
+
- Command:
|
|
204
|
+
- Before fix: FAIL / not run with reason
|
|
205
|
+
- After fix: PASS / FAIL
|
|
206
|
+
|
|
207
|
+
## Impacted Tests
|
|
208
|
+
- Command:
|
|
209
|
+
- Result:
|
|
210
|
+
|
|
211
|
+
## Quality Checks
|
|
212
|
+
- Lint:
|
|
213
|
+
- Typecheck:
|
|
214
|
+
- Build:
|
|
215
|
+
- Format:
|
|
216
|
+
- Security/static checks:
|
|
217
|
+
|
|
218
|
+
## Deferred-Work Scan
|
|
219
|
+
- Command: `.opencode/skills/issue-tracer/scripts/scan-deferred.sh`
|
|
220
|
+
- Result: [clean, or each hit + disposition]
|
|
221
|
+
|
|
222
|
+
## Verification Reasoning
|
|
223
|
+
[Why the fix is correct beyond merely making tests pass.]
|
|
224
|
+
|
|
225
|
+
## Test Drift Review
|
|
226
|
+
[Any stale tests found and how they were handled.]
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
## `08a-recurrence-sweep.md`
|
|
230
|
+
|
|
231
|
+
```markdown
|
|
232
|
+
# Recurrence Sweep and Guardrail
|
|
233
|
+
|
|
234
|
+
(If the change corrects no incorrect behavior/data/docs — pure style/naming — record "no defect class" with a one-line justification and stop here.)
|
|
235
|
+
|
|
236
|
+
## Defect Class
|
|
237
|
+
[One-sentence pattern statement: the shape of the mistake — API misused, guard omitted, contract assumed, encoding confused — not the site of it.]
|
|
238
|
+
|
|
239
|
+
## Predicates and Results
|
|
240
|
+
- Predicate 1: `<rg/AST/type query>`
|
|
241
|
+
|
|
242
|
+
```text
|
|
243
|
+
[Full result set. An empty result is evidence only if the predicate is shown.]
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
## Dispositions
|
|
247
|
+
| Hit (file:line) | Disposition | Justification |
|
|
248
|
+
|---|---|---|
|
|
249
|
+
| path:line | FIX / FALSE_POSITIVE / OUT_OF_CLASS / DEFERRED_WITH_USER_APPROVAL | [why; for DEFERRED: tracked issue link + quoted user acknowledgment] |
|
|
250
|
+
|
|
251
|
+
## Guardrail
|
|
252
|
+
- Rung chosen: [lint/static rule > type constraint > runtime/trust-boundary assertion > CI check > documented invariant + regression family]
|
|
253
|
+
- Infeasibility reasons (required if landing on either of the two weakest rungs): [why each stronger rung is infeasible for this class — "faster" is not a reason]
|
|
254
|
+
- Demonstration: [revert-check / mutation / synthetic instance] — captured output showing it FAILS on the original defect and PASSES on the fixed code.
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
## `08b-implementation-review.md`
|
|
258
|
+
|
|
259
|
+
Use `references/critic-gate.md` (Implementation Review section). The artifact records the reviewed SHA/diff hash, a verdict, and the `## Deferred / Scoped-Out / Unwired` finding.
|
|
260
|
+
|
|
261
|
+
## `09-final-critic.md`
|
|
262
|
+
|
|
263
|
+
Use `references/critic-gate.md` (Final Critic section). The artifact records the reviewed SHA/diff hash (confirmed equal to shipped HEAD), a verdict, and the `## Deferred / Scoped-Out / Unwired` finding.
|
|
264
|
+
|
|
265
|
+
## `10-pr-body.md`
|
|
266
|
+
|
|
267
|
+
Use `assets/pr-template.md`, including the `## Acceptance Criteria → Evidence` map and the `## Waivers (or none)` section.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Install and Version Reconciliation
|
|
2
|
+
|
|
3
|
+
This skill is distributed as ONE canonical source with thin per-agent adapters. This reference documents where each of the five supported agents discovers the skill, how user-level installs can shadow the project copy, and how to reconcile a stale copy against the canonical version stamp.
|
|
4
|
+
|
|
5
|
+
The canonical version is the `metadata.version` field in the canonical `SKILL.md` frontmatter. Treat that stamp as the source of truth: when two resolvable copies disagree on `metadata.version`, the lower one is stale and must be reconciled.
|
|
6
|
+
|
|
7
|
+
## Discovery per agent (project-level)
|
|
8
|
+
|
|
9
|
+
| Agent | Loads (project-level) | Resolves to |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| OpenCode | `.opencode/skills/issue-tracer/SKILL.md` | canonical |
|
|
12
|
+
| Claude Code | `.claude/skills/issue-tracer/SKILL.md` | adapter shim → canonical |
|
|
13
|
+
| OpenAI Codex | `.agents/skills/issue-tracer/SKILL.md` | adapter shim → canonical |
|
|
14
|
+
| ZCode | `.agents/skills/issue-tracer/SKILL.md` | adapter shim → canonical |
|
|
15
|
+
| GitHub coding agent | repo-root `AGENTS.md` pointer | canonical |
|
|
16
|
+
|
|
17
|
+
The adapter shims are one-line pointers to `../../../.opencode/skills/issue-tracer/SKILL.md`; they carry no protocol of their own, so a project checkout always executes a single canonical body.
|
|
18
|
+
|
|
19
|
+
### Agent Adapter table — how each row was filled
|
|
20
|
+
|
|
21
|
+
The canonical SKILL.md's Agent Adapter table maps each capability to a concrete tool per agent. Those rows were filled from each agent's current tool surface: OpenCode (`edit`/`write`, `todowrite`, `webfetch`, `task`), Claude Code (`Edit`/`Write`/`MultiEdit`, `TodoWrite`, `WebFetch`/`WebSearch`, `Agent`/`Task`), OpenAI Codex (`apply_patch`, `update_plan`, `web`), and the GitHub coding agent (`edit`, built-in task list, `web`). **ZCode** is mapped to the Codex-native tool surface (`apply_patch`/`update_plan`/`web`) because it is a Codex-family CLI that shares the project-level `.agents/skills/` discovery tree with Codex; if your ZCode build exposes different tool names, treat the table as capability-first and substitute your build's names.
|
|
22
|
+
|
|
23
|
+
## User-level installs can SHADOW the project copy
|
|
24
|
+
|
|
25
|
+
Several CLIs also search a user-level (home-directory) skills root in addition to the project root, for example:
|
|
26
|
+
|
|
27
|
+
- Claude Code: `~/.claude/skills/issue-tracer/`
|
|
28
|
+
- ZCode: `~/.zcode/skills/issue-tracer/`
|
|
29
|
+
- Codex: `~/.codex/skills/issue-tracer/` (or the runtime's configured user skills root)
|
|
30
|
+
- OpenCode: the user-level OpenCode config skills root
|
|
31
|
+
|
|
32
|
+
Resolution precedence between the project copy and a same-named user-level copy **varies by CLI and CLI version**, and some resolve the user-level copy first. That makes a **stale user-level copy the dangerous case**: it can silently shadow the up-to-date project canonical, so the agent runs an old protocol (missing, e.g., the Full-Resolution Contract or the Phase 4.2 sweep) while the repository looks correct. Do not assume project-wins; verify with the version stamp.
|
|
33
|
+
|
|
34
|
+
## Reconcile against `metadata.version`
|
|
35
|
+
|
|
36
|
+
Read the canonical stamp first:
|
|
37
|
+
|
|
38
|
+
```sh
|
|
39
|
+
grep -A2 '^metadata:' .opencode/skills/issue-tracer/SKILL.md | grep 'version:'
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Then, for each CLI you use, compare the user-level copy's stamp to the project canonical and remove or refresh the user-level copy if it is older or absent-of-stamp (a legacy fork with no `metadata.version` is by definition stale):
|
|
43
|
+
|
|
44
|
+
```sh
|
|
45
|
+
# Claude Code
|
|
46
|
+
diff <(grep 'version:' ~/.claude/skills/issue-tracer/SKILL.md 2>/dev/null || echo 'version: none') \
|
|
47
|
+
<(grep 'version:' .opencode/skills/issue-tracer/SKILL.md) \
|
|
48
|
+
&& echo 'in sync' || echo 'STALE user-level copy — remove ~/.claude/skills/issue-tracer or re-sync it'
|
|
49
|
+
|
|
50
|
+
# ZCode
|
|
51
|
+
diff <(grep 'version:' ~/.zcode/skills/issue-tracer/SKILL.md 2>/dev/null || echo 'version: none') \
|
|
52
|
+
<(grep 'version:' .opencode/skills/issue-tracer/SKILL.md) \
|
|
53
|
+
&& echo 'in sync' || echo 'STALE user-level copy — remove ~/.zcode/skills/issue-tracer or re-sync it'
|
|
54
|
+
|
|
55
|
+
# Codex
|
|
56
|
+
diff <(grep 'version:' ~/.codex/skills/issue-tracer/SKILL.md 2>/dev/null || echo 'version: none') \
|
|
57
|
+
<(grep 'version:' .opencode/skills/issue-tracer/SKILL.md) \
|
|
58
|
+
&& echo 'in sync' || echo 'STALE user-level copy — remove ~/.codex/skills/issue-tracer or re-sync it'
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
The safest default is to keep no user-level `issue-tracer` copy at all and let each project ship its own canonical, so version drift cannot occur. If you do keep a user-level copy, reconcile it whenever the project canonical's `metadata.version` changes.
|
|
62
|
+
|
|
63
|
+
GitHub coding agents load the repository's checked-in `AGENTS.md` and `.opencode/skills/issue-tracer/SKILL.md` directly, with no user-level home directory, so shadowing does not apply to that surface.
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Localization Playbook
|
|
2
|
+
|
|
3
|
+
Use this playbook during Phase 2. The goal is not to read the most code. The goal is to build the shortest evidence chain from symptom to root cause.
|
|
4
|
+
|
|
5
|
+
## Tier 1: Trace-Driven Localization
|
|
6
|
+
|
|
7
|
+
Use when the issue includes a stack trace, failing test output, panic, exception, compiler error, log line, request ID, or command output.
|
|
8
|
+
|
|
9
|
+
1. Extract file paths, symbols, line numbers, route names, command names, config keys, and exact error strings.
|
|
10
|
+
2. Start from the first project-owned frame, not framework/library frames.
|
|
11
|
+
3. Read the frame, its immediate caller, and any input validation or error-mapping code.
|
|
12
|
+
4. Confirm whether the visible crash site is the cause or only the symptom.
|
|
13
|
+
5. If the trace points to generic error handling, walk backward to the first domain-specific invariant break.
|
|
14
|
+
|
|
15
|
+
Common trace interpretations:
|
|
16
|
+
|
|
17
|
+
- Null/undefined/type errors often originate at a missing guard or wrong contract before the crash line.
|
|
18
|
+
- Index/bounds errors often originate in filtering, slicing, pagination, or off-by-one logic.
|
|
19
|
+
- Assertion failures often indicate an upstream invariant break.
|
|
20
|
+
- Timeout/deadlock symptoms require call-chain, lock, retry, cancellation, and external-service review.
|
|
21
|
+
- Serialization errors often require checking both producer and consumer schemas.
|
|
22
|
+
|
|
23
|
+
## Tier 2: Semantic and Structural Localization
|
|
24
|
+
|
|
25
|
+
Use when the stack trace is missing, generic, misleading, or incomplete.
|
|
26
|
+
|
|
27
|
+
1. Convert issue text into search terms:
|
|
28
|
+
- user-visible strings
|
|
29
|
+
- endpoint names
|
|
30
|
+
- component labels
|
|
31
|
+
- command flags
|
|
32
|
+
- config names
|
|
33
|
+
- domain nouns and verbs
|
|
34
|
+
2. Search broadly, then narrow, using your repository search tool:
|
|
35
|
+
- the exact error string
|
|
36
|
+
- the route or command name
|
|
37
|
+
- domain terms, config keys, flags
|
|
38
|
+
- tracked-symbol confirmation
|
|
39
|
+
3. Build a candidate file table: file, relevant symbol, why it could cause the symptom, confidence, next evidence needed.
|
|
40
|
+
4. Inspect dependency direction: who calls this code, what this code calls, where state/config enters, where errors are transformed.
|
|
41
|
+
5. Use git archaeology sparingly but deliberately:
|
|
42
|
+
- `git log --oneline -- <path>`
|
|
43
|
+
- `git show <commit> -- <path>`
|
|
44
|
+
- `git blame -L <start>,<end> -- <path>`
|
|
45
|
+
|
|
46
|
+
## Tier 3: Hypothesis-Driven Localization
|
|
47
|
+
|
|
48
|
+
Use when multiple plausible locations remain.
|
|
49
|
+
|
|
50
|
+
1. Generate 2–5 competing hypotheses.
|
|
51
|
+
2. For each hypothesis, define the evidence that would confirm it and the evidence that would falsify it.
|
|
52
|
+
3. Test hypotheses in likelihood order.
|
|
53
|
+
4. Keep no more than three active hypotheses.
|
|
54
|
+
5. Do not preserve weak hypotheses once evidence contradicts them.
|
|
55
|
+
|
|
56
|
+
Hypothesis format:
|
|
57
|
+
|
|
58
|
+
```markdown
|
|
59
|
+
### H[N]: [short name]
|
|
60
|
+
The bug is in `path:symbol` because [specific condition] violates [specific contract], causing [reported symptom] when [triggering input/state].
|
|
61
|
+
|
|
62
|
+
- Confirm if:
|
|
63
|
+
- Falsify if:
|
|
64
|
+
- Evidence:
|
|
65
|
+
- Verdict:
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Granularity Rules
|
|
69
|
+
|
|
70
|
+
Localize at multiple levels before planning a patch:
|
|
71
|
+
|
|
72
|
+
1. File-level: which file owns the failing behavior.
|
|
73
|
+
2. Element-level: which function/class/config/test helper is responsible.
|
|
74
|
+
3. Line-level: which condition, call, assignment, invariant, or boundary check is wrong.
|
|
75
|
+
|
|
76
|
+
Function or element-level evidence is usually the most useful planning granularity. Line-level evidence is required before editing, but avoid overfitting the plan to one line if the issue is a broken contract across a whole function.
|
|
77
|
+
|
|
78
|
+
## Call-Chain Exploration
|
|
79
|
+
|
|
80
|
+
When the failure propagates across components:
|
|
81
|
+
|
|
82
|
+
1. Start at the failing entry point.
|
|
83
|
+
2. Follow calls one layer at a time.
|
|
84
|
+
3. At each layer, ask: what data enters, what contract is assumed, what state changes, what errors are swallowed/transformed, what output leaves.
|
|
85
|
+
4. Backtrack when evidence weakens.
|
|
86
|
+
5. Record pruned branches in `03-localization-log.md`.
|
|
87
|
+
|
|
88
|
+
## Stop Conditions
|
|
89
|
+
|
|
90
|
+
Stop localization and escalate if:
|
|
91
|
+
|
|
92
|
+
- the root cause requires unavailable production-only data
|
|
93
|
+
- two hypotheses remain equally supported after a second pass
|
|
94
|
+
- the issue requires a product decision rather than a code correction
|
|
95
|
+
- the suspected fix crosses subsystem boundaries beyond the approved scope
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Method Provenance (state of the art)
|
|
2
|
+
|
|
3
|
+
The quality methods in this skill are grounded in current agentic-repair and agent-reliability research, adapted to a plan-first, evidence-first, full-resolution workflow:
|
|
4
|
+
|
|
5
|
+
- Hierarchical file → function → line localization, multi-sample candidate patches, and validate-then-select repair: Agentless (Xia et al. 2024, https://arxiv.org/abs/2407.01489).
|
|
6
|
+
- Reasoning-guided, explanation-ranked fault localization (a causal explanation per candidate, not surface similarity): RGFL (https://arxiv.org/pdf/2601.18044); structure/spectrum-aware search: AutoCodeRover (https://arxiv.org/abs/2404.05427).
|
|
7
|
+
- "Tests passing is plausible, not correct" / patch overfitting: patch-correctness survey (https://dl.acm.org/doi/10.1145/3702972).
|
|
8
|
+
- Self-consistency across independent passes: Wang et al. 2022 (https://arxiv.org/abs/2203.11171).
|
|
9
|
+
- A fresh independent context refutes the result (the doer is not the grader) and evidence-grounded reporting (show the command and its output, do not assert success): Anthropic, "Effective harnesses for long-running agents" (https://www.anthropic.com/engineering/effective-harnesses-for-long-running-agents).
|
|
10
|
+
- Plan → implement → review separation as explicit quality gates: Anthropic, "Building Effective Agents" (https://www.anthropic.com/research/building-effective-agents).
|
|
11
|
+
- Escalate when the issue lacks reproducible steps or acceptance criteria (issue clarity predicts resolution success): GitHub coding-agent best practices (https://docs.github.com/en/copilot/how-tos/agents/copilot-coding-agent/best-practices-for-using-copilot-to-work-on-tasks).
|
|
12
|
+
|
|
13
|
+
Recurrence-class eradication (Phase 4.2) generalizes the "fix the class, not the instance" principle: a single-site repair that leaves the defect class searchable and reintroducible has not closed the issue's real surface. The guardrail ladder (static rule → type constraint → runtime/trust-boundary assertion → CI check → documented invariant + regression family) prefers machine-enforced prevention over human vigilance.
|