devrites 4.0.4 → 4.0.5
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/CHANGELOG.md +6 -0
- package/README.md +1 -1
- package/pack/.claude/agents/devrites-slice-wright.md +5 -4
- package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +11 -7
- package/pack/.claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +9 -6
- package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +16 -6
- package/pack/.claude/skills/rite-autocomplete/reference/loop.md +10 -2
- package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +7 -2
- package/pack/.claude/skills/rite-build/reference/afk-discipline.md +3 -1
- package/pack/.claude/skills/rite-build/reference/phase-contract.md +4 -2
- package/pack/.claude/skills/rite-prove/SKILL.md +4 -1
- package/pack/.claude/skills/rite-prove/reference/failure-triage.md +5 -3
- package/pack/.claude/skills/rite-vet/SKILL.md +19 -2
- package/pack/generated/claude/agents/devrites-slice-wright.md +5 -4
- package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +11 -7
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +9 -6
- package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +16 -6
- package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +10 -2
- package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +7 -2
- package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +3 -1
- package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +4 -2
- package/pack/generated/claude/skills/rite-prove/SKILL.md +4 -1
- package/pack/generated/claude/skills/rite-prove/reference/failure-triage.md +5 -3
- package/pack/generated/claude/skills/rite-vet/SKILL.md +19 -2
- package/pack/generated/codex/agents/devrites-slice-wright.toml +5 -4
- package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +11 -7
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +9 -6
- package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +16 -6
- package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +10 -2
- package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +7 -2
- package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +3 -1
- package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +4 -2
- package/pack/generated/codex/skills/rite-prove/SKILL.md +4 -1
- package/pack/generated/codex/skills/rite-prove/reference/failure-triage.md +5 -3
- package/pack/generated/codex/skills/rite-vet/SKILL.md +19 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to DevRites are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and DevRites adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Releases are generated automatically by [semantic-release](https://semantic-release.gitbook.io/) from Conventional Commits on `main`.
|
|
4
4
|
|
|
5
|
+
## [4.0.5](https://github.com/ViktorsBaikers/DevRites/compare/v4.0.4...v4.0.5) (2026-08-07)
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
* **rite:** make recovery progress-aware ([87ecd07](https://github.com/ViktorsBaikers/DevRites/commit/87ecd07d406d8c9eed97f2d41ec3449b408e75bd))
|
|
10
|
+
|
|
5
11
|
## [4.0.4](https://github.com/ViktorsBaikers/DevRites/compare/v4.0.3...v4.0.4) (2026-08-07)
|
|
6
12
|
|
|
7
13
|
### Fixed
|
package/README.md
CHANGED
|
@@ -28,7 +28,7 @@ project-conventional push, tag, or PR action, and archive the workspace.
|
|
|
28
28
|
Unattended runs may create local WIP checkpoint commits along the way, but they
|
|
29
29
|
remain local unless Ship's disclosed plan includes an approved remote action.
|
|
30
30
|
|
|
31
|
-
**Status:** [`v4.0.
|
|
31
|
+
**Status:** [`v4.0.5`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v4.0.5): see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
|
|
32
32
|
|
|
33
33
|
This is the latest published release; `main` may contain unreleased work.
|
|
34
34
|
|
|
@@ -97,10 +97,11 @@ an escalation and do not proceed.**
|
|
|
97
97
|
not a quiet edit. The root inspects the returned diff and dedicated test
|
|
98
98
|
analysis treats a weakened test as a Critical STOP.
|
|
99
99
|
For non-trivial failure, invoke `devrites-debug-recovery` with the exact error,
|
|
100
|
-
hypotheses, and dead ends. Caller and recovery share three
|
|
101
|
-
causal fingerprint. Count
|
|
102
|
-
failure
|
|
103
|
-
|
|
100
|
+
hypotheses, and dead ends. Caller and recovery share three no-progress attempts per
|
|
101
|
+
exact causal fingerprint. Count only corrections whose recheck preserves the same
|
|
102
|
+
decisive failure, using attempts supplied in the task/current context; include each in
|
|
103
|
+
`dead_ends`. Resolution is progress, while a different cause returns to the caller as a
|
|
104
|
+
new fingerprint. At the limit return the gate and repro. `Escalation` is only for product/irreversible choices
|
|
104
105
|
or human-only access; technical failure is a blocker.
|
|
105
106
|
5. **RETURN** the structured artifact (below) and stop. Do not start the next slice.
|
|
106
107
|
|
|
@@ -58,14 +58,18 @@ has no clear next move.
|
|
|
58
58
|
- **Durably record class and rationale** in `decisions.md` and the applicable
|
|
59
59
|
`evidence.md` or `## Dead ends` entry.
|
|
60
60
|
- **One causal fingerprint, counted by the caller.** Normalize the root cause as
|
|
61
|
-
`<affected boundary>: <failure mechanism>`
|
|
61
|
+
`<affected boundary>: <failed invariant/failure mechanism>` and bind its minimal
|
|
62
|
+
reproduction plus decisive signal rather than hashing symptom text.
|
|
62
63
|
The caller and recovery attempts share one count: read the current context and
|
|
63
|
-
recorded `## Dead ends` / `evidence.md`, then include every
|
|
64
|
+
recorded `## Dead ends` / `evidence.md`, then include every no-progress attempt
|
|
64
65
|
with that fingerprint. Reclassify only on new causal evidence.
|
|
65
|
-
- **A maximum of three
|
|
66
|
-
attempt
|
|
67
|
-
|
|
66
|
+
- **A maximum of three no-progress attempts per exact causal fingerprint stops the loop.**
|
|
67
|
+
Count an attempt only when its recheck preserves the same decisive failure.
|
|
68
|
+
Record attempt number, exact failure, hypothesis, probe, and failed idea after
|
|
69
|
+
each; closure is progress and a different Critical/Important invariant is a new
|
|
70
|
+
fingerprint. There is no JSONL ledger,
|
|
68
71
|
counter command, or reset-on-green operation. Product/acceptance ambiguity, irreversible risk, or
|
|
69
72
|
human-only access becomes a human gate; otherwise return reproducible `blocked` with
|
|
70
|
-
`Next:
|
|
71
|
-
|
|
73
|
+
`Next: none — technical recovery exhausted for <causal fingerprint>`, never request
|
|
74
|
+
attempt four. While budget remains, coupled failure requiring behavior change routes
|
|
75
|
+
`/rite-plan repair` inline; behavior-neutral rerouting uses `unblock` inline.
|
|
@@ -18,12 +18,15 @@ Only human credentials/quotas/actions or irreversible work pause; never ask to r
|
|
|
18
18
|
|
|
19
19
|
Record class/routing in `decisions.md` and each failed attempt in `evidence.md`
|
|
20
20
|
or `## Dead ends`. Use one stable causal fingerprint shaped as `<affected
|
|
21
|
-
boundary>: <failure mechanism
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
boundary>: <failed invariant/failure mechanism>` and bind its minimal
|
|
22
|
+
reproduction plus decisive signal, not a hash of the symptom. Before retrying,
|
|
23
|
+
count matching caller and recovery no-progress attempts in the current context
|
|
24
|
+
and those records. The maximum is three per exact fingerprint; count only a
|
|
25
|
+
recheck that preserves the same decisive failure. Also record baseline, exact
|
|
26
|
+
failure, hypothesis/probe, attempt number, and any human predicate. Green evidence
|
|
27
|
+
records progress and resolution but does not erase prior failures. A different
|
|
28
|
+
Critical/Important invariant is a new fingerprint. There is no recovery counter
|
|
29
|
+
file or command.
|
|
27
30
|
|
|
28
31
|
## Cleanup checklist: required before declaring done
|
|
29
32
|
|
|
@@ -233,12 +233,22 @@ changes, not a request for permission to retry.
|
|
|
233
233
|
|
|
234
234
|
## Retry cap, no-progress loops, and self-resolve
|
|
235
235
|
|
|
236
|
-
- **
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
236
|
+
- **Fingerprint the failed invariant, not the review round.** An exact causal
|
|
237
|
+
fingerprint is the owning gate/invariant plus its minimal reproduction and
|
|
238
|
+
decisive failure signal. A new DEC/DRIFT number, changed line number, reviewer
|
|
239
|
+
wording, or splitting one finding does not create a new fingerprint.
|
|
240
|
+
- **Cap no-progress retries:** three no-progress attempts per exact causal fingerprint
|
|
241
|
+
across wright and recovery is a hard cap. Only a repair whose narrow recheck
|
|
242
|
+
leaves that fingerprint open or reproduces the same decisive failure consumes
|
|
243
|
+
an attempt. Closing a prior finding with discriminating evidence is progress:
|
|
244
|
+
mark that fingerprint resolved and do not charge it as no-progress. A genuinely
|
|
245
|
+
new Critical or Important finding with a different failed invariant and exact
|
|
246
|
+
evidence gets its own fingerprint and budget; Suggestion, Nit, FYI, or renamed
|
|
247
|
+
evidence cannot open, reset, or extend recovery.
|
|
248
|
+
- **Persist accounting in existing records.** Record each fingerprint,
|
|
249
|
+
reproduction, attempted correction, `progress: resolved|no-progress`, and
|
|
250
|
+
decisive result in `drift.md` and `evidence.md`. Cold resume derives the count
|
|
251
|
+
from those records. There is no recovery counter file or command.
|
|
242
252
|
- **Classify exhaustion:** human-owned contract/risk/access gaps open their gate. Otherwise
|
|
243
253
|
preserve reproduction/dead ends, set `Status: blocked` and `Next step: none — technical recovery exhausted for <causal fingerprint>; requires new evidence or changed failure conditions`.
|
|
244
254
|
Do not emit `/rite-plan unblock`, another phase command, a question, or
|
|
@@ -59,11 +59,19 @@ Autocomplete root remains the caller:
|
|
|
59
59
|
|
|
60
60
|
1. Save the originating phase/action in the native return cursor unless a valid
|
|
61
61
|
one already exists.
|
|
62
|
-
2. Invoke the required repair, Vet, remediation, and proof skills inline.
|
|
62
|
+
2. Invoke the required repair, Vet, remediation, and proof skills inline. After
|
|
63
|
+
Plan repair, run Vet in its recovery mode as a narrow Vet recheck of the prior
|
|
64
|
+
findings, changed paths/criteria, and affected evidence; do not restart a Full
|
|
65
|
+
Vet over unchanged axes. Their
|
|
63
66
|
`STOP` instructions end only those nested phases.
|
|
64
67
|
3. Re-read `state.md` after each nested phase and follow its intermediate
|
|
65
68
|
`next_action`; do not hand the intermediate command to the user.
|
|
66
|
-
4.
|
|
69
|
+
4. Reconcile each exact causal fingerprint from `drift.md` and `evidence.md`.
|
|
70
|
+
Continue automatically when the recheck closes a prior fingerprint or admits
|
|
71
|
+
a genuinely new Critical/Important fingerprint. Charge only a no-progress
|
|
72
|
+
outcome against the same fingerprint; lower-severity novelty cannot prolong
|
|
73
|
+
the chain.
|
|
74
|
+
5. When the prerequisite chain is green, restore and consume the return cursor,
|
|
67
75
|
resume the originating phase, and continue the forward table.
|
|
68
76
|
|
|
69
77
|
Count failed corrections by causal fingerprint under `afk-hitl.md`. Ask only
|
|
@@ -5,6 +5,9 @@ the reason and one resume command when an actual human/safety/access action can
|
|
|
5
5
|
change the state, notify if configured, and stop. Exhausted agent-owned
|
|
6
6
|
technical recovery is terminal for its unchanged causal fingerprint: record
|
|
7
7
|
`Next step: none` and no runnable recovery command. `--ship` cannot bypass them.
|
|
8
|
+
Closure of a prior fingerprint is progress, not exhaustion. A separately evidenced
|
|
9
|
+
Critical/Important failed invariant starts its own bounded fingerprint; it never
|
|
10
|
+
resets or extends the budget of the one just closed.
|
|
8
11
|
|
|
9
12
|
## Always stop (irreversible-risk list: from `afk-hitl.md`)
|
|
10
13
|
|
|
@@ -24,8 +27,10 @@ Agent-owned backtracking is not a stop condition while its causal-fingerprint
|
|
|
24
27
|
budget remains. The active caller invokes the earlier phase inline, follows Vet
|
|
25
28
|
and any bounded remediation, then resumes the originating phase. Persist
|
|
26
29
|
`Next step` for crash recovery, but do not surface it as a command the human must
|
|
27
|
-
submit.
|
|
28
|
-
|
|
30
|
+
submit. Use the repaired finding's narrow Vet recheck to distinguish resolution,
|
|
31
|
+
the same decisive failure, and a genuinely new Critical/Important invariant.
|
|
32
|
+
Stop only after three no-progress attempts on the exact same fingerprint or when
|
|
33
|
+
the remaining choice is a real human/safety/access gate.
|
|
29
34
|
|
|
30
35
|
On technical exhaustion, preserve the fingerprint, reproduction, attempts, and
|
|
31
36
|
dead ends, then stop without `/rite-plan unblock` or another phase command.
|
|
@@ -71,7 +71,9 @@ tests, types, or lint are red:
|
|
|
71
71
|
The fail-on-red path:
|
|
72
72
|
|
|
73
73
|
1. Continue the same wright under `devrites-debug-recovery`, carrying exact output and dead
|
|
74
|
-
ends; cap writer + recovery at three
|
|
74
|
+
ends; cap writer + recovery at three no-progress attempts per exact causal fingerprint.
|
|
75
|
+
A correction that closes the reproduction is progress; a different evidenced
|
|
76
|
+
Critical/Important invariant starts a separate fingerprint.
|
|
75
77
|
2. Green → record the slice. Product-contract/irreversible ambiguity → write the genuine
|
|
76
78
|
human gate. Missing human-only credential/permission → write a human-intervention gate.
|
|
77
79
|
3. Any other exhausted objective failure → set `Status: blocked`, preserve the reproduction,
|
|
@@ -33,8 +33,10 @@ See [`one-slice-cycle.md`](one-slice-cycle.md); candidate lifecycle is
|
|
|
33
33
|
is not success.
|
|
34
34
|
|
|
35
35
|
Technical failure uses bounded `devrites-debug-recovery`: reapply the host gate
|
|
36
|
-
before an accepted in-slice correction, keep one
|
|
37
|
-
and never rerun an unchanged check.
|
|
36
|
+
before an accepted in-slice correction, keep one exact fingerprint/three
|
|
37
|
+
no-progress attempts, and never rerun an unchanged check. A closed reproduction
|
|
38
|
+
is progress; a different Critical/Important invariant gets its own fingerprint.
|
|
39
|
+
Ask humans only for product decisions,
|
|
38
40
|
irreversible risk, or genuinely human-only access.
|
|
39
41
|
7. **Record.** After green proof, upsert `touched-files.md`'s authoritative candidate
|
|
40
42
|
manifest from the actual scoped diff with explicit `present`/`deleted` rows;
|
|
@@ -60,7 +60,10 @@ Pull these via `Read` when relevant:
|
|
|
60
60
|
- **Prove remains the controlling caller during technical backtracking.** Save
|
|
61
61
|
its return cursor, invoke Plan/Vet or bounded remediation inline, consume each
|
|
62
62
|
nested phase boundary, then resume the failed Prove step. Never make the human
|
|
63
|
-
submit an agent-owned repair, re-vet, or proof-rerun command.
|
|
63
|
+
submit an agent-owned repair, re-vet, or proof-rerun command. Apply `afk-hitl.md`
|
|
64
|
+
progress accounting: only three no-progress attempts on the exact same fingerprint
|
|
65
|
+
exhaust recovery; a closed prior finding or a genuinely new
|
|
66
|
+
Critical/Important fingerprint continues inside this invocation.
|
|
64
67
|
|
|
65
68
|
## Released-workspace refresh entry
|
|
66
69
|
|
|
@@ -20,7 +20,9 @@ loop to `devrites-debug-recovery`.
|
|
|
20
20
|
- Quote the real error text; don't paraphrase it away.
|
|
21
21
|
- Don't loosen/delete a failing assertion to get green: investigate whether it's drift.
|
|
22
22
|
- Don't add blanket retries/sleeps to hide flakiness.
|
|
23
|
-
- Three
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
- Three no-progress attempts on the exact same causal fingerprint consume the
|
|
24
|
+
shared recovery cap. A recheck that closes the reproduction is progress; a
|
|
25
|
+
different evidenced Critical/Important invariant gets its own fingerprint.
|
|
26
|
+
Preserve the reproduction and dead ends, then stop once as a technical blocker.
|
|
27
|
+
Ask only when the remaining decision is human-owned.
|
|
26
28
|
- A failure you can't fix in scope is a recorded **blocker**, not a silent skip.
|
|
@@ -43,6 +43,9 @@ Pull the standard named by the active axis: `principles.md`, `patterns.md`,
|
|
|
43
43
|
- **Honor a recovery origin.** Preserve a valid technical-backtracking return
|
|
44
44
|
cursor throughout review. Agent-owned `NEEDS REPLAN` returns internally to the
|
|
45
45
|
controlling caller; it never becomes a request for the human to invoke Plan.
|
|
46
|
+
- **Recovery recheck is bounded.** A valid technical-backtracking cursor plus a
|
|
47
|
+
recorded open fingerprint enters the Recovery recheck below. Recovery recheck
|
|
48
|
+
does not start another Full Vet or repeat unaffected axes/reviewers.
|
|
46
49
|
|
|
47
50
|
## Workflow
|
|
48
51
|
0. **Read `.claude/skills/devrites-lib/reference/standards/core.md`** first.
|
|
@@ -57,12 +60,26 @@ Pull the standard named by the active axis: `principles.md`, `patterns.md`,
|
|
|
57
60
|
`.claude/skills/devrites-lib/reference/standards/tooling.md`) for placement / blast-radius / reuse checks.
|
|
58
61
|
1. **Set review depth. Never skip this step.** Apply
|
|
59
62
|
[`reference/depth.md`](reference/depth.md) exactly. Every plan leaves a recorded
|
|
60
|
-
engineering verdict and `test-plan.md` coverage map.
|
|
61
|
-
|
|
63
|
+
engineering verdict and `test-plan.md` coverage map. For an admitted Recovery
|
|
64
|
+
recheck, retain the prior depth and proceed to step 1b instead of starting a new
|
|
65
|
+
depth/pass.
|
|
66
|
+
1a. **Independent pass at every initial depth.** Freeze the candidate; dispatch exact
|
|
62
67
|
`devrites-plan-reviewer` fresh/read-only and validate its report. Add exact
|
|
63
68
|
`devrites-devex-reviewer` for developer surfaces and require the current exact
|
|
64
69
|
`devrites-strategy-reviewer` verdict after significant Temper. Missing accounts
|
|
65
70
|
block; never substitute inline work.
|
|
71
|
+
1b. **Recovery recheck.** Require the valid return cursor, prior accepted findings,
|
|
72
|
+
exact open fingerprint/reproduction, repaired candidate identity, changed
|
|
73
|
+
paths/criteria, and affected evidence from `drift.md` / `evidence.md`. Freeze
|
|
74
|
+
that packet and dispatch each exact owning reviewer once, fresh/read-only and
|
|
75
|
+
limited to those inputs. Do not rerun unaffected reviewers or the broad steps
|
|
76
|
+
2-4 inventory. Mark the prior fingerprint resolved only when discriminating
|
|
77
|
+
evidence closes its reproduction; otherwise record one no-progress outcome.
|
|
78
|
+
A newly caused or exposed Critical or Important finding may block only with a
|
|
79
|
+
different failed invariant, exact evidence in the changed/affected boundary,
|
|
80
|
+
and a new fingerprint. A Suggestion, Nit, or FYI cannot keep recovery open.
|
|
81
|
+
Reconcile the common artifact/readiness gates below, then return to the caller
|
|
82
|
+
or its next repair; never convert the nested result into a human command.
|
|
66
83
|
2. **Scope challenge (blocking gate):** apply §0 of
|
|
67
84
|
[`reference/review-axes.md`](reference/review-axes.md). Search accepted ADRs and
|
|
68
85
|
relevant workspace `decisions.md` files directly. Harden to the smallest
|
|
@@ -97,10 +97,11 @@ an escalation and do not proceed.**
|
|
|
97
97
|
not a quiet edit. The root inspects the returned diff and dedicated test
|
|
98
98
|
analysis treats a weakened test as a Critical STOP.
|
|
99
99
|
For non-trivial failure, invoke `devrites-debug-recovery` with the exact error,
|
|
100
|
-
hypotheses, and dead ends. Caller and recovery share three
|
|
101
|
-
causal fingerprint. Count
|
|
102
|
-
failure
|
|
103
|
-
|
|
100
|
+
hypotheses, and dead ends. Caller and recovery share three no-progress attempts per
|
|
101
|
+
exact causal fingerprint. Count only corrections whose recheck preserves the same
|
|
102
|
+
decisive failure, using attempts supplied in the task/current context; include each in
|
|
103
|
+
`dead_ends`. Resolution is progress, while a different cause returns to the caller as a
|
|
104
|
+
new fingerprint. At the limit return the gate and repro. `Escalation` is only for product/irreversible choices
|
|
104
105
|
or human-only access; technical failure is a blocker.
|
|
105
106
|
5. **RETURN** the structured artifact (below) and stop. Do not start the next slice.
|
|
106
107
|
|
|
@@ -58,14 +58,18 @@ has no clear next move.
|
|
|
58
58
|
- **Durably record class and rationale** in `decisions.md` and the applicable
|
|
59
59
|
`evidence.md` or `## Dead ends` entry.
|
|
60
60
|
- **One causal fingerprint, counted by the caller.** Normalize the root cause as
|
|
61
|
-
`<affected boundary>: <failure mechanism>`
|
|
61
|
+
`<affected boundary>: <failed invariant/failure mechanism>` and bind its minimal
|
|
62
|
+
reproduction plus decisive signal rather than hashing symptom text.
|
|
62
63
|
The caller and recovery attempts share one count: read the current context and
|
|
63
|
-
recorded `## Dead ends` / `evidence.md`, then include every
|
|
64
|
+
recorded `## Dead ends` / `evidence.md`, then include every no-progress attempt
|
|
64
65
|
with that fingerprint. Reclassify only on new causal evidence.
|
|
65
|
-
- **A maximum of three
|
|
66
|
-
attempt
|
|
67
|
-
|
|
66
|
+
- **A maximum of three no-progress attempts per exact causal fingerprint stops the loop.**
|
|
67
|
+
Count an attempt only when its recheck preserves the same decisive failure.
|
|
68
|
+
Record attempt number, exact failure, hypothesis, probe, and failed idea after
|
|
69
|
+
each; closure is progress and a different Critical/Important invariant is a new
|
|
70
|
+
fingerprint. There is no JSONL ledger,
|
|
68
71
|
counter command, or reset-on-green operation. Product/acceptance ambiguity, irreversible risk, or
|
|
69
72
|
human-only access becomes a human gate; otherwise return reproducible `blocked` with
|
|
70
|
-
`Next:
|
|
71
|
-
|
|
73
|
+
`Next: none — technical recovery exhausted for <causal fingerprint>`, never request
|
|
74
|
+
attempt four. While budget remains, coupled failure requiring behavior change routes
|
|
75
|
+
`/rite-plan repair` inline; behavior-neutral rerouting uses `unblock` inline.
|
package/pack/generated/claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md
CHANGED
|
@@ -18,12 +18,15 @@ Only human credentials/quotas/actions or irreversible work pause; never ask to r
|
|
|
18
18
|
|
|
19
19
|
Record class/routing in `decisions.md` and each failed attempt in `evidence.md`
|
|
20
20
|
or `## Dead ends`. Use one stable causal fingerprint shaped as `<affected
|
|
21
|
-
boundary>: <failure mechanism
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
boundary>: <failed invariant/failure mechanism>` and bind its minimal
|
|
22
|
+
reproduction plus decisive signal, not a hash of the symptom. Before retrying,
|
|
23
|
+
count matching caller and recovery no-progress attempts in the current context
|
|
24
|
+
and those records. The maximum is three per exact fingerprint; count only a
|
|
25
|
+
recheck that preserves the same decisive failure. Also record baseline, exact
|
|
26
|
+
failure, hypothesis/probe, attempt number, and any human predicate. Green evidence
|
|
27
|
+
records progress and resolution but does not erase prior failures. A different
|
|
28
|
+
Critical/Important invariant is a new fingerprint. There is no recovery counter
|
|
29
|
+
file or command.
|
|
27
30
|
|
|
28
31
|
## Cleanup checklist: required before declaring done
|
|
29
32
|
|
|
@@ -233,12 +233,22 @@ changes, not a request for permission to retry.
|
|
|
233
233
|
|
|
234
234
|
## Retry cap, no-progress loops, and self-resolve
|
|
235
235
|
|
|
236
|
-
- **
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
236
|
+
- **Fingerprint the failed invariant, not the review round.** An exact causal
|
|
237
|
+
fingerprint is the owning gate/invariant plus its minimal reproduction and
|
|
238
|
+
decisive failure signal. A new DEC/DRIFT number, changed line number, reviewer
|
|
239
|
+
wording, or splitting one finding does not create a new fingerprint.
|
|
240
|
+
- **Cap no-progress retries:** three no-progress attempts per exact causal fingerprint
|
|
241
|
+
across wright and recovery is a hard cap. Only a repair whose narrow recheck
|
|
242
|
+
leaves that fingerprint open or reproduces the same decisive failure consumes
|
|
243
|
+
an attempt. Closing a prior finding with discriminating evidence is progress:
|
|
244
|
+
mark that fingerprint resolved and do not charge it as no-progress. A genuinely
|
|
245
|
+
new Critical or Important finding with a different failed invariant and exact
|
|
246
|
+
evidence gets its own fingerprint and budget; Suggestion, Nit, FYI, or renamed
|
|
247
|
+
evidence cannot open, reset, or extend recovery.
|
|
248
|
+
- **Persist accounting in existing records.** Record each fingerprint,
|
|
249
|
+
reproduction, attempted correction, `progress: resolved|no-progress`, and
|
|
250
|
+
decisive result in `drift.md` and `evidence.md`. Cold resume derives the count
|
|
251
|
+
from those records. There is no recovery counter file or command.
|
|
242
252
|
- **Classify exhaustion:** human-owned contract/risk/access gaps open their gate. Otherwise
|
|
243
253
|
preserve reproduction/dead ends, set `Status: blocked` and `Next step: none — technical recovery exhausted for <causal fingerprint>; requires new evidence or changed failure conditions`.
|
|
244
254
|
Do not emit `/rite-plan unblock`, another phase command, a question, or
|
|
@@ -59,11 +59,19 @@ Autocomplete root remains the caller:
|
|
|
59
59
|
|
|
60
60
|
1. Save the originating phase/action in the native return cursor unless a valid
|
|
61
61
|
one already exists.
|
|
62
|
-
2. Invoke the required repair, Vet, remediation, and proof skills inline.
|
|
62
|
+
2. Invoke the required repair, Vet, remediation, and proof skills inline. After
|
|
63
|
+
Plan repair, run Vet in its recovery mode as a narrow Vet recheck of the prior
|
|
64
|
+
findings, changed paths/criteria, and affected evidence; do not restart a Full
|
|
65
|
+
Vet over unchanged axes. Their
|
|
63
66
|
`STOP` instructions end only those nested phases.
|
|
64
67
|
3. Re-read `state.md` after each nested phase and follow its intermediate
|
|
65
68
|
`next_action`; do not hand the intermediate command to the user.
|
|
66
|
-
4.
|
|
69
|
+
4. Reconcile each exact causal fingerprint from `drift.md` and `evidence.md`.
|
|
70
|
+
Continue automatically when the recheck closes a prior fingerprint or admits
|
|
71
|
+
a genuinely new Critical/Important fingerprint. Charge only a no-progress
|
|
72
|
+
outcome against the same fingerprint; lower-severity novelty cannot prolong
|
|
73
|
+
the chain.
|
|
74
|
+
5. When the prerequisite chain is green, restore and consume the return cursor,
|
|
67
75
|
resume the originating phase, and continue the forward table.
|
|
68
76
|
|
|
69
77
|
Count failed corrections by causal fingerprint under `afk-hitl.md`. Ask only
|
|
@@ -5,6 +5,9 @@ the reason and one resume command when an actual human/safety/access action can
|
|
|
5
5
|
change the state, notify if configured, and stop. Exhausted agent-owned
|
|
6
6
|
technical recovery is terminal for its unchanged causal fingerprint: record
|
|
7
7
|
`Next step: none` and no runnable recovery command. `--ship` cannot bypass them.
|
|
8
|
+
Closure of a prior fingerprint is progress, not exhaustion. A separately evidenced
|
|
9
|
+
Critical/Important failed invariant starts its own bounded fingerprint; it never
|
|
10
|
+
resets or extends the budget of the one just closed.
|
|
8
11
|
|
|
9
12
|
## Always stop (irreversible-risk list: from `afk-hitl.md`)
|
|
10
13
|
|
|
@@ -24,8 +27,10 @@ Agent-owned backtracking is not a stop condition while its causal-fingerprint
|
|
|
24
27
|
budget remains. The active caller invokes the earlier phase inline, follows Vet
|
|
25
28
|
and any bounded remediation, then resumes the originating phase. Persist
|
|
26
29
|
`Next step` for crash recovery, but do not surface it as a command the human must
|
|
27
|
-
submit.
|
|
28
|
-
|
|
30
|
+
submit. Use the repaired finding's narrow Vet recheck to distinguish resolution,
|
|
31
|
+
the same decisive failure, and a genuinely new Critical/Important invariant.
|
|
32
|
+
Stop only after three no-progress attempts on the exact same fingerprint or when
|
|
33
|
+
the remaining choice is a real human/safety/access gate.
|
|
29
34
|
|
|
30
35
|
On technical exhaustion, preserve the fingerprint, reproduction, attempts, and
|
|
31
36
|
dead ends, then stop without `/rite-plan unblock` or another phase command.
|
|
@@ -71,7 +71,9 @@ tests, types, or lint are red:
|
|
|
71
71
|
The fail-on-red path:
|
|
72
72
|
|
|
73
73
|
1. Continue the same wright under `devrites-debug-recovery`, carrying exact output and dead
|
|
74
|
-
ends; cap writer + recovery at three
|
|
74
|
+
ends; cap writer + recovery at three no-progress attempts per exact causal fingerprint.
|
|
75
|
+
A correction that closes the reproduction is progress; a different evidenced
|
|
76
|
+
Critical/Important invariant starts a separate fingerprint.
|
|
75
77
|
2. Green → record the slice. Product-contract/irreversible ambiguity → write the genuine
|
|
76
78
|
human gate. Missing human-only credential/permission → write a human-intervention gate.
|
|
77
79
|
3. Any other exhausted objective failure → set `Status: blocked`, preserve the reproduction,
|
|
@@ -33,8 +33,10 @@ See [`one-slice-cycle.md`](one-slice-cycle.md); candidate lifecycle is
|
|
|
33
33
|
is not success.
|
|
34
34
|
|
|
35
35
|
Technical failure uses bounded `devrites-debug-recovery`: reapply the host gate
|
|
36
|
-
before an accepted in-slice correction, keep one
|
|
37
|
-
and never rerun an unchanged check.
|
|
36
|
+
before an accepted in-slice correction, keep one exact fingerprint/three
|
|
37
|
+
no-progress attempts, and never rerun an unchanged check. A closed reproduction
|
|
38
|
+
is progress; a different Critical/Important invariant gets its own fingerprint.
|
|
39
|
+
Ask humans only for product decisions,
|
|
38
40
|
irreversible risk, or genuinely human-only access.
|
|
39
41
|
7. **Record.** After green proof, upsert `touched-files.md`'s authoritative candidate
|
|
40
42
|
manifest from the actual scoped diff with explicit `present`/`deleted` rows;
|
|
@@ -60,7 +60,10 @@ Pull these via `Read` when relevant:
|
|
|
60
60
|
- **Prove remains the controlling caller during technical backtracking.** Save
|
|
61
61
|
its return cursor, invoke Plan/Vet or bounded remediation inline, consume each
|
|
62
62
|
nested phase boundary, then resume the failed Prove step. Never make the human
|
|
63
|
-
submit an agent-owned repair, re-vet, or proof-rerun command.
|
|
63
|
+
submit an agent-owned repair, re-vet, or proof-rerun command. Apply `afk-hitl.md`
|
|
64
|
+
progress accounting: only three no-progress attempts on the exact same fingerprint
|
|
65
|
+
exhaust recovery; a closed prior finding or a genuinely new
|
|
66
|
+
Critical/Important fingerprint continues inside this invocation.
|
|
64
67
|
|
|
65
68
|
## Released-workspace refresh entry
|
|
66
69
|
|
|
@@ -20,7 +20,9 @@ loop to `devrites-debug-recovery`.
|
|
|
20
20
|
- Quote the real error text; don't paraphrase it away.
|
|
21
21
|
- Don't loosen/delete a failing assertion to get green: investigate whether it's drift.
|
|
22
22
|
- Don't add blanket retries/sleeps to hide flakiness.
|
|
23
|
-
- Three
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
- Three no-progress attempts on the exact same causal fingerprint consume the
|
|
24
|
+
shared recovery cap. A recheck that closes the reproduction is progress; a
|
|
25
|
+
different evidenced Critical/Important invariant gets its own fingerprint.
|
|
26
|
+
Preserve the reproduction and dead ends, then stop once as a technical blocker.
|
|
27
|
+
Ask only when the remaining decision is human-owned.
|
|
26
28
|
- A failure you can't fix in scope is a recorded **blocker**, not a silent skip.
|
|
@@ -43,6 +43,9 @@ Pull the standard named by the active axis: `principles.md`, `patterns.md`,
|
|
|
43
43
|
- **Honor a recovery origin.** Preserve a valid technical-backtracking return
|
|
44
44
|
cursor throughout review. Agent-owned `NEEDS REPLAN` returns internally to the
|
|
45
45
|
controlling caller; it never becomes a request for the human to invoke Plan.
|
|
46
|
+
- **Recovery recheck is bounded.** A valid technical-backtracking cursor plus a
|
|
47
|
+
recorded open fingerprint enters the Recovery recheck below. Recovery recheck
|
|
48
|
+
does not start another Full Vet or repeat unaffected axes/reviewers.
|
|
46
49
|
|
|
47
50
|
## Workflow
|
|
48
51
|
0. **Read `.claude/skills/devrites-lib/reference/standards/core.md`** first.
|
|
@@ -57,12 +60,26 @@ Pull the standard named by the active axis: `principles.md`, `patterns.md`,
|
|
|
57
60
|
`.claude/skills/devrites-lib/reference/standards/tooling.md`) for placement / blast-radius / reuse checks.
|
|
58
61
|
1. **Set review depth. Never skip this step.** Apply
|
|
59
62
|
[`reference/depth.md`](reference/depth.md) exactly. Every plan leaves a recorded
|
|
60
|
-
engineering verdict and `test-plan.md` coverage map.
|
|
61
|
-
|
|
63
|
+
engineering verdict and `test-plan.md` coverage map. For an admitted Recovery
|
|
64
|
+
recheck, retain the prior depth and proceed to step 1b instead of starting a new
|
|
65
|
+
depth/pass.
|
|
66
|
+
1a. **Independent pass at every initial depth.** Freeze the candidate; dispatch exact
|
|
62
67
|
`devrites-plan-reviewer` fresh/read-only and validate its report. Add exact
|
|
63
68
|
`devrites-devex-reviewer` for developer surfaces and require the current exact
|
|
64
69
|
`devrites-strategy-reviewer` verdict after significant Temper. Missing accounts
|
|
65
70
|
block; never substitute inline work.
|
|
71
|
+
1b. **Recovery recheck.** Require the valid return cursor, prior accepted findings,
|
|
72
|
+
exact open fingerprint/reproduction, repaired candidate identity, changed
|
|
73
|
+
paths/criteria, and affected evidence from `drift.md` / `evidence.md`. Freeze
|
|
74
|
+
that packet and dispatch each exact owning reviewer once, fresh/read-only and
|
|
75
|
+
limited to those inputs. Do not rerun unaffected reviewers or the broad steps
|
|
76
|
+
2-4 inventory. Mark the prior fingerprint resolved only when discriminating
|
|
77
|
+
evidence closes its reproduction; otherwise record one no-progress outcome.
|
|
78
|
+
A newly caused or exposed Critical or Important finding may block only with a
|
|
79
|
+
different failed invariant, exact evidence in the changed/affected boundary,
|
|
80
|
+
and a new fingerprint. A Suggestion, Nit, or FYI cannot keep recovery open.
|
|
81
|
+
Reconcile the common artifact/readiness gates below, then return to the caller
|
|
82
|
+
or its next repair; never convert the nested result into a human command.
|
|
66
83
|
2. **Scope challenge (blocking gate):** apply §0 of
|
|
67
84
|
[`reference/review-axes.md`](reference/review-axes.md). Search accepted ADRs and
|
|
68
85
|
relevant workspace `decisions.md` files directly. Harden to the smallest
|
|
@@ -95,10 +95,11 @@ an escalation and do not proceed.**
|
|
|
95
95
|
not a quiet edit. The root inspects the returned diff and dedicated test
|
|
96
96
|
analysis treats a weakened test as a Critical STOP.
|
|
97
97
|
For non-trivial failure, invoke `devrites-debug-recovery` with the exact error,
|
|
98
|
-
hypotheses, and dead ends. Caller and recovery share three
|
|
99
|
-
causal fingerprint. Count
|
|
100
|
-
failure
|
|
101
|
-
|
|
98
|
+
hypotheses, and dead ends. Caller and recovery share three no-progress attempts per
|
|
99
|
+
exact causal fingerprint. Count only corrections whose recheck preserves the same
|
|
100
|
+
decisive failure, using attempts supplied in the task/current context; include each in
|
|
101
|
+
`dead_ends`. Resolution is progress, while a different cause returns to the caller as a
|
|
102
|
+
new fingerprint. At the limit return the gate and repro. `Escalation` is only for product/irreversible choices
|
|
102
103
|
or human-only access; technical failure is a blocker.
|
|
103
104
|
5. **RETURN** the structured artifact (below) and stop. Do not start the next slice.
|
|
104
105
|
|
|
@@ -58,14 +58,18 @@ has no clear next move.
|
|
|
58
58
|
- **Durably record class and rationale** in `decisions.md` and the applicable
|
|
59
59
|
`evidence.md` or `## Dead ends` entry.
|
|
60
60
|
- **One causal fingerprint, counted by the caller.** Normalize the root cause as
|
|
61
|
-
`<affected boundary>: <failure mechanism>`
|
|
61
|
+
`<affected boundary>: <failed invariant/failure mechanism>` and bind its minimal
|
|
62
|
+
reproduction plus decisive signal rather than hashing symptom text.
|
|
62
63
|
The caller and recovery attempts share one count: read the current context and
|
|
63
|
-
recorded `## Dead ends` / `evidence.md`, then include every
|
|
64
|
+
recorded `## Dead ends` / `evidence.md`, then include every no-progress attempt
|
|
64
65
|
with that fingerprint. Reclassify only on new causal evidence.
|
|
65
|
-
- **A maximum of three
|
|
66
|
-
attempt
|
|
67
|
-
|
|
66
|
+
- **A maximum of three no-progress attempts per exact causal fingerprint stops the loop.**
|
|
67
|
+
Count an attempt only when its recheck preserves the same decisive failure.
|
|
68
|
+
Record attempt number, exact failure, hypothesis, probe, and failed idea after
|
|
69
|
+
each; closure is progress and a different Critical/Important invariant is a new
|
|
70
|
+
fingerprint. There is no JSONL ledger,
|
|
68
71
|
counter command, or reset-on-green operation. Product/acceptance ambiguity, irreversible risk, or
|
|
69
72
|
human-only access becomes a human gate; otherwise return reproducible `blocked` with
|
|
70
|
-
`Next:
|
|
71
|
-
|
|
73
|
+
`Next: none — technical recovery exhausted for <causal fingerprint>`, never request
|
|
74
|
+
attempt four. While budget remains, coupled failure requiring behavior change routes
|
|
75
|
+
`$rite-plan repair` inline; behavior-neutral rerouting uses `unblock` inline.
|
package/pack/generated/codex/skills/devrites-debug-recovery/reference/cleanup-and-classify.md
CHANGED
|
@@ -18,12 +18,15 @@ Only human credentials/quotas/actions or irreversible work pause; never ask to r
|
|
|
18
18
|
|
|
19
19
|
Record class/routing in `decisions.md` and each failed attempt in `evidence.md`
|
|
20
20
|
or `## Dead ends`. Use one stable causal fingerprint shaped as `<affected
|
|
21
|
-
boundary>: <failure mechanism
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
boundary>: <failed invariant/failure mechanism>` and bind its minimal
|
|
22
|
+
reproduction plus decisive signal, not a hash of the symptom. Before retrying,
|
|
23
|
+
count matching caller and recovery no-progress attempts in the current context
|
|
24
|
+
and those records. The maximum is three per exact fingerprint; count only a
|
|
25
|
+
recheck that preserves the same decisive failure. Also record baseline, exact
|
|
26
|
+
failure, hypothesis/probe, attempt number, and any human predicate. Green evidence
|
|
27
|
+
records progress and resolution but does not erase prior failures. A different
|
|
28
|
+
Critical/Important invariant is a new fingerprint. There is no recovery counter
|
|
29
|
+
file or command.
|
|
27
30
|
|
|
28
31
|
## Cleanup checklist: required before declaring done
|
|
29
32
|
|
|
@@ -233,12 +233,22 @@ changes, not a request for permission to retry.
|
|
|
233
233
|
|
|
234
234
|
## Retry cap, no-progress loops, and self-resolve
|
|
235
235
|
|
|
236
|
-
- **
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
236
|
+
- **Fingerprint the failed invariant, not the review round.** An exact causal
|
|
237
|
+
fingerprint is the owning gate/invariant plus its minimal reproduction and
|
|
238
|
+
decisive failure signal. A new DEC/DRIFT number, changed line number, reviewer
|
|
239
|
+
wording, or splitting one finding does not create a new fingerprint.
|
|
240
|
+
- **Cap no-progress retries:** three no-progress attempts per exact causal fingerprint
|
|
241
|
+
across wright and recovery is a hard cap. Only a repair whose narrow recheck
|
|
242
|
+
leaves that fingerprint open or reproduces the same decisive failure consumes
|
|
243
|
+
an attempt. Closing a prior finding with discriminating evidence is progress:
|
|
244
|
+
mark that fingerprint resolved and do not charge it as no-progress. A genuinely
|
|
245
|
+
new Critical or Important finding with a different failed invariant and exact
|
|
246
|
+
evidence gets its own fingerprint and budget; Suggestion, Nit, FYI, or renamed
|
|
247
|
+
evidence cannot open, reset, or extend recovery.
|
|
248
|
+
- **Persist accounting in existing records.** Record each fingerprint,
|
|
249
|
+
reproduction, attempted correction, `progress: resolved|no-progress`, and
|
|
250
|
+
decisive result in `drift.md` and `evidence.md`. Cold resume derives the count
|
|
251
|
+
from those records. There is no recovery counter file or command.
|
|
242
252
|
- **Classify exhaustion:** human-owned contract/risk/access gaps open their gate. Otherwise
|
|
243
253
|
preserve reproduction/dead ends, set `Status: blocked` and `Next step: none — technical recovery exhausted for <causal fingerprint>; requires new evidence or changed failure conditions`.
|
|
244
254
|
Do not emit `$rite-plan unblock`, another phase command, a question, or
|
|
@@ -59,11 +59,19 @@ Autocomplete root remains the caller:
|
|
|
59
59
|
|
|
60
60
|
1. Save the originating phase/action in the native return cursor unless a valid
|
|
61
61
|
one already exists.
|
|
62
|
-
2. Invoke the required repair, Vet, remediation, and proof skills inline.
|
|
62
|
+
2. Invoke the required repair, Vet, remediation, and proof skills inline. After
|
|
63
|
+
Plan repair, run Vet in its recovery mode as a narrow Vet recheck of the prior
|
|
64
|
+
findings, changed paths/criteria, and affected evidence; do not restart a Full
|
|
65
|
+
Vet over unchanged axes. Their
|
|
63
66
|
`STOP` instructions end only those nested phases.
|
|
64
67
|
3. Re-read `state.md` after each nested phase and follow its intermediate
|
|
65
68
|
`next_action`; do not hand the intermediate command to the user.
|
|
66
|
-
4.
|
|
69
|
+
4. Reconcile each exact causal fingerprint from `drift.md` and `evidence.md`.
|
|
70
|
+
Continue automatically when the recheck closes a prior fingerprint or admits
|
|
71
|
+
a genuinely new Critical/Important fingerprint. Charge only a no-progress
|
|
72
|
+
outcome against the same fingerprint; lower-severity novelty cannot prolong
|
|
73
|
+
the chain.
|
|
74
|
+
5. When the prerequisite chain is green, restore and consume the return cursor,
|
|
67
75
|
resume the originating phase, and continue the forward table.
|
|
68
76
|
|
|
69
77
|
Count failed corrections by causal fingerprint under `afk-hitl.md`. Ask only
|
|
@@ -5,6 +5,9 @@ the reason and one resume command when an actual human/safety/access action can
|
|
|
5
5
|
change the state, notify if configured, and stop. Exhausted agent-owned
|
|
6
6
|
technical recovery is terminal for its unchanged causal fingerprint: record
|
|
7
7
|
`Next step: none` and no runnable recovery command. `--ship` cannot bypass them.
|
|
8
|
+
Closure of a prior fingerprint is progress, not exhaustion. A separately evidenced
|
|
9
|
+
Critical/Important failed invariant starts its own bounded fingerprint; it never
|
|
10
|
+
resets or extends the budget of the one just closed.
|
|
8
11
|
|
|
9
12
|
## Always stop (irreversible-risk list: from `afk-hitl.md`)
|
|
10
13
|
|
|
@@ -24,8 +27,10 @@ Agent-owned backtracking is not a stop condition while its causal-fingerprint
|
|
|
24
27
|
budget remains. The active caller invokes the earlier phase inline, follows Vet
|
|
25
28
|
and any bounded remediation, then resumes the originating phase. Persist
|
|
26
29
|
`Next step` for crash recovery, but do not surface it as a command the human must
|
|
27
|
-
submit.
|
|
28
|
-
|
|
30
|
+
submit. Use the repaired finding's narrow Vet recheck to distinguish resolution,
|
|
31
|
+
the same decisive failure, and a genuinely new Critical/Important invariant.
|
|
32
|
+
Stop only after three no-progress attempts on the exact same fingerprint or when
|
|
33
|
+
the remaining choice is a real human/safety/access gate.
|
|
29
34
|
|
|
30
35
|
On technical exhaustion, preserve the fingerprint, reproduction, attempts, and
|
|
31
36
|
dead ends, then stop without `$rite-plan unblock` or another phase command.
|
|
@@ -71,7 +71,9 @@ tests, types, or lint are red:
|
|
|
71
71
|
The fail-on-red path:
|
|
72
72
|
|
|
73
73
|
1. Continue the same wright under `devrites-debug-recovery`, carrying exact output and dead
|
|
74
|
-
ends; cap writer + recovery at three
|
|
74
|
+
ends; cap writer + recovery at three no-progress attempts per exact causal fingerprint.
|
|
75
|
+
A correction that closes the reproduction is progress; a different evidenced
|
|
76
|
+
Critical/Important invariant starts a separate fingerprint.
|
|
75
77
|
2. Green → record the slice. Product-contract/irreversible ambiguity → write the genuine
|
|
76
78
|
human gate. Missing human-only credential/permission → write a human-intervention gate.
|
|
77
79
|
3. Any other exhausted objective failure → set `Status: blocked`, preserve the reproduction,
|
|
@@ -33,8 +33,10 @@ See [`one-slice-cycle.md`](one-slice-cycle.md); candidate lifecycle is
|
|
|
33
33
|
is not success.
|
|
34
34
|
|
|
35
35
|
Technical failure uses bounded `devrites-debug-recovery`: reapply the host gate
|
|
36
|
-
before an accepted in-slice correction, keep one
|
|
37
|
-
and never rerun an unchanged check.
|
|
36
|
+
before an accepted in-slice correction, keep one exact fingerprint/three
|
|
37
|
+
no-progress attempts, and never rerun an unchanged check. A closed reproduction
|
|
38
|
+
is progress; a different Critical/Important invariant gets its own fingerprint.
|
|
39
|
+
Ask humans only for product decisions,
|
|
38
40
|
irreversible risk, or genuinely human-only access.
|
|
39
41
|
7. **Record.** After green proof, upsert `touched-files.md`'s authoritative candidate
|
|
40
42
|
manifest from the actual scoped diff with explicit `present`/`deleted` rows;
|
|
@@ -60,7 +60,10 @@ Pull these via `Read` when relevant:
|
|
|
60
60
|
- **Prove remains the controlling caller during technical backtracking.** Save
|
|
61
61
|
its return cursor, invoke Plan/Vet or bounded remediation inline, consume each
|
|
62
62
|
nested phase boundary, then resume the failed Prove step. Never make the human
|
|
63
|
-
submit an agent-owned repair, re-vet, or proof-rerun command.
|
|
63
|
+
submit an agent-owned repair, re-vet, or proof-rerun command. Apply `afk-hitl.md`
|
|
64
|
+
progress accounting: only three no-progress attempts on the exact same fingerprint
|
|
65
|
+
exhaust recovery; a closed prior finding or a genuinely new
|
|
66
|
+
Critical/Important fingerprint continues inside this invocation.
|
|
64
67
|
|
|
65
68
|
## Released-workspace refresh entry
|
|
66
69
|
|
|
@@ -20,7 +20,9 @@ loop to `devrites-debug-recovery`.
|
|
|
20
20
|
- Quote the real error text; don't paraphrase it away.
|
|
21
21
|
- Don't loosen/delete a failing assertion to get green: investigate whether it's drift.
|
|
22
22
|
- Don't add blanket retries/sleeps to hide flakiness.
|
|
23
|
-
- Three
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
- Three no-progress attempts on the exact same causal fingerprint consume the
|
|
24
|
+
shared recovery cap. A recheck that closes the reproduction is progress; a
|
|
25
|
+
different evidenced Critical/Important invariant gets its own fingerprint.
|
|
26
|
+
Preserve the reproduction and dead ends, then stop once as a technical blocker.
|
|
27
|
+
Ask only when the remaining decision is human-owned.
|
|
26
28
|
- A failure you can't fix in scope is a recorded **blocker**, not a silent skip.
|
|
@@ -43,6 +43,9 @@ Pull the standard named by the active axis: `principles.md`, `patterns.md`,
|
|
|
43
43
|
- **Honor a recovery origin.** Preserve a valid technical-backtracking return
|
|
44
44
|
cursor throughout review. Agent-owned `NEEDS REPLAN` returns internally to the
|
|
45
45
|
controlling caller; it never becomes a request for the human to invoke Plan.
|
|
46
|
+
- **Recovery recheck is bounded.** A valid technical-backtracking cursor plus a
|
|
47
|
+
recorded open fingerprint enters the Recovery recheck below. Recovery recheck
|
|
48
|
+
does not start another Full Vet or repeat unaffected axes/reviewers.
|
|
46
49
|
|
|
47
50
|
## Workflow
|
|
48
51
|
0. **Read `.agents/skills/devrites-lib/reference/standards/core.md`** first.
|
|
@@ -57,12 +60,26 @@ Pull the standard named by the active axis: `principles.md`, `patterns.md`,
|
|
|
57
60
|
`.agents/skills/devrites-lib/reference/standards/tooling.md`) for placement / blast-radius / reuse checks.
|
|
58
61
|
1. **Set review depth. Never skip this step.** Apply
|
|
59
62
|
[`reference/depth.md`](reference/depth.md) exactly. Every plan leaves a recorded
|
|
60
|
-
engineering verdict and `test-plan.md` coverage map.
|
|
61
|
-
|
|
63
|
+
engineering verdict and `test-plan.md` coverage map. For an admitted Recovery
|
|
64
|
+
recheck, retain the prior depth and proceed to step 1b instead of starting a new
|
|
65
|
+
depth/pass.
|
|
66
|
+
1a. **Independent pass at every initial depth.** Freeze the candidate; dispatch exact
|
|
62
67
|
`devrites-plan-reviewer` fresh/read-only and validate its report. Add exact
|
|
63
68
|
`devrites-devex-reviewer` for developer surfaces and require the current exact
|
|
64
69
|
`devrites-strategy-reviewer` verdict after significant Temper. Missing accounts
|
|
65
70
|
block; never substitute inline work.
|
|
71
|
+
1b. **Recovery recheck.** Require the valid return cursor, prior accepted findings,
|
|
72
|
+
exact open fingerprint/reproduction, repaired candidate identity, changed
|
|
73
|
+
paths/criteria, and affected evidence from `drift.md` / `evidence.md`. Freeze
|
|
74
|
+
that packet and dispatch each exact owning reviewer once, fresh/read-only and
|
|
75
|
+
limited to those inputs. Do not rerun unaffected reviewers or the broad steps
|
|
76
|
+
2-4 inventory. Mark the prior fingerprint resolved only when discriminating
|
|
77
|
+
evidence closes its reproduction; otherwise record one no-progress outcome.
|
|
78
|
+
A newly caused or exposed Critical or Important finding may block only with a
|
|
79
|
+
different failed invariant, exact evidence in the changed/affected boundary,
|
|
80
|
+
and a new fingerprint. A Suggestion, Nit, or FYI cannot keep recovery open.
|
|
81
|
+
Reconcile the common artifact/readiness gates below, then return to the caller
|
|
82
|
+
or its next repair; never convert the nested result into a human command.
|
|
66
83
|
2. **Scope challenge (blocking gate):** apply §0 of
|
|
67
84
|
[`reference/review-axes.md`](reference/review-axes.md). Search accepted ADRs and
|
|
68
85
|
relevant workspace `decisions.md` files directly. Harden to the smallest
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "devrites",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.5",
|
|
4
4
|
"description": "DevRites: a disciplined senior-engineer workflow pack for Claude Code and Codex",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"homepage": "https://github.com/ViktorsBaikers/DevRites#readme",
|