devrites 4.0.11 → 4.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +3 -1
  3. package/docs/skills.md +1 -1
  4. package/pack/.claude/skills/devrites-lib/reference/reply-contract.md +6 -0
  5. package/pack/.claude/skills/devrites-lib/reference/standards/context-hygiene.md +9 -0
  6. package/pack/.claude/skills/devrites-lib/reference/standards/core.md +4 -1
  7. package/pack/.claude/skills/rite-autocomplete/SKILL.md +8 -0
  8. package/pack/.claude/skills/rite-autocomplete/reference/loop.md +18 -0
  9. package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +5 -0
  10. package/pack/.claude/skills/rite-vet/SKILL.md +6 -2
  11. package/pack/generated/claude/skills/devrites-lib/reference/reply-contract.md +6 -0
  12. package/pack/generated/claude/skills/devrites-lib/reference/standards/context-hygiene.md +9 -0
  13. package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +4 -1
  14. package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +8 -0
  15. package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +18 -0
  16. package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +5 -0
  17. package/pack/generated/claude/skills/rite-vet/SKILL.md +6 -2
  18. package/pack/generated/codex/skills/devrites-lib/reference/reply-contract.md +6 -0
  19. package/pack/generated/codex/skills/devrites-lib/reference/standards/context-hygiene.md +9 -0
  20. package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +4 -1
  21. package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +8 -0
  22. package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +18 -0
  23. package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +5 -0
  24. package/pack/generated/codex/skills/rite-vet/SKILL.md +6 -2
  25. 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.12](https://github.com/ViktorsBaikers/DevRites/compare/v4.0.11...v4.0.12) (2026-08-09)
6
+
7
+ ### Fixed
8
+
9
+ * **rite:** keep internal replans in autocomplete ([9dbbd30](https://github.com/ViktorsBaikers/DevRites/commit/9dbbd30d6fbb088f2b175b6c4af06a9d7e5e9114))
10
+
5
11
  ## [4.0.11](https://github.com/ViktorsBaikers/DevRites/compare/v4.0.10...v4.0.11) (2026-08-08)
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.11`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v4.0.11): see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
31
+ **Status:** [`v4.0.12`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v4.0.12): 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
 
@@ -107,6 +107,8 @@ Some work needs a different route:
107
107
  Autocomplete reopens a stale missing-writer stop once instead of preserving the
108
108
  obsolete recovery count. The first real root-materializer failure then counts as
109
109
  attempt one under normal fingerprint recovery; it is not terminal by itself.
110
+ Likewise, an internal `NEEDS_REPLAN` result stays inside Autocomplete: it runs
111
+ the next Plan repair and narrow Vet without returning a command to the user.
110
112
  - [`/rite-upgrade [slug]`](pack/.claude/skills/rite-upgrade/SKILL.md) is a
111
113
  compatibility route for an older active workspace that cannot resume. Age or
112
114
  cursor form alone never triggers repair; it is not a lifecycle phase.
package/docs/skills.md CHANGED
@@ -222,7 +222,7 @@ and `Shipped`. Utility commands keep the same compact labels and one-next-action
222
222
 
223
223
  | Skill | What It Does | Use When |
224
224
  |---|---|---|
225
- | [`rite-autocomplete`](../pack/.claude/skills/rite-autocomplete/SKILL.md) | Runs the whole lifecycle unattended (spec → clarify → … → seal → ship), choosing the recommended option at each soft gate and recording the rationale in `decisions.md`. A vague prompt triggers one up-front spec/clarify window; after decision coverage is CLEAR it runs without per-phase iteration, pausing only for genuine product/scope/policy decisions, irreversible risk, human-only access/actions, NO-GO, or budget exhaustion. Objective red checks use bounded technical recovery, including cold-resume recovery from retained one-shot evidence and one-time migration of stale missing-writer stops when an upgraded contract supplies the first supported workflow-artifact writer. That migration applies once, but the first real materializer failure is only attempt one under normal bounded recovery. Spending an action authorization blocks only another real execution, not offline repair. Default stops at Seal GO; `--ship` (alias `--yolo`) reaches Ship preflight but still requires a fresh literal `GO` and native approval. | "Autocomplete", "do the whole thing", "run the full cycle", "one-shot this feature". |
225
+ | [`rite-autocomplete`](../pack/.claude/skills/rite-autocomplete/SKILL.md) | Runs the whole lifecycle unattended (spec → clarify → … → seal → ship), choosing the recommended option at each soft gate and recording the rationale in `decisions.md`. A vague prompt triggers one up-front spec/clarify window; after decision coverage is CLEAR it runs without per-phase iteration, pausing only for genuine product/scope/policy decisions, irreversible risk, human-only access/actions, NO-GO, or budget exhaustion. Objective red checks use bounded technical recovery, including cold-resume recovery from retained one-shot evidence and one-time migration of stale missing-writer stops when an upgraded contract supplies the first supported workflow-artifact writer. That migration applies once, but the first real materializer failure is only attempt one under normal bounded recovery. Internal `NEEDS_REPLAN` and newly discovered agent-owned review findings remain caller-owned backward edges rather than user-facing stops. Spending an action authorization blocks only another real execution, not offline repair. Default stops at Seal GO; `--ship` (alias `--yolo`) reaches Ship preflight but still requires a fresh literal `GO` and native approval. | "Autocomplete", "do the whole thing", "run the full cycle", "one-shot this feature". |
226
226
  | [`rite-zoom-out`](../pack/.claude/skills/rite-zoom-out/SKILL.md) | Map the modules, callers, callees, and decisions in an unfamiliar area using the project's domain glossary. | Explicit-only: `/rite-zoom-out` / `/rite zoom-out`. |
227
227
  | [`rite-prototype`](../pack/.claude/skills/rite-prototype/SKILL.md) | Throwaway code answering ONE design question: logic harness OR 2 to 4 UI variations on one route. | Explicit-only: `/rite-prototype` / `/rite prototype`. |
228
228
  | [`rite-handoff`](../pack/.claude/skills/rite-handoff/SKILL.md) | Compact chat session → handoff doc. References existing `.devrites/work/<slug>/` artifacts by path. | Explicit-only: `/rite-handoff` / `/rite handoff`. |
@@ -6,6 +6,12 @@ artifact.
6
6
 
7
7
  Keep the reply compact and evidence-backed:
8
8
 
9
+ When an active rite is the controlling caller, Intermediate `NEEDS_REPLAN`, a
10
+ nested phase `STOP`, and a routine Plan/Vet `Next step` are not eligible completion
11
+ states. Return them to the caller without a user-facing reply. Autocomplete may
12
+ use the shapes below only after its requested rest point or a shared genuine
13
+ human/safety/access/exhausted-recovery stop is reached.
14
+
9
15
  ```text
10
16
  Done: <result in one sentence>
11
17
  Changed: <artifact or source paths>
@@ -54,6 +54,15 @@ Resume next session with: <single command, e.g. /rite-build slice 2>
54
54
  This is advice, not a gate. The user can ignore it. It reports a trade-off the model
55
55
  cannot inspect directly because no API reports context fullness.
56
56
 
57
+ ### Autocomplete exception
58
+
59
+ Do not emit the footer or a resume command for a nested phase controlled by
60
+ Autocomplete. An intermediate `NEEDS_REPLAN`, Plan/Vet checkpoint, or new
61
+ agent-owned fingerprint must continue in the same invocation under the caller
62
+ contract. If the host compacts, persist the current checkpoint and resume from it;
63
+ context pressure is never permission to turn routine backtracking into a user
64
+ handoff.
65
+
57
66
  ## When NOT to recommend `/clear` or `/compact`
58
67
 
59
68
  - The current phase is read-only and cheap (`/rite-status`, `/rite` menu): no
@@ -40,7 +40,10 @@ Repository conventions follow [Precedence](#precedence).
40
40
  ## Lifecycle rest points
41
41
 
42
42
  Before advancing a phase, run `devrites-engine check readiness <slug>` for
43
- structure; exact agents/checklists own semantics. Persist and stop on block.
43
+ structure; exact agents/checklists own semantics. Standalone rites persist and stop
44
+ on block. Under an active controlling caller, an agent-owned technical block is a
45
+ persisted backward edge: return it to that caller instead of producing a
46
+ user-facing stop.
44
47
  After native proof/review, `/rite-seal` runs `devrites-engine check seal <slug>`
45
48
  for structure/freshness, not prose. HITL/blocked stops follow
46
49
  [Persistence before stopping](#persistence-before-stopping-handoff-discipline).
@@ -36,6 +36,11 @@ the terminal cursor or its recovery count.
36
36
  through repair, Vet, bounded implementation correction, and re-proof inside
37
37
  the active run. A nested phase `STOP` or intermediate `Next step` is not a
38
38
  user handoff; pause only on the shared real stop conditions.
39
+ - **Treat technical readiness as routing, not completion.** `NEEDS_REPLAN` is a backward edge
40
+ to Plan repair and narrow Vet; `NEEDS_CLARIFICATION` is likewise internal when
41
+ decision coverage can be resolved from existing authority. Neither state may
42
+ end Autocomplete unless its underlying fingerprint is actually exhausted or a
43
+ human/safety/access decision is required.
39
44
  - **Do not confuse an action budget with recovery exhaustion.** After a failed
40
45
  consumptive action, zero remaining real attempts blocks only another execution.
41
46
  New retained Critical/Important evidence starts offline repair and narrow Vet
@@ -73,6 +78,9 @@ the terminal cursor or its recovery count.
73
78
  fingerprint below its no-progress cap reopens caller-owned offline recovery;
74
79
  a stale pre-ownership workflow-artifact writer stop reopens under
75
80
  `workflow-artifacts.md` when no controlling-root materialization attempt exists.
81
+ A `NEEDS_REPLAN` cold resume with a valid technical return cursor immediately
82
+ invokes Plan repair and Recovery Vet before selecting a forward phase or
83
+ emitting any reply.
76
84
  That materialization runs directly as non-consumptive prerequisite recovery,
77
85
  even with no pending product slice or AFK budget; it does not re-ask an answered
78
86
  human gate.
@@ -104,6 +104,24 @@ for a human-owned decision or mandatory safety/access action. Exhausted
104
104
  agent-owned recovery stops once with its reproduction and dead ends, never with
105
105
  another routine Plan/Vet command.
106
106
 
107
+ ## Continuous caller obligation
108
+
109
+ No user-facing reply is permitted while the durable state contains an
110
+ agent-owned `NEEDS_REPLAN`, an intermediate Plan/Vet `next_action`, or a distinct
111
+ Critical/Important fingerprint with remaining recovery budget. Invoke the exact
112
+ next Plan repair and Recovery Vet immediately. A narrow reviewer closing its input
113
+ finding and exposing another Critical/Important invariant is progress: close the
114
+ old fingerprint, open the new one, and continue without handing a command to the
115
+ user.
116
+
117
+ The number of completed repair/Vet cycles is not a stop condition and cannot be
118
+ used as a surrogate recovery budget. Only three no-progress corrections of the
119
+ same exact fingerprint exhaust. Context pressure, compaction, session duration,
120
+ or a nested skill's completion footer also cannot convert an internal checkpoint
121
+ into a stop; persist the checkpoint and resume from it inside the same controlling
122
+ invocation. Autocomplete may emit its final reply only after reaching its requested
123
+ rest point or one of the shared human/safety/access/exhaustion stop conditions.
124
+
107
125
  ## Between phases
108
126
 
109
127
  - Re-read the active workspace before each phase (don't trust chat memory).
@@ -29,6 +29,11 @@ on exhaustion, stop as a technical blocker unless human-owned.
29
29
 
30
30
  ## Not a stop: agent-owned backtracking
31
31
 
32
+ `NEEDS_REPLAN` is not a stop condition under an active Autocomplete caller. It
33
+ blocks forward advancement, persists the return cursor, and immediately routes
34
+ Plan repair plus Recovery Vet. The same applies to any intermediate nested
35
+ `STOP`/`Next step` whose underlying decision is agent-owned.
36
+
32
37
  Agent-owned backtracking is not a stop condition while its causal-fingerprint
33
38
  budget remains. The active caller invokes the earlier phase inline, follows Vet
34
39
  and any bounded remediation, then resumes the originating phase. Persist
@@ -144,8 +144,12 @@ Pull the standard named by the active axis: `principles.md`, `patterns.md`,
144
144
  After each fold-back rerun step 2a; missing/meaning-changing mappings block.
145
145
  Keep `state.md` non-READY for step 6.
146
146
  6. **One narrow recheck after edits.** If the candidate changed, dispatch exact
147
- `devrites-plan-reviewer` once with accepted findings, changed paths/criteria,
148
- and new identity. No full or third loop; if it changes the plan, repeat step 5.
147
+ `devrites-plan-reviewer` once per correction/fingerprint with accepted findings,
148
+ changed paths/criteria, and new identity. Within that same correction, no full
149
+ or third loop; if it changes the plan, repeat step 5. If the recheck closes its
150
+ input fingerprint but discovers a distinct Critical/Important invariant, return
151
+ that new fingerprint to the controlling caller as progress. It may start the
152
+ next bounded Plan/Recovery-Vet cycle; the prior reviewer count is not exhaustion.
149
153
  Then close the matrix and rerun step 2a's ID-and-meaning audit.
150
154
 
151
155
  6a. **Build readback.** From the final owning artifacts, add a cited five-line
@@ -6,6 +6,12 @@ artifact.
6
6
 
7
7
  Keep the reply compact and evidence-backed:
8
8
 
9
+ When an active rite is the controlling caller, Intermediate `NEEDS_REPLAN`, a
10
+ nested phase `STOP`, and a routine Plan/Vet `Next step` are not eligible completion
11
+ states. Return them to the caller without a user-facing reply. Autocomplete may
12
+ use the shapes below only after its requested rest point or a shared genuine
13
+ human/safety/access/exhausted-recovery stop is reached.
14
+
9
15
  ```text
10
16
  Done: <result in one sentence>
11
17
  Changed: <artifact or source paths>
@@ -54,6 +54,15 @@ Resume next session with: <single command, e.g. /rite-build slice 2>
54
54
  This is advice, not a gate. The user can ignore it. It reports a trade-off the model
55
55
  cannot inspect directly because no API reports context fullness.
56
56
 
57
+ ### Autocomplete exception
58
+
59
+ Do not emit the footer or a resume command for a nested phase controlled by
60
+ Autocomplete. An intermediate `NEEDS_REPLAN`, Plan/Vet checkpoint, or new
61
+ agent-owned fingerprint must continue in the same invocation under the caller
62
+ contract. If the host compacts, persist the current checkpoint and resume from it;
63
+ context pressure is never permission to turn routine backtracking into a user
64
+ handoff.
65
+
57
66
  ## When NOT to recommend `/clear` or `/compact`
58
67
 
59
68
  - The current phase is read-only and cheap (`/rite-status`, `/rite` menu): no
@@ -40,7 +40,10 @@ Repository conventions follow [Precedence](#precedence).
40
40
  ## Lifecycle rest points
41
41
 
42
42
  Before advancing a phase, run `devrites-engine check readiness <slug>` for
43
- structure; exact agents/checklists own semantics. Persist and stop on block.
43
+ structure; exact agents/checklists own semantics. Standalone rites persist and stop
44
+ on block. Under an active controlling caller, an agent-owned technical block is a
45
+ persisted backward edge: return it to that caller instead of producing a
46
+ user-facing stop.
44
47
  After native proof/review, `/rite-seal` runs `devrites-engine check seal <slug>`
45
48
  for structure/freshness, not prose. HITL/blocked stops follow
46
49
  [Persistence before stopping](#persistence-before-stopping-handoff-discipline).
@@ -36,6 +36,11 @@ the terminal cursor or its recovery count.
36
36
  through repair, Vet, bounded implementation correction, and re-proof inside
37
37
  the active run. A nested phase `STOP` or intermediate `Next step` is not a
38
38
  user handoff; pause only on the shared real stop conditions.
39
+ - **Treat technical readiness as routing, not completion.** `NEEDS_REPLAN` is a backward edge
40
+ to Plan repair and narrow Vet; `NEEDS_CLARIFICATION` is likewise internal when
41
+ decision coverage can be resolved from existing authority. Neither state may
42
+ end Autocomplete unless its underlying fingerprint is actually exhausted or a
43
+ human/safety/access decision is required.
39
44
  - **Do not confuse an action budget with recovery exhaustion.** After a failed
40
45
  consumptive action, zero remaining real attempts blocks only another execution.
41
46
  New retained Critical/Important evidence starts offline repair and narrow Vet
@@ -73,6 +78,9 @@ the terminal cursor or its recovery count.
73
78
  fingerprint below its no-progress cap reopens caller-owned offline recovery;
74
79
  a stale pre-ownership workflow-artifact writer stop reopens under
75
80
  `workflow-artifacts.md` when no controlling-root materialization attempt exists.
81
+ A `NEEDS_REPLAN` cold resume with a valid technical return cursor immediately
82
+ invokes Plan repair and Recovery Vet before selecting a forward phase or
83
+ emitting any reply.
76
84
  That materialization runs directly as non-consumptive prerequisite recovery,
77
85
  even with no pending product slice or AFK budget; it does not re-ask an answered
78
86
  human gate.
@@ -104,6 +104,24 @@ for a human-owned decision or mandatory safety/access action. Exhausted
104
104
  agent-owned recovery stops once with its reproduction and dead ends, never with
105
105
  another routine Plan/Vet command.
106
106
 
107
+ ## Continuous caller obligation
108
+
109
+ No user-facing reply is permitted while the durable state contains an
110
+ agent-owned `NEEDS_REPLAN`, an intermediate Plan/Vet `next_action`, or a distinct
111
+ Critical/Important fingerprint with remaining recovery budget. Invoke the exact
112
+ next Plan repair and Recovery Vet immediately. A narrow reviewer closing its input
113
+ finding and exposing another Critical/Important invariant is progress: close the
114
+ old fingerprint, open the new one, and continue without handing a command to the
115
+ user.
116
+
117
+ The number of completed repair/Vet cycles is not a stop condition and cannot be
118
+ used as a surrogate recovery budget. Only three no-progress corrections of the
119
+ same exact fingerprint exhaust. Context pressure, compaction, session duration,
120
+ or a nested skill's completion footer also cannot convert an internal checkpoint
121
+ into a stop; persist the checkpoint and resume from it inside the same controlling
122
+ invocation. Autocomplete may emit its final reply only after reaching its requested
123
+ rest point or one of the shared human/safety/access/exhaustion stop conditions.
124
+
107
125
  ## Between phases
108
126
 
109
127
  - Re-read the active workspace before each phase (don't trust chat memory).
@@ -29,6 +29,11 @@ on exhaustion, stop as a technical blocker unless human-owned.
29
29
 
30
30
  ## Not a stop: agent-owned backtracking
31
31
 
32
+ `NEEDS_REPLAN` is not a stop condition under an active Autocomplete caller. It
33
+ blocks forward advancement, persists the return cursor, and immediately routes
34
+ Plan repair plus Recovery Vet. The same applies to any intermediate nested
35
+ `STOP`/`Next step` whose underlying decision is agent-owned.
36
+
32
37
  Agent-owned backtracking is not a stop condition while its causal-fingerprint
33
38
  budget remains. The active caller invokes the earlier phase inline, follows Vet
34
39
  and any bounded remediation, then resumes the originating phase. Persist
@@ -144,8 +144,12 @@ Pull the standard named by the active axis: `principles.md`, `patterns.md`,
144
144
  After each fold-back rerun step 2a; missing/meaning-changing mappings block.
145
145
  Keep `state.md` non-READY for step 6.
146
146
  6. **One narrow recheck after edits.** If the candidate changed, dispatch exact
147
- `devrites-plan-reviewer` once with accepted findings, changed paths/criteria,
148
- and new identity. No full or third loop; if it changes the plan, repeat step 5.
147
+ `devrites-plan-reviewer` once per correction/fingerprint with accepted findings,
148
+ changed paths/criteria, and new identity. Within that same correction, no full
149
+ or third loop; if it changes the plan, repeat step 5. If the recheck closes its
150
+ input fingerprint but discovers a distinct Critical/Important invariant, return
151
+ that new fingerprint to the controlling caller as progress. It may start the
152
+ next bounded Plan/Recovery-Vet cycle; the prior reviewer count is not exhaustion.
149
153
  Then close the matrix and rerun step 2a's ID-and-meaning audit.
150
154
 
151
155
  6a. **Build readback.** From the final owning artifacts, add a cited five-line
@@ -6,6 +6,12 @@ artifact.
6
6
 
7
7
  Keep the reply compact and evidence-backed:
8
8
 
9
+ When an active rite is the controlling caller, Intermediate `NEEDS_REPLAN`, a
10
+ nested phase `STOP`, and a routine Plan/Vet `Next step` are not eligible completion
11
+ states. Return them to the caller without a user-facing reply. Autocomplete may
12
+ use the shapes below only after its requested rest point or a shared genuine
13
+ human/safety/access/exhausted-recovery stop is reached.
14
+
9
15
  ```text
10
16
  Done: <result in one sentence>
11
17
  Changed: <artifact or source paths>
@@ -54,6 +54,15 @@ Resume next session with: <single command, e.g. $rite-build slice 2>
54
54
  This is advice, not a gate. The user can ignore it. It reports a trade-off the model
55
55
  cannot inspect directly because no API reports context fullness.
56
56
 
57
+ ### Autocomplete exception
58
+
59
+ Do not emit the footer or a resume command for a nested phase controlled by
60
+ Autocomplete. An intermediate `NEEDS_REPLAN`, Plan/Vet checkpoint, or new
61
+ agent-owned fingerprint must continue in the same invocation under the caller
62
+ contract. If the host compacts, persist the current checkpoint and resume from it;
63
+ context pressure is never permission to turn routine backtracking into a user
64
+ handoff.
65
+
57
66
  ## When NOT to recommend `/clear` or `/compact`
58
67
 
59
68
  - The current phase is read-only and cheap (`$rite-status`, `$rite` menu): no
@@ -40,7 +40,10 @@ Repository conventions follow [Precedence](#precedence).
40
40
  ## Lifecycle rest points
41
41
 
42
42
  Before advancing a phase, run `devrites-engine check readiness <slug>` for
43
- structure; exact agents/checklists own semantics. Persist and stop on block.
43
+ structure; exact agents/checklists own semantics. Standalone rites persist and stop
44
+ on block. Under an active controlling caller, an agent-owned technical block is a
45
+ persisted backward edge: return it to that caller instead of producing a
46
+ user-facing stop.
44
47
  After native proof/review, `$rite-seal` runs `devrites-engine check seal <slug>`
45
48
  for structure/freshness, not prose. HITL/blocked stops follow
46
49
  [Persistence before stopping](#persistence-before-stopping-handoff-discipline).
@@ -36,6 +36,11 @@ the terminal cursor or its recovery count.
36
36
  through repair, Vet, bounded implementation correction, and re-proof inside
37
37
  the active run. A nested phase `STOP` or intermediate `Next step` is not a
38
38
  user handoff; pause only on the shared real stop conditions.
39
+ - **Treat technical readiness as routing, not completion.** `NEEDS_REPLAN` is a backward edge
40
+ to Plan repair and narrow Vet; `NEEDS_CLARIFICATION` is likewise internal when
41
+ decision coverage can be resolved from existing authority. Neither state may
42
+ end Autocomplete unless its underlying fingerprint is actually exhausted or a
43
+ human/safety/access decision is required.
39
44
  - **Do not confuse an action budget with recovery exhaustion.** After a failed
40
45
  consumptive action, zero remaining real attempts blocks only another execution.
41
46
  New retained Critical/Important evidence starts offline repair and narrow Vet
@@ -73,6 +78,9 @@ the terminal cursor or its recovery count.
73
78
  fingerprint below its no-progress cap reopens caller-owned offline recovery;
74
79
  a stale pre-ownership workflow-artifact writer stop reopens under
75
80
  `workflow-artifacts.md` when no controlling-root materialization attempt exists.
81
+ A `NEEDS_REPLAN` cold resume with a valid technical return cursor immediately
82
+ invokes Plan repair and Recovery Vet before selecting a forward phase or
83
+ emitting any reply.
76
84
  That materialization runs directly as non-consumptive prerequisite recovery,
77
85
  even with no pending product slice or AFK budget; it does not re-ask an answered
78
86
  human gate.
@@ -104,6 +104,24 @@ for a human-owned decision or mandatory safety/access action. Exhausted
104
104
  agent-owned recovery stops once with its reproduction and dead ends, never with
105
105
  another routine Plan/Vet command.
106
106
 
107
+ ## Continuous caller obligation
108
+
109
+ No user-facing reply is permitted while the durable state contains an
110
+ agent-owned `NEEDS_REPLAN`, an intermediate Plan/Vet `next_action`, or a distinct
111
+ Critical/Important fingerprint with remaining recovery budget. Invoke the exact
112
+ next Plan repair and Recovery Vet immediately. A narrow reviewer closing its input
113
+ finding and exposing another Critical/Important invariant is progress: close the
114
+ old fingerprint, open the new one, and continue without handing a command to the
115
+ user.
116
+
117
+ The number of completed repair/Vet cycles is not a stop condition and cannot be
118
+ used as a surrogate recovery budget. Only three no-progress corrections of the
119
+ same exact fingerprint exhaust. Context pressure, compaction, session duration,
120
+ or a nested skill's completion footer also cannot convert an internal checkpoint
121
+ into a stop; persist the checkpoint and resume from it inside the same controlling
122
+ invocation. Autocomplete may emit its final reply only after reaching its requested
123
+ rest point or one of the shared human/safety/access/exhaustion stop conditions.
124
+
107
125
  ## Between phases
108
126
 
109
127
  - Re-read the active workspace before each phase (don't trust chat memory).
@@ -29,6 +29,11 @@ on exhaustion, stop as a technical blocker unless human-owned.
29
29
 
30
30
  ## Not a stop: agent-owned backtracking
31
31
 
32
+ `NEEDS_REPLAN` is not a stop condition under an active Autocomplete caller. It
33
+ blocks forward advancement, persists the return cursor, and immediately routes
34
+ Plan repair plus Recovery Vet. The same applies to any intermediate nested
35
+ `STOP`/`Next step` whose underlying decision is agent-owned.
36
+
32
37
  Agent-owned backtracking is not a stop condition while its causal-fingerprint
33
38
  budget remains. The active caller invokes the earlier phase inline, follows Vet
34
39
  and any bounded remediation, then resumes the originating phase. Persist
@@ -144,8 +144,12 @@ Pull the standard named by the active axis: `principles.md`, `patterns.md`,
144
144
  After each fold-back rerun step 2a; missing/meaning-changing mappings block.
145
145
  Keep `state.md` non-READY for step 6.
146
146
  6. **One narrow recheck after edits.** If the candidate changed, dispatch exact
147
- `devrites-plan-reviewer` once with accepted findings, changed paths/criteria,
148
- and new identity. No full or third loop; if it changes the plan, repeat step 5.
147
+ `devrites-plan-reviewer` once per correction/fingerprint with accepted findings,
148
+ changed paths/criteria, and new identity. Within that same correction, no full
149
+ or third loop; if it changes the plan, repeat step 5. If the recheck closes its
150
+ input fingerprint but discovers a distinct Critical/Important invariant, return
151
+ that new fingerprint to the controlling caller as progress. It may start the
152
+ next bounded Plan/Recovery-Vet cycle; the prior reviewer count is not exhaustion.
149
153
  Then close the matrix and rerun step 2a's ID-and-meaning audit.
150
154
 
151
155
  6a. **Build readback.** From the final owning artifacts, add a cited five-line
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devrites",
3
- "version": "4.0.11",
3
+ "version": "4.0.12",
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",