devrites 7.1.0 → 7.1.2

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 (183) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +1 -1
  3. package/pack/.claude/agents/devrites-upgrade-planner.md +12 -4
  4. package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +21 -4
  5. package/pack/.claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +10 -3
  6. package/pack/.claude/skills/devrites-debug-recovery/reference/regression-test.md +7 -4
  7. package/pack/.claude/skills/devrites-lib/reference/reply-contract.md +11 -11
  8. package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +52 -56
  9. package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +11 -1
  10. package/pack/.claude/skills/devrites-lib/reference/standards/core.md +41 -40
  11. package/pack/.claude/skills/rite-autocomplete/SKILL.md +12 -14
  12. package/pack/.claude/skills/rite-autocomplete/reference/loop.md +44 -49
  13. package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +38 -39
  14. package/pack/.claude/skills/rite-build/SKILL.md +5 -6
  15. package/pack/.claude/skills/rite-build/reference/afk-discipline.md +9 -11
  16. package/pack/.claude/skills/rite-build/reference/anti-patterns.md +2 -2
  17. package/pack/.claude/skills/rite-build/reference/checkpoint.md +10 -5
  18. package/pack/.claude/skills/rite-build/reference/one-slice-cycle.md +6 -4
  19. package/pack/.claude/skills/rite-build/reference/output.md +15 -21
  20. package/pack/.claude/skills/rite-define/SKILL.md +28 -27
  21. package/pack/.claude/skills/rite-plan/SKILL.md +7 -2
  22. package/pack/.claude/skills/rite-plan/reference/replan-and-repair.md +5 -2
  23. package/pack/.claude/skills/rite-resolve/SKILL.md +17 -10
  24. package/pack/.claude/skills/rite-resolve/reference/answer-protocol.md +18 -6
  25. package/pack/.claude/skills/rite-review/SKILL.md +4 -4
  26. package/pack/.claude/skills/rite-review/reference/security-review.md +4 -2
  27. package/pack/.claude/skills/rite-seal/SKILL.md +28 -33
  28. package/pack/.claude/skills/rite-ship/SKILL.md +14 -7
  29. package/pack/.claude/skills/rite-temper/SKILL.md +18 -18
  30. package/pack/.claude/skills/rite-temper/reference/scope-modes.md +6 -7
  31. package/pack/.claude/skills/rite-upgrade/SKILL.md +7 -2
  32. package/pack/.claude/skills/rite-vet/SKILL.md +33 -34
  33. package/pack/generated/claude/agents/devrites-upgrade-planner.md +12 -4
  34. package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +21 -4
  35. package/pack/generated/claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +10 -3
  36. package/pack/generated/claude/skills/devrites-debug-recovery/reference/regression-test.md +7 -4
  37. package/pack/generated/claude/skills/devrites-lib/reference/reply-contract.md +11 -11
  38. package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +52 -56
  39. package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +11 -1
  40. package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +41 -40
  41. package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +12 -14
  42. package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +44 -49
  43. package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +38 -39
  44. package/pack/generated/claude/skills/rite-build/SKILL.md +5 -6
  45. package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +9 -11
  46. package/pack/generated/claude/skills/rite-build/reference/anti-patterns.md +2 -2
  47. package/pack/generated/claude/skills/rite-build/reference/checkpoint.md +10 -5
  48. package/pack/generated/claude/skills/rite-build/reference/one-slice-cycle.md +6 -4
  49. package/pack/generated/claude/skills/rite-build/reference/output.md +15 -21
  50. package/pack/generated/claude/skills/rite-define/SKILL.md +28 -27
  51. package/pack/generated/claude/skills/rite-plan/SKILL.md +7 -2
  52. package/pack/generated/claude/skills/rite-plan/reference/replan-and-repair.md +5 -2
  53. package/pack/generated/claude/skills/rite-resolve/SKILL.md +17 -10
  54. package/pack/generated/claude/skills/rite-resolve/reference/answer-protocol.md +18 -6
  55. package/pack/generated/claude/skills/rite-review/SKILL.md +4 -4
  56. package/pack/generated/claude/skills/rite-review/reference/security-review.md +4 -2
  57. package/pack/generated/claude/skills/rite-seal/SKILL.md +28 -33
  58. package/pack/generated/claude/skills/rite-ship/SKILL.md +14 -7
  59. package/pack/generated/claude/skills/rite-temper/SKILL.md +18 -18
  60. package/pack/generated/claude/skills/rite-temper/reference/scope-modes.md +6 -7
  61. package/pack/generated/claude/skills/rite-upgrade/SKILL.md +7 -2
  62. package/pack/generated/claude/skills/rite-vet/SKILL.md +33 -34
  63. package/pack/generated/codex/agents/devrites-upgrade-planner.toml +12 -4
  64. package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +21 -4
  65. package/pack/generated/codex/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +10 -3
  66. package/pack/generated/codex/skills/devrites-debug-recovery/reference/regression-test.md +7 -4
  67. package/pack/generated/codex/skills/devrites-lib/reference/reply-contract.md +11 -11
  68. package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +52 -56
  69. package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +11 -1
  70. package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +41 -40
  71. package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +12 -14
  72. package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +44 -49
  73. package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +38 -39
  74. package/pack/generated/codex/skills/rite-build/SKILL.md +5 -6
  75. package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +9 -11
  76. package/pack/generated/codex/skills/rite-build/reference/anti-patterns.md +2 -2
  77. package/pack/generated/codex/skills/rite-build/reference/checkpoint.md +10 -5
  78. package/pack/generated/codex/skills/rite-build/reference/one-slice-cycle.md +6 -4
  79. package/pack/generated/codex/skills/rite-build/reference/output.md +15 -21
  80. package/pack/generated/codex/skills/rite-define/SKILL.md +28 -27
  81. package/pack/generated/codex/skills/rite-plan/SKILL.md +7 -2
  82. package/pack/generated/codex/skills/rite-plan/reference/replan-and-repair.md +5 -2
  83. package/pack/generated/codex/skills/rite-resolve/SKILL.md +17 -10
  84. package/pack/generated/codex/skills/rite-resolve/reference/answer-protocol.md +18 -6
  85. package/pack/generated/codex/skills/rite-review/SKILL.md +4 -4
  86. package/pack/generated/codex/skills/rite-review/reference/security-review.md +4 -2
  87. package/pack/generated/codex/skills/rite-seal/SKILL.md +28 -33
  88. package/pack/generated/codex/skills/rite-ship/SKILL.md +14 -7
  89. package/pack/generated/codex/skills/rite-temper/SKILL.md +18 -18
  90. package/pack/generated/codex/skills/rite-temper/reference/scope-modes.md +6 -7
  91. package/pack/generated/codex/skills/rite-upgrade/SKILL.md +7 -2
  92. package/pack/generated/codex/skills/rite-vet/SKILL.md +33 -34
  93. package/pack/generated/devin/agents/devrites-upgrade-planner.md +12 -4
  94. package/pack/generated/devin/skills/devrites-debug-recovery/SKILL.md +21 -4
  95. package/pack/generated/devin/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +10 -3
  96. package/pack/generated/devin/skills/devrites-debug-recovery/reference/regression-test.md +7 -4
  97. package/pack/generated/devin/skills/devrites-lib/reference/reply-contract.md +11 -11
  98. package/pack/generated/devin/skills/devrites-lib/reference/standards/afk-hitl.md +52 -56
  99. package/pack/generated/devin/skills/devrites-lib/reference/standards/agents.md +11 -1
  100. package/pack/generated/devin/skills/devrites-lib/reference/standards/core.md +41 -40
  101. package/pack/generated/devin/skills/rite-autocomplete/SKILL.md +12 -14
  102. package/pack/generated/devin/skills/rite-autocomplete/reference/loop.md +44 -49
  103. package/pack/generated/devin/skills/rite-autocomplete/reference/stop-conditions.md +38 -39
  104. package/pack/generated/devin/skills/rite-build/SKILL.md +5 -6
  105. package/pack/generated/devin/skills/rite-build/reference/afk-discipline.md +9 -11
  106. package/pack/generated/devin/skills/rite-build/reference/anti-patterns.md +2 -2
  107. package/pack/generated/devin/skills/rite-build/reference/checkpoint.md +10 -5
  108. package/pack/generated/devin/skills/rite-build/reference/one-slice-cycle.md +6 -4
  109. package/pack/generated/devin/skills/rite-build/reference/output.md +15 -21
  110. package/pack/generated/devin/skills/rite-define/SKILL.md +28 -27
  111. package/pack/generated/devin/skills/rite-plan/SKILL.md +7 -2
  112. package/pack/generated/devin/skills/rite-plan/reference/replan-and-repair.md +5 -2
  113. package/pack/generated/devin/skills/rite-resolve/SKILL.md +17 -10
  114. package/pack/generated/devin/skills/rite-resolve/reference/answer-protocol.md +18 -6
  115. package/pack/generated/devin/skills/rite-review/SKILL.md +4 -4
  116. package/pack/generated/devin/skills/rite-review/reference/security-review.md +4 -2
  117. package/pack/generated/devin/skills/rite-seal/SKILL.md +28 -33
  118. package/pack/generated/devin/skills/rite-ship/SKILL.md +14 -7
  119. package/pack/generated/devin/skills/rite-temper/SKILL.md +18 -18
  120. package/pack/generated/devin/skills/rite-temper/reference/scope-modes.md +6 -7
  121. package/pack/generated/devin/skills/rite-upgrade/SKILL.md +7 -2
  122. package/pack/generated/devin/skills/rite-vet/SKILL.md +33 -34
  123. package/pack/generated/omp/agents/devrites-upgrade-planner.md +12 -4
  124. package/pack/generated/omp/skills/devrites-debug-recovery/SKILL.md +21 -4
  125. package/pack/generated/omp/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +10 -3
  126. package/pack/generated/omp/skills/devrites-debug-recovery/reference/regression-test.md +7 -4
  127. package/pack/generated/omp/skills/devrites-lib/reference/reply-contract.md +11 -11
  128. package/pack/generated/omp/skills/devrites-lib/reference/standards/afk-hitl.md +52 -56
  129. package/pack/generated/omp/skills/devrites-lib/reference/standards/agents.md +11 -1
  130. package/pack/generated/omp/skills/devrites-lib/reference/standards/core.md +41 -40
  131. package/pack/generated/omp/skills/rite-autocomplete/SKILL.md +12 -14
  132. package/pack/generated/omp/skills/rite-autocomplete/reference/loop.md +44 -49
  133. package/pack/generated/omp/skills/rite-autocomplete/reference/stop-conditions.md +38 -39
  134. package/pack/generated/omp/skills/rite-build/SKILL.md +5 -6
  135. package/pack/generated/omp/skills/rite-build/reference/afk-discipline.md +9 -11
  136. package/pack/generated/omp/skills/rite-build/reference/anti-patterns.md +2 -2
  137. package/pack/generated/omp/skills/rite-build/reference/checkpoint.md +10 -5
  138. package/pack/generated/omp/skills/rite-build/reference/one-slice-cycle.md +6 -4
  139. package/pack/generated/omp/skills/rite-build/reference/output.md +15 -21
  140. package/pack/generated/omp/skills/rite-define/SKILL.md +28 -27
  141. package/pack/generated/omp/skills/rite-plan/SKILL.md +7 -2
  142. package/pack/generated/omp/skills/rite-plan/reference/replan-and-repair.md +5 -2
  143. package/pack/generated/omp/skills/rite-resolve/SKILL.md +17 -10
  144. package/pack/generated/omp/skills/rite-resolve/reference/answer-protocol.md +18 -6
  145. package/pack/generated/omp/skills/rite-review/SKILL.md +4 -4
  146. package/pack/generated/omp/skills/rite-review/reference/security-review.md +4 -2
  147. package/pack/generated/omp/skills/rite-seal/SKILL.md +28 -33
  148. package/pack/generated/omp/skills/rite-ship/SKILL.md +14 -7
  149. package/pack/generated/omp/skills/rite-temper/SKILL.md +18 -18
  150. package/pack/generated/omp/skills/rite-temper/reference/scope-modes.md +6 -7
  151. package/pack/generated/omp/skills/rite-upgrade/SKILL.md +7 -2
  152. package/pack/generated/omp/skills/rite-vet/SKILL.md +33 -34
  153. package/pack/generated/pi/agents/devrites-upgrade-planner.md +12 -4
  154. package/pack/generated/pi/skills/devrites-debug-recovery/SKILL.md +21 -4
  155. package/pack/generated/pi/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +10 -3
  156. package/pack/generated/pi/skills/devrites-debug-recovery/reference/regression-test.md +7 -4
  157. package/pack/generated/pi/skills/devrites-lib/reference/reply-contract.md +11 -11
  158. package/pack/generated/pi/skills/devrites-lib/reference/standards/afk-hitl.md +52 -56
  159. package/pack/generated/pi/skills/devrites-lib/reference/standards/agents.md +11 -1
  160. package/pack/generated/pi/skills/devrites-lib/reference/standards/core.md +41 -40
  161. package/pack/generated/pi/skills/rite-autocomplete/SKILL.md +12 -14
  162. package/pack/generated/pi/skills/rite-autocomplete/reference/loop.md +44 -49
  163. package/pack/generated/pi/skills/rite-autocomplete/reference/stop-conditions.md +38 -39
  164. package/pack/generated/pi/skills/rite-build/SKILL.md +5 -6
  165. package/pack/generated/pi/skills/rite-build/reference/afk-discipline.md +9 -11
  166. package/pack/generated/pi/skills/rite-build/reference/anti-patterns.md +2 -2
  167. package/pack/generated/pi/skills/rite-build/reference/checkpoint.md +10 -5
  168. package/pack/generated/pi/skills/rite-build/reference/one-slice-cycle.md +6 -4
  169. package/pack/generated/pi/skills/rite-build/reference/output.md +15 -21
  170. package/pack/generated/pi/skills/rite-define/SKILL.md +28 -27
  171. package/pack/generated/pi/skills/rite-plan/SKILL.md +7 -2
  172. package/pack/generated/pi/skills/rite-plan/reference/replan-and-repair.md +5 -2
  173. package/pack/generated/pi/skills/rite-resolve/SKILL.md +17 -10
  174. package/pack/generated/pi/skills/rite-resolve/reference/answer-protocol.md +18 -6
  175. package/pack/generated/pi/skills/rite-review/SKILL.md +4 -4
  176. package/pack/generated/pi/skills/rite-review/reference/security-review.md +4 -2
  177. package/pack/generated/pi/skills/rite-seal/SKILL.md +28 -33
  178. package/pack/generated/pi/skills/rite-ship/SKILL.md +14 -7
  179. package/pack/generated/pi/skills/rite-temper/SKILL.md +18 -18
  180. package/pack/generated/pi/skills/rite-temper/reference/scope-modes.md +6 -7
  181. package/pack/generated/pi/skills/rite-upgrade/SKILL.md +7 -2
  182. package/pack/generated/pi/skills/rite-vet/SKILL.md +33 -34
  183. package/package.json +1 -1
@@ -10,10 +10,13 @@ confidence.
10
10
 
11
11
  ## No correct seam? That itself is the finding
12
12
 
13
- Note it in `evidence.md` and append a follow-up in the active feature's
14
- `decisions.md` (or run `$rite-plan repair` if the spec is affected): the
15
- codebase architecture is preventing this class of failure from being locked
16
- down. Frame it as a *deepening opportunity* ("this module needs a seam at <X>
13
+ Follow [`SKILL.md` § Caller-owned records and routing](../SKILL.md#caller-owned-records-and-routing):
14
+ root notes it in `evidence.md` and appends a follow-up in the active feature's
15
+ `decisions.md` (or routes `$rite-plan repair` if the spec is affected). A leaf
16
+ returns the complete finding, evidence, and proposed route for root acceptance and
17
+ persistence; it never writes the workspace or invokes the rite. The codebase
18
+ architecture is preventing this class of failure from being locked down. Frame it as
19
+ a *deepening opportunity* ("this module needs a seam at <X>
17
20
  so this failure can be regression-tested") so the next `$rite-plan` repair or
18
21
  architecture cleanup pass has a concrete target.
19
22
 
@@ -1,8 +1,7 @@
1
1
  # DevRites completion reply contract
2
2
 
3
- Use the host's normal response. Do not run a progress renderer, emit session
4
- telemetry, assign a health score, or repeat state already visible in the durable
5
- artifact.
3
+ Use normal host responses. No progress renderer, session telemetry, health score,
4
+ or repetition of durable artifact state.
6
5
 
7
6
  Keep the reply compact and evidence-backed:
8
7
 
@@ -21,16 +20,17 @@ Next: <one recommended action>
21
20
  Record: <primary durable artifact path>
22
21
  ```
23
22
 
24
- `Changed:` is the complete write set, not a highlight reel: every file written
25
- or edited this turn — workspace artifact and project source alike — appears
26
- there or inside one named grouped entry, so a reviewer can `git diff` exactly
27
- those paths. `Record:` then names the single durable artifact a later session
28
- reads first.
23
+ `Changed:` lists every file written/edited this turn (workspace and source),
24
+ individually or in one named group, so reviewers can `git diff` those paths.
25
+ `Record:` names the single durable artifact the next session reads first.
29
26
 
30
- Mid-flight replies — the turns between completion states — obey the same economy:
27
+ Active `$rite-autocomplete` consumes green checkpoints/`next_action` internally.
28
+ Continue execution or tool progress; never end with a text-only final reply between green phases.
31
29
 
32
- - **Restate position.** The reader cannot hold "step 3 of 5" between turns; name it
33
- (`step N of M` / `state: <where things stand>`) rather than asking them to remember.
30
+ Standalone HITL mid-flight replies follow the same economy:
31
+
32
+ - **Restate position** (`step N of M` / `state: <where things stand>`); do not rely
33
+ on the reader remembering it between turns.
34
34
  - **One next action, doable now.** `Next:` names one concrete action completable in
35
35
  under two minutes — a command, a file to open, a yes/no decision. "Want me to
36
36
  continue?" is a stall, not an action.
@@ -4,11 +4,8 @@
4
4
 
5
5
  > Applies when: any rite/devrites skill that can pause for a human or run unattended; irreversible-risk list, budgets, recovery accounting.
6
6
 
7
- Defines two modes for `rite-*`/`devrites-*` skills that may pause; main
8
- callers are `$rite-build`, `$rite-status`, `$rite-resolve`, and
9
- `devrites-doubt`.
10
-
11
- The contract uses one sentinel, one queue, and one resume verb.
7
+ Two pause modes for `rite-*`/`devrites-*`, chiefly `$rite-build`, `$rite-status`,
8
+ `$rite-resolve`, `devrites-doubt`: one sentinel, queue, resume verb.
12
9
 
13
10
  ## Contents
14
11
 
@@ -46,15 +43,15 @@ The contract uses one sentinel, one queue, and one resume verb.
46
43
  ceiling (and every irreversible-risk item) pause and queue a `questions.md` entry for
47
44
  `$rite-resolve`.
48
45
 
49
- `.devrites/AFK` presence is authoritative for run mode; gate-deciding skills re-read
50
- it at decision time. There is no `state.md` run-mode field to drift out of sync.
46
+ `.devrites/AFK` presence owns run mode; gate-deciding skills re-read it at decision
47
+ time. No `state.md` run-mode field can drift out of sync.
51
48
 
52
49
  ## The sentinel: `.devrites/AFK`
53
50
 
54
51
  Presence = AFK active. The file body is optional YAML:
55
52
 
56
53
  ```yaml
57
- max_slices: 10 # whole-workspace writer budget; seeds state.md remaining count
54
+ max_slices: 10 # whole-workspace writer budget; seeds state.md remaining count
58
55
  max_agents: 32 # native agent dispatches in one host activation
59
56
  max_minutes: 120 # min; $rite-autocomplete: not a ceiling
60
57
  max_review_queue: 8 # unresolved review/gate items admitted before fan-out stops
@@ -64,55 +61,52 @@ notify: 'curl -fsS -m 10 -d "$DEVRITES_QID: $DEVRITES_QUESTION" ntfy.sh/my-topic
64
61
  allow_gates: [advisory, validating] # gate severities AFK auto-handles (auto-picks the recommended option)
65
62
  continue_sequence: true # after Seal GO, open the next recorded continuation
66
63
  max_workspaces: 5 # workspaces one armed sequence may open
67
- max_parallel: 10 # unattended default cap; `--parallel N` on this invocation wins and may rewrite only this field
64
+ max_parallel: 10 # unattended default cap; `--parallel N` on this invocation wins and may rewrite only this field
68
65
  ```
69
66
 
70
- The file is **read-only config**: never rewritten in place, except `$rite-autocomplete --parallel N` writes or replaces only `max_parallel: N`. `max_slices` is the initial
71
- budget; the mutable remaining count is the `state.md` cursor
72
- `afk_slices_remaining` (`AFK slices remaining: <n>` in the released bullet
73
- form), owned by the controlling root. Recognize either spelling and preserve
74
- the existing table or bullet presentation. Before dispatch, a configured
75
- `max_slices` and any existing remaining value must be decimal nonnegative
76
- integers; malformed or negative values fail closed. The pending → built state transition spends
67
+ The file is **read-only config**: never rewritten in place, except `$rite-autocomplete --parallel N` writes or replaces only `max_parallel: N`.
68
+
69
+ Outside active `$rite-autocomplete`, the following slice-budget rules apply:
70
+ `max_slices` seeds root-owned `state.md` cursor `afk_slices_remaining`
71
+ (released bullet alias: `AFK slices remaining: <n>`). Accept either spelling;
72
+ preserve table/bullet presentation. Before dispatch, require configured
73
+ `max_slices` and existing remaining values to be decimal nonnegative integers;
74
+ malformed or negative values fail closed. The pending → built state transition spends
77
75
  exactly one slice: on the first green slice write `max_slices - 1`, otherwise
78
76
  write `remaining - 1`, never below zero. Re-reading an already built slice does
79
77
  not spend again. At zero, stop before the next dispatch.
80
78
 
81
- An orchestrator that can derive a stricter budget only after planning may pre-seed
82
- `afk_slices_remaining` in `state.md` before the first dispatch instead of rewriting the
83
- sentinel. It uses the minimum of pending work and every configured/explicit cap. An
84
- existing counter may be lowered but never increased or reinitialized. Once present, that state
85
- counter is the effective remaining budget even when the read-only sentinel omits
86
- `max_slices`.
79
+ A stricter post-planning budget may pre-seed `afk_slices_remaining` before first
80
+ dispatch, not rewrite the sentinel: use the minimum of pending work and all
81
+ configured/explicit caps. An existing counter may be lowered but never increased or reinitialized.
82
+ It remains effective even if the sentinel omits `max_slices`. Under active `$rite-autocomplete`, skip these slice-cap checks,
83
+ charges, zero stops, and minimum-cap seeding; use its
84
+ [post-Vet budget](../../../rite-autocomplete/reference/loop.md#derive-the-mutable-post-vet-budget).
87
85
 
88
86
  ### Sequence continuation (`continue_sequence`, `max_workspaces`)
89
87
 
90
- `continue_sequence: true` lets one armed run open the next **recorded** continuation
91
- after a `Seal GO` instead of stopping. Under `$rite-autocomplete`, absent means on, even
92
- in an existing sentinel; `false` opts out. `max_workspaces` (default 5) is the
93
- sequence budget (nonnegative decimal, fail closed): spend one when a new workspace is
94
- opened, never when resuming the current one. `max_slices` stays **per workspace** —
95
- each new workspace's `state.md` seeds its own `afk_slices_remaining`.
88
+ `continue_sequence: true` opens the next **recorded** continuation after Seal GO.
89
+ Under `$rite-autocomplete`, absent means on, even in existing sentinels; `false` opts out.
90
+ `max_workspaces` (default 5): nonnegative decimal sequence budget, fail closed;
91
+ charge new workspaces only, never resumes. `max_slices`/`afk_slices_remaining` stay **per workspace** outside active
92
+ `$rite-autocomplete`, which uses its post-Vet pending count.
96
93
 
97
94
  The chain lives in root-owned `state.md` cursor fields, not in chat:
98
95
  `sequence_parent` (the immediately preceding workspace slug), `sequence_position`
99
96
  (1-based ordinal), `sequence_workspaces_remaining` (slots the chain may still
100
97
  open after this workspace), and — on the release milestone only —
101
- `sequence_role: release`. Seeding is exactly-once because the values are
102
- derived, not remembered: a continuation's fields are computed from its recorded
103
- parent and the parent's counter at creation, and a resumed run that finds a
104
- continuation workspace missing the fields re-derives the same values from its
105
- `brief.md` parent/position plus the parent's counter — never a second charge. A
106
- workspace without a recorded parent/position is not a sequence member; the
107
- counter only decreases, malformed values fail closed, and `0` opens nothing.
98
+ `sequence_role: release`. Seed exactly once from the recorded parent and its counter at creation.
99
+ On resume, re-derive missing continuation fields from its `brief.md` parent/position
100
+ and parent counter — same values, never a second charge. No recorded parent/position means no sequence membership. Counter only decreases;
101
+ malformed values fail closed; `0` opens nothing.
108
102
  `sequence_role: release` makes `check candidate` and `check seal` require the
109
103
  candidate manifest to cover the whole recorded chain — run
110
104
  `devrites-engine state merge-manifest <slug>` before Prove.
111
105
 
112
106
  - Only continuations recorded in the parent's `decisions.md` sequence
113
107
  ([slicing.md § Continuation workspaces](../../../rite-plan/reference/slicing.md#continuation-workspaces))
114
- qualify; no recorded next entry, or the cap/review-queue bound reached, stops
115
- with the winning reason.
108
+ qualify; no next entry or exhausted `max_workspaces` stops with that reason. The review-queue bound applies only outside active
109
+ `$rite-autocomplete`.
116
110
  - Milestones are **not** shipped: they stay sealed and unarchived in `.devrites/work/`
117
111
  with `Next step: $rite-ship` preserved. Local `WIP(<slug>):` checkpoints still
118
112
  land ([checkpoint.md](../../../rite-build/reference/checkpoint.md)), so the tree
@@ -120,8 +114,9 @@ candidate manifest to cover the whole recorded chain — run
120
114
  - Git stays human-gated. The release ship is one disclosed plan, one literal `GO`, and
121
115
  one native approval; it collapses the sequence's `WIP` commits into the single
122
116
  release commit and may archive the sealed predecessors.
123
- - Every human-owned, safety, access, exhaustion, and `NO-GO` condition still stops the
124
- run exactly as without this field.
117
+ - Human-owned, safety, access, and exhaustion stops remain. Active
118
+ `$rite-autocomplete` recovers agent-owned Seal `NO-GO` per
119
+ [stop-conditions.md](../../../rite-autocomplete/reference/stop-conditions.md), not a handoff.
125
120
 
126
121
  `max_parallel` is the unattended default batch cap only when this invocation does
127
122
  not contain `--parallel N`; `1` forces the serial cycle only in that default
@@ -145,28 +140,30 @@ Existing sentinels that declare writer admission but miss/malform these fail clo
145
140
  state-owned slice counter. A leftover `expires_at` is ignored and never rewritten.
146
141
  Read-only watchers use equivalent native caps from [`loop-operations.md`](loop-operations.md).
147
142
 
143
+ Outside active `$rite-autocomplete`, the following dispatch/queue limits apply:
148
144
  `max_agents` counts every leaf in the native activation, including failures and
149
145
  parallel branches; do not add dispatch telemetry to `.devrites/`. `max_review_queue`
150
146
  counts open validating questions plus unresolved admitted Critical/Important findings.
151
- Above it stop; at it run only reconciliation that reduces the queue. Optional
152
- `max_tokens`/`max_cost_usd` lower enforceable native caps; if declared but unobservable, stop.
147
+ Above it stop; at it run only reconciliation that reduces the queue.
148
+
149
+ Optional `max_tokens`/`max_cost_usd` lower native caps in all unattended modes; if declared but unobservable, stop.
153
150
  `$rite-autocomplete` deliberately ignores `max_slices`, `max_agents`, `max_minutes` and
154
151
  `max_review_queue` ([stop-conditions.md](../../../rite-autocomplete/reference/stop-conditions.md));
155
- there they are not a ceiling.
152
+ not ceilings there.
156
153
 
157
154
  Numeric limits are nonnegative decimals. Before costly checks, fan-out, or writing,
158
- run cheap readiness, reject overlap, count queue, and confirm agent/time/token/cost
159
- headroom; re-check after every result. Never start one call that can exceed remaining
160
- headroom. Agent/time/token/cost counters are per native activation and start fresh only
161
- for a genuinely new activation. Slices, recovery attempts, and current
162
- review queue remain durable/recomputed across wakes. Persist each activation stop and
163
- checkpoint before notification.
155
+ run cheap readiness and reject overlap. Outside active `$rite-autocomplete`, count
156
+ queue and confirm agent/time headroom; under Autocomplete those ignored limits
157
+ never block admission. In both cases confirm declared token/cost and native safety
158
+ headroom; re-check after every result. Never start a call that can exceed an
159
+ applicable remaining limit. Agent/time/token/cost counters are per native activation and start fresh only
160
+ for a new activation. Slice/recovery state and review queue remain durable/recomputed across wakes.
161
+ Persist stops/checkpoints before notification.
164
162
 
165
- New sentinels write no `expires_at` and no notification/token/cost cap.
166
- Post-Vet pending count may lower slices. Existing files
167
- never receive missing defaults implicitly.
163
+ New sentinels omit `expires_at` and notification/token/cost caps. Post-Vet pending
164
+ count may lower standalone slices. Never add missing defaults to existing files.
168
165
 
169
- To leave AFK, delete the file. The next skill invocation reverts to HITL.
166
+ Delete the file to restore HITL on the next invocation.
170
167
 
171
168
  ## The four gates
172
169
 
@@ -223,10 +220,9 @@ keep the **rejected options in `questions.md`**.
223
220
 
224
221
  ## Decision ownership: search before asking
225
222
 
226
- A gate is human only when its remaining choice is human-owned. First search live code,
227
- project/decision docs, and authoritative dependency sources; make and record reversible
228
- implementation/test choices. Ask only about product, scope, acceptance, architecture policy,
229
- irreversible risk, or human-only access/action.
223
+ First search live code, project/decision docs, and authoritative dependency sources;
224
+ make and record reversible implementation/test choices. Ask only human-owned
225
+ product, scope, acceptance, architecture-policy, irreversible-risk, or access/action choices.
230
226
 
231
227
  Objective test/build/tool failure runs bounded `devrites-debug-recovery`; fix it, or escalate and
232
228
  park it under the [retry contract](#retry-cap-no-progress-loops-and-self-resolve). Never ask
@@ -10,7 +10,10 @@ Follow DevRites policy and [`depth profiles`](../orchestration-profiles.md).
10
10
  - Root owns scope, questions/decisions/results, `.devrites/**`, phase transitions — not product source/tests; vetted executable workflow artifacts follow [`workflow-artifacts.md`](workflow-artifacts.md).
11
11
  - Every named role runs; unavailable → HITL, never skip/substitute.
12
12
  <!-- /root-only -->
13
- - Only bounded wright writes product source/tests; others inspect an immutable candidate.
13
+ - Among lifecycle `devrites-*` specialists, only bounded wright writes product
14
+ source/tests; others inspect an immutable candidate. The independent `$rite-fast`
15
+ lane instead uses only its existing `fast-builder` as writer under its own roster;
16
+ never substitute a lifecycle role. Root remains source/test nonwriter.
14
17
  - Leaves never invoke agents, ask humans, change phase, push, install/deploy, migrate live data, or act irreversibly; they return evidence/proposals for root acceptance. Sole exception: one local unpushed transfer commit by an eligible native-worktree `devrites-slice-wright` — transport, not shipping authority or a checkpoint.
15
18
 
16
19
  <!-- root-only -->
@@ -56,8 +59,15 @@ Workflow-named skills (e.g. devrites-source-driven) are invoked inline in the ro
56
59
 
57
60
  ## Source-writing boundary
58
61
 
62
+ Among lifecycle `devrites-*` specialists only (independent Fast exception below):
59
63
  Claude grants only wright `acceptEdits`; Codex root is workspace-capable (children cannot elevate). Wright alone `:workspace`; others `:read-only`. Wright gets the smallest exact project-relative source/test list — no directories/globs, traversal, or `.devrites/**`; no scope widening; root rejects `git diff --name-only` extras. Never patch product source/tests in root, bypass/substitute wright, accept drift, or recreate a dispatch bridge.
60
64
 
65
+ Independent Fast exception: `$rite-fast` uses its existing `fast-builder` write-capable
66
+ profile, not a `devrites-*` substitute, under the exact Fast roster and lane contract.
67
+ Only that bounded writer may edit its exact project-relative source/test paths; no
68
+ workspace writes, scope widening, or second writer. Root remains source/test nonwriter.
69
+ This exception grants no additional tools, permissions, phase, agent-launch, or Git authority.
70
+
61
71
  Isolated-worktree pilot only under [`wright-dispatch.md`](../../../rite-build/reference/wright-dispatch.md#isolated-writer-worktree-pilot): one writer, committed/clean baseline, non-submodule parent, exact transfer commit, candidate reconciliation — never parallel writers nor weaker exact-path admission. Root may materialize only exact Vet-ready workflow-artifact paths per [`workflow-artifacts.md`](workflow-artifacts.md) — not a writer dispatch or candidate mutation.
62
72
 
63
73
  Each job gets objective/exclusions, exact paths/immutable candidate, rubric/result shape, a **stop condition** (when to return), and the exact result shape; a dispatch missing them is malformed and re-issued. Briefs MUST NOT seed verdict/severity cap/conclusion/suppression. Results state status/scope, outcome, commands/escalation; wright adds paths, changed files, gates, stood decisions; results never widen scope.
@@ -2,14 +2,12 @@
2
2
 
3
3
  > Applies when: always; every workspace rite reads it first.
4
4
 
5
- Each workspace rite reads core first. Its `loads:` manifest `always` set is its required
6
- read-set (`devrites-engine context --skills-root .agents/skills <slug> --skill <name>` where a workspace exists, else
7
- read the listed files); a trigger's files load when its named condition holds. Load any
8
- other rule file from `README.md` on demand.
5
+ Read core first, then the `loads:` manifest `always` set (via
6
+ `devrites-engine context --skills-root .agents/skills <slug> --skill <name>` with a workspace, else listed files).
7
+ Load trigger files when their named condition holds; other `README.md` rules on demand.
9
8
 
10
- Rules are cited as `core.md #N` (CORE-N). Numbering is stable: text may be
11
- reworded, an ID never changes meaning. Other files name the ID instead of
12
- repeating the rule.
9
+ Cite rules as `core.md #N` (CORE-N), not repeated text. IDs keep their meaning
10
+ even when reworded.
13
11
 
14
12
  Uppercase MUST/MUST NOT/SHOULD/SHOULD NOT/MAY carry RFC 2119 meaning: MUST is a gate;
15
13
  a SHOULD deviation records its reason in `decisions.md` (the exception procedure); MAY
@@ -20,9 +18,9 @@ Repository conventions follow [Precedence](#precedence).
20
18
 
21
19
  ## Operating rules (every phase)
22
20
 
23
- 1. **Right step, right time:** use the smallest workflow and load only relevant
24
- files. Batch independent reads and cover the relevant code, not just the first
25
- match. Prefer an available code index for structure; see
21
+ 1. **Right step, right time:** use the smallest workflow/relevant read-set. Batch
22
+ independent reads; cover relevant code beyond the first match. Prefer an
23
+ available structural code index; see
26
24
  [`tooling.md`](tooling.md) and [`code-index.md`](code-index.md).
27
25
  2. **No silent assumptions:** surface material assumptions; ask when the answer
28
26
  changes scope, architecture, data model, UX, security, migration risk, or
@@ -32,12 +30,14 @@ Repository conventions follow [Precedence](#precedence).
32
30
  when the answer changes the product.
33
31
  4. **Keep the spec current:** change spec / plan only through the Spec Drift Guard;
34
32
  never code against a known-wrong plan. A later phase MUST NOT rewrite a sealed
35
- artifact in place so the code "matches." Append a dated delta through the
36
- owning rite, or record drift. **Failing case:** Build edits `spec.md`
33
+ artifact so the code "matches." Record drift and route to the owning rite;
34
+ an authorized owner repair reconciles the current owning clause in place and
35
+ preserves rationale/history in `decisions.md`, not an adjacent dated delta. **Failing case:** Build edits `spec.md`
37
36
  acceptance criteria to fit the implementation.
38
- 5. **One slice at a time:** leave one vertical slice working and proven, then
39
- stop. HITL never auto-continues; AFK runs to its slice budget
40
- ([`afk-hitl.md`](afk-hitl.md)).
37
+ 5. **One slice at a time:** prove each vertical slice working.
38
+ Standalone HITL stops after one slice; standalone AFK runs to its slice budget
39
+ ([`afk-hitl.md`](afk-hitl.md)). Active `$rite-autocomplete` returns green
40
+ checkpoints internally and continues the lifecycle to completion or a genuine stop.
41
41
  6. **Evidence over confidence:** tests, builds, runtime, screenshots beat
42
42
  assertions; record commands and output. Tag how each claim was known:
43
43
  `observed` (you ran or read the evidence), `inferred` (deduced — name the
@@ -69,51 +69,50 @@ Each gate is declared as **Name · Precondition · Satisfying observation (exact
69
69
 
70
70
  Verdict discipline — no vacuous verdicts:
71
71
 
72
- - The precondition asserts the artifact **exists and is non-empty**, not merely that its
73
- path resolves. **Failing case:** a phase passes its prerequisite gate, then dies
74
- mid-analysis reading a missing spec.
72
+ - The precondition asserts the artifact **exists and is non-empty**, not just a
73
+ resolved path. **Failing case:** prerequisite passes, analysis dies on a missing spec.
75
74
  - A verdict is **PASS**, **FAIL**, or **NOT-RUN**. A NOT-RUN carries its named marker
76
75
  (`unavailable: <reason>`, `unproven`, `partial: <what ran>`) in the consuming artifact;
77
76
  it never renders as clean and never goes silent. **Failing case:** a review sub-step
78
77
  that never ran is simply omitted from the summary, which reads as a clean run.
79
- - A PASS is valid only when the observation states a **positive count of items actually
80
- checked**; zero checked items is FAIL. **Failing case:** an unparseable checklist yields
81
- an empty result set and a green verdict over zero evidence.
78
+ - PASS needs a **positive count of items actually checked**; zero is FAIL.
79
+ **Failing case:** an unparseable checklist produces an empty green result.
82
80
  - Scope-bearing gates name their **baseline** and fail only on issues attributable to the
83
81
  change; "could not run" (timeout, unreachable, parse failure) is never recorded as
84
82
  "failed". **Failing case:** a dependency gate reddens on a pre-existing advisory
85
83
  unrelated to the diff.
86
- - Failure behavior is **abort** (stop; the blocked step is named) or **record-and-continue**
87
- (the FAIL/NOT-RUN is recorded with its marker and the run proceeds). Both are legal;
88
- silent is not.
84
+ - Failure behavior is **abort** (name blocked step and stop) or **record-and-continue**
85
+ (record FAIL/NOT-RUN with its marker, proceed). Never silent.
89
86
 
90
87
  <!-- root-only -->
91
88
  ## Caller-owned technical backtracking
92
89
 
93
90
  When a rite invokes an earlier rite inline to repair an agent-owned technical gap, the original rite stays the controlling caller: a nested `STOP` is a phase boundary, not user-facing. The caller re-reads `state.md`, follows the return cursor/`next_action`, and resumes unless a human-owned, safety, access, budget, or parked-recovery stop is active ([Persistence before stopping](#persistence-before-stopping-handoff-discipline)). Derive `parked-recovery` from the fingerprint's recorded no-progress attempts and escalations, not from a stale `state.md` label; one consumed authorization doesn't exhaust offline recovery from retained new evidence.
94
91
 
95
- An intermediate `Next step` is cold-resume metadata. Do not ask the human to
96
- copy routine `$rite-plan repair`, `$rite-vet`, `$rite-build`, or proof-rerun
97
- commands during the active recovery chain. Only the controlling caller emits
98
- the final response; standalone phase invocations still stop normally.
92
+ Under active `$rite-autocomplete`, green slice/phase checkpoints and their recorded
93
+ `next_action` are internal continuation edges, not final replies. Consume them and
94
+ technical backtracking until requested completion or a genuine stop; tool progress never yields control.
95
+
96
+ Intermediate `Next step` is cold-resume metadata, not a human copy/paste request
97
+ for routine `$rite-plan repair`, `$rite-vet`, `$rite-build`, or proof reruns during
98
+ active recovery. Only the caller emits the final response; standalone phases stop normally.
99
99
  <!-- /root-only -->
100
100
 
101
101
  <!-- root-only -->
102
102
  ## Final response
103
103
 
104
- Immediately before its final response, each rite loads
105
- [`reply-contract.md`](../reply-contract.md) then uses the compact form: evidenced
106
- claims plus one next action.
104
+ Immediately before its final response, the controlling caller or standalone rite loads
105
+ [`reply-contract.md`](../reply-contract.md): compact evidenced claims, one next action.
107
106
  <!-- /root-only -->
108
107
 
109
108
  ## Rationalization guard
110
109
 
111
- On an excuse, apply its matching
112
- [`anti-patterns.md` rebuttal](anti-patterns.md#universal-rationalizations) before continuing.
110
+ Before continuing on an excuse, apply its
111
+ [`anti-patterns.md` rebuttal](anti-patterns.md#universal-rationalizations).
113
112
 
114
113
  ## Rule summary (load the full file when in scope)
115
114
 
116
- These universal musts link to their full rules; load depth only when needed.
115
+ Universal musts; load linked rules when needed.
117
116
 
118
117
  - **Fail fast, no silent catches.** Validate early; catch narrow, recover or
119
118
  rethrow with context; fail closed on auth/permission/transaction. →
@@ -136,7 +135,7 @@ These universal musts link to their full rules; load depth only when needed.
136
135
  - **Measure before you optimize.** An optimisation without a measurement is a
137
136
  guess that adds complexity. → [`performance.md`](performance.md)
138
137
  - **Names reveal intent.** No `process()` / `handle()` / `data` / `temp`.
139
- One concept, one word, across the codebase. → [`coding-style.md`](coding-style.md)
138
+ One word per concept codebase-wide. → [`coding-style.md`](coding-style.md)
140
139
  - **Comments explain *why*, not *what*.** Rename before you comment; delete
141
140
  commented-out code. → [`coding-style.md`](coding-style.md)
142
141
  - **Write like a human, not a model.** Cut filler, fake contrast/profundity,
@@ -167,19 +166,21 @@ Before any `rite-*` skill stops:
167
166
  [--unset key]`; a new ledger section via `state append <slug> <ledger> --heading "<id>"
168
167
  --body-file <path|->`. Never splice workspace Markdown with an ad-hoc script or regex.
169
168
 
170
- A skill that stops without doing this leaves the workspace incomplete.
169
+ Stopping without this leaves an incomplete workspace.
171
170
  <!-- /root-only -->
172
171
 
173
172
  ## Context hygiene (end of every phase)
174
173
 
175
174
  Long contexts degrade reasoning quality. Act on context at **50-70% used, not 95%**.
176
175
 
177
- Read the engine `context` bundle once per phase instead of re-reading the files it
178
- contains; after compaction re-read the bundle, not its sources.
176
+ Read the engine `context` bundle once per phase, not its sources; after compaction
177
+ re-read the bundle.
179
178
 
180
179
  <!-- root-only -->
181
- Every rite names the single resume command on its action line; a `↻ Hygiene:` footer
182
- advises `/clear`, `/compact`, or `$rite-handoff` and never a competing command. Full phase-by-phase guidance:
180
+ Only controlling-caller final replies or standalone rites name a resume command
181
+ on the action line; nested phases persist it internally, not as a handoff.
182
+ A `↻ Hygiene:` footer advises `/clear`, `/compact`, or `$rite-handoff`, never a
183
+ competing command. Phase guidance:
183
184
  [`context-hygiene.md`](context-hygiene.md).
184
185
  <!-- /root-only -->
185
186
 
@@ -140,30 +140,28 @@ next sequence continuation through Vet in a second session, then stop.
140
140
  product scope is never auto-resolved by a recommended option; it stops for a human.
141
141
  A spent strategy escalates; parked recovery records
142
142
  `Next step: $rite-autocomplete`, never a routine phase command. **Completion:** no stop is active, or its cursor and reason are durable.
143
- 6. **Seal boundary.** Without a ship flag, leave the sealed workspace unshipped and
144
- open the next recorded continuation
143
+ 6. **Seal boundary.** With or without a ship flag, leave intermediate sealed
144
+ workspaces unshipped and open the next recorded continuation
145
145
  ([loop.md § Sequence continuation](reference/loop.md#sequence-continuation))
146
146
  unless `continue_sequence: false`, the sequence budget is spent, or no entry
147
- remains; then stop at Seal GO with `$rite-ship`. Report the sequence position on
148
- every stop.
149
- With a ship flag, perform Ship preflight, disclose the exact Git plan, and stop for
150
- fresh literal `GO` plus native approval. **Completion:** performed no Git action before fresh literal `GO` plus native approval.
147
+ remains. At that boundary without a ship flag, stop at Seal GO with `$rite-ship`.
148
+ Report sequence position at every stop. Only at that boundary, with a ship flag, perform Ship preflight,
149
+ disclose the exact Git plan, and stop for fresh literal `GO` plus native approval. **Completion:** performed no Git action before fresh literal `GO` plus native approval.
151
150
 
152
151
  ## Reply and resume
153
152
 
154
- HITL Build returns after one slice; Autocomplete ignores `--max-slices` and
155
- keeps chaining pending slices. One Autocomplete invocation owns all internal
156
- backtracking. Context pressure, compaction, or a nested completion footer does
153
+ HITL Build returns after one slice; Autocomplete ignores `--max-slices`, chaining
154
+ pending slices. Each Autocomplete invocation owns internal backtracking. Context pressure, compaction, or a nested completion footer does
157
155
  not create a stop; persist and resume the cursor.
158
156
 
159
- Reply only at a final state, never as mid-run progress: a text-only turn ends
160
- the run, so after a compaction or phase change keep calling tools. Use one terse line:
157
+ Reply only at final state: text-only turns end the run. Keep
158
+ calling tools after compaction or phase changes. Use one line:
161
159
 
162
160
  ```text
163
161
  Autocomplete: <slug>
164
162
  spec <done|stopped> · clarify <clear|stopped> · temper <done|stopped> · define <done|stopped> · vet <ready|stopped> · build <n/N|stopped> · prove <done|stopped> · polish <done|stopped> · review <done|stopped> · seal <GO|NO-GO|stopped>
165
163
  ```
166
164
 
167
- Final state is `Shipped`, `Stopped`, `Awaiting human`, `NO-GO`, or `GO`; do not
168
- write a narrative recap. Require a clean or accepted baseline, land a local
169
- unpushed checkpoint after each green check, and never auto-pass a red gate.
165
+ Final state: `Shipped`, `Stopped`, `Awaiting human`, `NO-GO`, or `GO`; no narrative
166
+ recap. Require clean or accepted baseline; land local unpushed checkpoints after
167
+ each green check; never auto-pass red gates.