devrites 6.1.0 → 6.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 (202) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +1 -1
  3. package/docs/architecture.md +3 -1
  4. package/docs/cli.md +4 -1
  5. package/docs/engine/commands.md +4 -4
  6. package/docs/orchestration.md +4 -3
  7. package/docs/usage.md +1 -1
  8. package/engine/internal/lib/claims.go +12 -2
  9. package/engine/internal/lib/claims_holder.go +124 -0
  10. package/engine/internal/lib/cli_observe.go +14 -0
  11. package/engine/internal/lib/taskgraph.go +124 -0
  12. package/engine/internal/parallel/cli.go +111 -9
  13. package/engine/internal/parallel/lease.go +58 -4
  14. package/engine/internal/parallel/ops.go +244 -75
  15. package/engine/internal/parallel/select.go +31 -6
  16. package/pack/.claude/agents/devrites-plan-drafter.md +2 -1
  17. package/pack/.claude/agents/devrites-slice-wright.md +2 -1
  18. package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +5 -4
  19. package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +7 -2
  20. package/pack/.claude/skills/devrites-lib/reference/reply-contract.md +12 -15
  21. package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +28 -8
  22. package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +6 -2
  23. package/pack/.claude/skills/devrites-lib/reference/standards/core.md +1 -1
  24. package/pack/.claude/skills/devrites-lib/reference/standards/one-shot-actions.md +7 -6
  25. package/pack/.claude/skills/devrites-lib/reference/standards/workflow-artifacts.md +10 -6
  26. package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +1 -1
  27. package/pack/.claude/skills/rite-autocomplete/SKILL.md +13 -11
  28. package/pack/.claude/skills/rite-autocomplete/reference/loop.md +8 -6
  29. package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +28 -21
  30. package/pack/.claude/skills/rite-build/SKILL.md +7 -7
  31. package/pack/.claude/skills/rite-build/reference/afk-discipline.md +8 -5
  32. package/pack/.claude/skills/rite-build/reference/checkpoint.md +1 -1
  33. package/pack/.claude/skills/rite-build/reference/one-slice-cycle.md +1 -1
  34. package/pack/.claude/skills/rite-build/reference/parallel-batch.md +33 -26
  35. package/pack/.claude/skills/rite-build/reference/phase-contract.md +10 -1
  36. package/pack/.claude/skills/rite-build/reference/spec-drift-guard.md +3 -2
  37. package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +2 -2
  38. package/pack/.claude/skills/rite-define/SKILL.md +1 -1
  39. package/pack/.claude/skills/rite-handoff/SKILL.md +1 -1
  40. package/pack/.claude/skills/rite-plan/SKILL.md +1 -1
  41. package/pack/.claude/skills/rite-plan/reference/slicing.md +5 -0
  42. package/pack/.claude/skills/rite-prove/SKILL.md +4 -2
  43. package/pack/.claude/skills/rite-prove/reference/failure-triage.md +2 -1
  44. package/pack/.claude/skills/rite-spec/reference/state-workspace.md +2 -2
  45. package/pack/.claude/skills/rite-vet/reference/artifacts.md +8 -0
  46. package/pack/.claude/skills/rite-vet/reference/review-axes.md +1 -1
  47. package/pack/generated/claude/agents/devrites-plan-drafter.md +2 -1
  48. package/pack/generated/claude/agents/devrites-slice-wright.md +2 -1
  49. package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +5 -4
  50. package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +7 -2
  51. package/pack/generated/claude/skills/devrites-lib/reference/reply-contract.md +12 -15
  52. package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +28 -8
  53. package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +6 -2
  54. package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +1 -1
  55. package/pack/generated/claude/skills/devrites-lib/reference/standards/one-shot-actions.md +7 -6
  56. package/pack/generated/claude/skills/devrites-lib/reference/standards/workflow-artifacts.md +10 -6
  57. package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +1 -1
  58. package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +13 -11
  59. package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +8 -6
  60. package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +28 -21
  61. package/pack/generated/claude/skills/rite-build/SKILL.md +7 -7
  62. package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +8 -5
  63. package/pack/generated/claude/skills/rite-build/reference/checkpoint.md +1 -1
  64. package/pack/generated/claude/skills/rite-build/reference/one-slice-cycle.md +1 -1
  65. package/pack/generated/claude/skills/rite-build/reference/parallel-batch.md +33 -26
  66. package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +10 -1
  67. package/pack/generated/claude/skills/rite-build/reference/spec-drift-guard.md +3 -2
  68. package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +2 -2
  69. package/pack/generated/claude/skills/rite-define/SKILL.md +1 -1
  70. package/pack/generated/claude/skills/rite-handoff/SKILL.md +1 -1
  71. package/pack/generated/claude/skills/rite-plan/SKILL.md +1 -1
  72. package/pack/generated/claude/skills/rite-plan/reference/slicing.md +5 -0
  73. package/pack/generated/claude/skills/rite-prove/SKILL.md +4 -2
  74. package/pack/generated/claude/skills/rite-prove/reference/failure-triage.md +2 -1
  75. package/pack/generated/claude/skills/rite-spec/reference/state-workspace.md +2 -2
  76. package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +8 -0
  77. package/pack/generated/claude/skills/rite-vet/reference/review-axes.md +1 -1
  78. package/pack/generated/codex/agents/devrites-plan-drafter.toml +2 -1
  79. package/pack/generated/codex/agents/devrites-slice-wright.toml +2 -1
  80. package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +5 -4
  81. package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +7 -2
  82. package/pack/generated/codex/skills/devrites-lib/reference/reply-contract.md +12 -15
  83. package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +28 -8
  84. package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +6 -2
  85. package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +1 -1
  86. package/pack/generated/codex/skills/devrites-lib/reference/standards/one-shot-actions.md +7 -6
  87. package/pack/generated/codex/skills/devrites-lib/reference/standards/workflow-artifacts.md +10 -6
  88. package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +1 -1
  89. package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +13 -11
  90. package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +8 -6
  91. package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +28 -21
  92. package/pack/generated/codex/skills/rite-build/SKILL.md +7 -7
  93. package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +8 -5
  94. package/pack/generated/codex/skills/rite-build/reference/checkpoint.md +1 -1
  95. package/pack/generated/codex/skills/rite-build/reference/one-slice-cycle.md +1 -1
  96. package/pack/generated/codex/skills/rite-build/reference/parallel-batch.md +33 -26
  97. package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +10 -1
  98. package/pack/generated/codex/skills/rite-build/reference/spec-drift-guard.md +3 -2
  99. package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +2 -2
  100. package/pack/generated/codex/skills/rite-define/SKILL.md +1 -1
  101. package/pack/generated/codex/skills/rite-handoff/SKILL.md +1 -1
  102. package/pack/generated/codex/skills/rite-plan/SKILL.md +1 -1
  103. package/pack/generated/codex/skills/rite-plan/reference/slicing.md +5 -0
  104. package/pack/generated/codex/skills/rite-prove/SKILL.md +4 -2
  105. package/pack/generated/codex/skills/rite-prove/reference/failure-triage.md +2 -1
  106. package/pack/generated/codex/skills/rite-spec/reference/state-workspace.md +2 -2
  107. package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +8 -0
  108. package/pack/generated/codex/skills/rite-vet/reference/review-axes.md +1 -1
  109. package/pack/generated/devin/agents/devrites-plan-drafter.md +2 -1
  110. package/pack/generated/devin/agents/devrites-slice-wright.md +2 -1
  111. package/pack/generated/devin/skills/devrites-debug-recovery/SKILL.md +5 -4
  112. package/pack/generated/devin/skills/devrites-lib/reference/parallel-dispatch.md +7 -2
  113. package/pack/generated/devin/skills/devrites-lib/reference/reply-contract.md +12 -15
  114. package/pack/generated/devin/skills/devrites-lib/reference/standards/afk-hitl.md +28 -8
  115. package/pack/generated/devin/skills/devrites-lib/reference/standards/agents.md +6 -2
  116. package/pack/generated/devin/skills/devrites-lib/reference/standards/core.md +1 -1
  117. package/pack/generated/devin/skills/devrites-lib/reference/standards/one-shot-actions.md +7 -6
  118. package/pack/generated/devin/skills/devrites-lib/reference/standards/workflow-artifacts.md +10 -6
  119. package/pack/generated/devin/skills/devrites-lib/reference/workspace-artifact-schema.md +1 -1
  120. package/pack/generated/devin/skills/rite-autocomplete/SKILL.md +13 -11
  121. package/pack/generated/devin/skills/rite-autocomplete/reference/loop.md +8 -6
  122. package/pack/generated/devin/skills/rite-autocomplete/reference/stop-conditions.md +28 -21
  123. package/pack/generated/devin/skills/rite-build/SKILL.md +7 -7
  124. package/pack/generated/devin/skills/rite-build/reference/afk-discipline.md +8 -5
  125. package/pack/generated/devin/skills/rite-build/reference/checkpoint.md +1 -1
  126. package/pack/generated/devin/skills/rite-build/reference/one-slice-cycle.md +1 -1
  127. package/pack/generated/devin/skills/rite-build/reference/parallel-batch.md +33 -26
  128. package/pack/generated/devin/skills/rite-build/reference/phase-contract.md +10 -1
  129. package/pack/generated/devin/skills/rite-build/reference/spec-drift-guard.md +3 -2
  130. package/pack/generated/devin/skills/rite-build/reference/wright-dispatch.md +2 -2
  131. package/pack/generated/devin/skills/rite-define/SKILL.md +1 -1
  132. package/pack/generated/devin/skills/rite-handoff/SKILL.md +1 -1
  133. package/pack/generated/devin/skills/rite-plan/SKILL.md +1 -1
  134. package/pack/generated/devin/skills/rite-plan/reference/slicing.md +5 -0
  135. package/pack/generated/devin/skills/rite-prove/SKILL.md +4 -2
  136. package/pack/generated/devin/skills/rite-prove/reference/failure-triage.md +2 -1
  137. package/pack/generated/devin/skills/rite-spec/reference/state-workspace.md +2 -2
  138. package/pack/generated/devin/skills/rite-vet/reference/artifacts.md +8 -0
  139. package/pack/generated/devin/skills/rite-vet/reference/review-axes.md +1 -1
  140. package/pack/generated/omp/agents/devrites-plan-drafter.md +2 -1
  141. package/pack/generated/omp/agents/devrites-slice-wright.md +2 -1
  142. package/pack/generated/omp/skills/devrites-debug-recovery/SKILL.md +5 -4
  143. package/pack/generated/omp/skills/devrites-lib/reference/parallel-dispatch.md +7 -2
  144. package/pack/generated/omp/skills/devrites-lib/reference/reply-contract.md +12 -15
  145. package/pack/generated/omp/skills/devrites-lib/reference/standards/afk-hitl.md +28 -8
  146. package/pack/generated/omp/skills/devrites-lib/reference/standards/agents.md +6 -2
  147. package/pack/generated/omp/skills/devrites-lib/reference/standards/core.md +1 -1
  148. package/pack/generated/omp/skills/devrites-lib/reference/standards/one-shot-actions.md +7 -6
  149. package/pack/generated/omp/skills/devrites-lib/reference/standards/workflow-artifacts.md +10 -6
  150. package/pack/generated/omp/skills/devrites-lib/reference/workspace-artifact-schema.md +1 -1
  151. package/pack/generated/omp/skills/rite-autocomplete/SKILL.md +13 -11
  152. package/pack/generated/omp/skills/rite-autocomplete/reference/loop.md +8 -6
  153. package/pack/generated/omp/skills/rite-autocomplete/reference/stop-conditions.md +28 -21
  154. package/pack/generated/omp/skills/rite-build/SKILL.md +7 -7
  155. package/pack/generated/omp/skills/rite-build/reference/afk-discipline.md +8 -5
  156. package/pack/generated/omp/skills/rite-build/reference/checkpoint.md +1 -1
  157. package/pack/generated/omp/skills/rite-build/reference/one-slice-cycle.md +1 -1
  158. package/pack/generated/omp/skills/rite-build/reference/parallel-batch.md +33 -26
  159. package/pack/generated/omp/skills/rite-build/reference/phase-contract.md +10 -1
  160. package/pack/generated/omp/skills/rite-build/reference/spec-drift-guard.md +3 -2
  161. package/pack/generated/omp/skills/rite-build/reference/wright-dispatch.md +2 -2
  162. package/pack/generated/omp/skills/rite-define/SKILL.md +1 -1
  163. package/pack/generated/omp/skills/rite-handoff/SKILL.md +1 -1
  164. package/pack/generated/omp/skills/rite-plan/SKILL.md +1 -1
  165. package/pack/generated/omp/skills/rite-plan/reference/slicing.md +5 -0
  166. package/pack/generated/omp/skills/rite-prove/SKILL.md +4 -2
  167. package/pack/generated/omp/skills/rite-prove/reference/failure-triage.md +2 -1
  168. package/pack/generated/omp/skills/rite-spec/reference/state-workspace.md +2 -2
  169. package/pack/generated/omp/skills/rite-vet/reference/artifacts.md +8 -0
  170. package/pack/generated/omp/skills/rite-vet/reference/review-axes.md +1 -1
  171. package/pack/generated/pi/agents/devrites-plan-drafter.md +2 -1
  172. package/pack/generated/pi/agents/devrites-slice-wright.md +2 -1
  173. package/pack/generated/pi/skills/devrites-debug-recovery/SKILL.md +5 -4
  174. package/pack/generated/pi/skills/devrites-lib/reference/parallel-dispatch.md +7 -2
  175. package/pack/generated/pi/skills/devrites-lib/reference/reply-contract.md +12 -15
  176. package/pack/generated/pi/skills/devrites-lib/reference/standards/afk-hitl.md +28 -8
  177. package/pack/generated/pi/skills/devrites-lib/reference/standards/agents.md +6 -2
  178. package/pack/generated/pi/skills/devrites-lib/reference/standards/core.md +1 -1
  179. package/pack/generated/pi/skills/devrites-lib/reference/standards/one-shot-actions.md +7 -6
  180. package/pack/generated/pi/skills/devrites-lib/reference/standards/workflow-artifacts.md +10 -6
  181. package/pack/generated/pi/skills/devrites-lib/reference/workspace-artifact-schema.md +1 -1
  182. package/pack/generated/pi/skills/rite-autocomplete/SKILL.md +13 -11
  183. package/pack/generated/pi/skills/rite-autocomplete/reference/loop.md +8 -6
  184. package/pack/generated/pi/skills/rite-autocomplete/reference/stop-conditions.md +28 -21
  185. package/pack/generated/pi/skills/rite-build/SKILL.md +7 -7
  186. package/pack/generated/pi/skills/rite-build/reference/afk-discipline.md +8 -5
  187. package/pack/generated/pi/skills/rite-build/reference/checkpoint.md +1 -1
  188. package/pack/generated/pi/skills/rite-build/reference/one-slice-cycle.md +1 -1
  189. package/pack/generated/pi/skills/rite-build/reference/parallel-batch.md +33 -26
  190. package/pack/generated/pi/skills/rite-build/reference/phase-contract.md +10 -1
  191. package/pack/generated/pi/skills/rite-build/reference/spec-drift-guard.md +3 -2
  192. package/pack/generated/pi/skills/rite-build/reference/wright-dispatch.md +2 -2
  193. package/pack/generated/pi/skills/rite-define/SKILL.md +1 -1
  194. package/pack/generated/pi/skills/rite-handoff/SKILL.md +1 -1
  195. package/pack/generated/pi/skills/rite-plan/SKILL.md +1 -1
  196. package/pack/generated/pi/skills/rite-plan/reference/slicing.md +5 -0
  197. package/pack/generated/pi/skills/rite-prove/SKILL.md +4 -2
  198. package/pack/generated/pi/skills/rite-prove/reference/failure-triage.md +2 -1
  199. package/pack/generated/pi/skills/rite-spec/reference/state-workspace.md +2 -2
  200. package/pack/generated/pi/skills/rite-vet/reference/artifacts.md +8 -0
  201. package/pack/generated/pi/skills/rite-vet/reference/review-axes.md +1 -1
  202. package/package.json +1 -1
@@ -1,10 +1,10 @@
1
1
  # Stop conditions: when autocomplete pauses
2
2
 
3
3
  On a real stop, write `state.md` as `awaiting_human` or `blocked`, persist the
4
- reason, and include one resume command only when an actual human/safety/access
5
- action can change it. Exhausted agent-owned recovery records terminal
6
- `Next step: none` and no runnable recovery command. `--ship` never bypasses a
7
- stop.
4
+ reason, and include one resume command. Agent-owned recovery never ends the run:
5
+ a spent strategy escalates and a fully escalated fingerprint parks while other
6
+ work continues ([retry contract](../../devrites-lib/reference/standards/afk-hitl.md#retry-cap-no-progress-loops-and-self-resolve)).
7
+ `--ship` never bypasses a stop.
8
8
 
9
9
  Authority: `.pi/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md`.
10
10
 
@@ -24,8 +24,8 @@ Regardless of flags or AFK ceiling:
24
24
  - external-service contract change; or
25
25
  - filesystem destruction outside the workspace.
26
26
 
27
- Red proof cannot advance. Run bounded Debug Recovery; stop after proven
28
- exhaustion unless the remaining owner is human.
27
+ Red proof cannot advance. Run bounded Debug Recovery and escalate spent
28
+ strategies; a fully escalated fingerprint parks unless the remaining owner is human.
29
29
 
30
30
  ## Not stops: internal technical routing
31
31
 
@@ -36,13 +36,16 @@ agent-owned.
36
36
 
37
37
  Agent-owned backtracking is not a stop condition while the exact causal
38
38
  fingerprint has budget. Invoke the earlier phase, affected Vet, remediation, and
39
- proof; then resume the origin. Stop only after three no-progress corrections of
40
- that exact fingerprint or a real human/safety/access gate. Preserve reproduction,
41
- attempts, and dead ends; never offer `/rite-plan unblock` or another routine
42
- phase command. Reinvocation with unchanged evidence does not reset the cap.
43
- `unchanged` means the same fingerprint already has three recorded no-progress
44
- corrections. Closure is progress; a separately evidenced Critical/Important
45
- invariant starts its own cap and cannot extend the closed one.
39
+ proof; then resume the origin. Three no-progress corrections of that exact
40
+ fingerprint spend only its current strategy: escalate to the next correction
41
+ class inline (shared root cause, boundary redesign, diagnostic amplification)
42
+ with a fresh budget, never asking permission. After three escalations in this
43
+ activation the fingerprint parks; finish all independent work, then stop once.
44
+ Preserve reproduction, attempts, and dead ends; never offer `/rite-plan unblock`
45
+ or another routine phase command. A new user-issued `/rite-autocomplete`
46
+ reopens parked fingerprints with fresh escalation; wakes and compaction do not.
47
+ Closure is progress; a separately evidenced Critical/Important invariant starts
48
+ its own cap and cannot extend the closed one.
46
49
 
47
50
  Spent consumptive-action authorization is not technical-recovery exhaustion.
48
51
  It blocks another execution; retained new Critical/Important evidence still
@@ -52,11 +55,10 @@ authorization and never reuse old GO.
52
55
  Past evidence being irretrievable is not by itself terminal. If an in-scope
53
56
  trusted seam can uniquely discriminate the next failure, run diagnostic-
54
57
  amplification Plan repair and narrow Vet inline, then pause for fresh GO before
55
- one evidence-acquisition attempt. Use terminal none only when no safe in-scope
56
- seam exists, a real human/risk/scope gate owns it, or bounded recovery is
57
- exhausted.
58
+ one evidence-acquisition attempt. Without a safe seam, escalate to the next
59
+ class or park; only a real human/risk/scope gate stops for a human.
58
60
 
59
- <!-- workflow-artifact-adapter: {"module":"devrites-lib/reference/standards/workflow-artifacts.md","entry":"classifier returns owner-busy, exhausted, or existing hard gate","action":"stop on exact WAIT_ACTIVE_OWNER, BLOCKED_EXHAUSTED, or BLOCKED_GATE result","return":"unchanged cursor plus fixed route-owned output"} -->
61
+ <!-- workflow-artifact-adapter: {"module":"devrites-lib/reference/standards/workflow-artifacts.md","entry":"classifier returns owner-busy, exhausted, or existing hard gate","action":"escalate BLOCKED_EXHAUSTED; on WAIT_ACTIVE_OWNER run independent work and recheck; stop on exact BLOCKED_GATE result","return":"unchanged cursor plus fixed route-owned output"} -->
60
62
  ## Other stop classes
61
63
 
62
64
  - **Gate severity:** escalating always stops. Blocking with a ranked recommended
@@ -83,10 +85,15 @@ exhausted.
83
85
  pre-existing remaining value, explicit flag, sentinel cap, or post-vet pending count
84
86
  does not stop. Zero with no pending slices is normal completion.
85
87
  Malformed flag stops before any write.
88
+ - **Foreign writer:** a `live`/`expired` claim or `WAIT_ACTIVE_OWNER` held by
89
+ another session blocks only work on those paths; run independent work, re-check,
90
+ and stop only when nothing independent remains. `released`/`dead` claims are
91
+ reconciled per [§ Cancellation](../../devrites-lib/reference/parallel-dispatch.md#cancellation-and-terminal-reconciliation).
86
92
  - **Resource envelope:** overlapping run or missing AFK after arm still stops.
87
93
  Do not stop on `--max-slices`, `max_agents`, `max_minutes`, or `max_review_queue`.
88
94
  - **Confidence:** intent still cannot become testable acceptance after interview.
89
- - **Repeated failure:** the exact fingerprint's bounded recovery is exhausted.
95
+ - **Repeated failure:** not a stop. Escalate; a fully escalated fingerprint parks,
96
+ and the run stops only once no independent work remains.
90
97
  - **Resolver failure:** `devrites-engine state resolve` not found, or nonzero exit.
91
98
  Never hand-edit `questions.md`/`state.md` in its place. Not found stops at once;
92
99
  nonzero allows one identical re-run (the fingerprint is command + exit code +
@@ -101,7 +108,7 @@ disclose the exact plan, and stop for literal `GO` plus native approval. Without
101
108
  one, stop at Seal GO with `/rite-ship`. Seal GO, AFK, prior approval, and flags
102
109
  never satisfy Ship approval.
103
110
 
104
- A cold-resumable stop records `state.md` status, exact reason, and either one
105
- human-owned resume action or `none — technical recovery exhausted`; the owning
106
- question/drift/seal entry explains it. The user-facing line says what stopped
111
+ A cold-resumable stop records `state.md` status, exact reason, and one resume
112
+ action: the human-owned action, or `/rite-autocomplete` to reopen parked
113
+ fingerprints; the owning question/drift/seal entry explains it. The user-facing line says what stopped
107
114
  and, only when applicable, what human action resumes it.
@@ -75,15 +75,15 @@ Wright applies anti-slop; root verifies returns and never patches source. Refuse
75
75
 
76
76
  Omitted/`1` ≡ serial; `2`–`10` is a **cap** — the root runs the largest eligible
77
77
  path-disjoint set it can start now (`N_eff`), takes fewer when the cap cannot be
78
- filled, and recomputes after every completed round (serial slice or parallel
79
- integrate) until no pending slice remains
78
+ filled, and refills a slot per landing (serial slice or one sibling) until
79
+ no pending slice remains
80
80
  ([`parallel-batch.md` § Dynamic selection](reference/parallel-batch.md#dynamic-selection-and-re-batching)).
81
- Unattended runs (`/rite-autocomplete`, `.devrites/AFK` `max_parallel`) repeat batches
82
- inside the same run; HITL stops after each batch. This invocation's `--parallel N`
81
+ Unattended runs (`/rite-autocomplete`, `.devrites/AFK` `max_parallel`) refill
82
+ inside the same run; HITL stops after each landing. This invocation's `--parallel N`
83
83
  is the cap: leftover sentinel `max_parallel` is not consulted. Autocomplete with
84
84
  that flag also writes or replaces only `max_parallel: N`. Non-integer/`N≤0`/`N>10` hard refuse.
85
- All-green (independent review + proof) then integrate as one local `WIP(<slug>):`
86
- commit per sibling onto the current control branch (never pushed). Do not
85
+ Each sibling lands alone when its review + proof are green (`integrate --slice`):
86
+ one local `WIP(<slug>):` commit onto the control branch (never pushed). Do not
87
87
  integrate a sibling because the wright returned. A red/gap sibling gets a bounded repair
88
88
  round in its own worktree — never rebuilt from scratch while budget remains.
89
89
  Post-writer inventory and affected rechecks follow `phase-contract.md` § Independent
@@ -94,7 +94,7 @@ a human `Fix`. Exhausted repair blocks and preserves everything;
94
94
  `cleanup --force` salvages slice branches before removing worktrees —
95
95
  human-gated to abandon a batch, orchestrator-emitted only as the salvage
96
96
  step of an automatic frozen-lease re-batch.
97
- AFK charges after integrate only. Running lease blocks another
97
+ AFK charges per landed sibling only. Running lease blocks another
98
98
  `/rite-build`. Details: `parallel-batch.md`.
99
99
 
100
100
  ## Execute and reply
@@ -44,8 +44,8 @@ The controlling root owns the cap:
44
44
  before the next dispatch.
45
45
  - **Serial:** charge when fail-on-red is green and the built record is written
46
46
  (same rewrite as step 2).
47
- - **Parallel `--parallel`:** charge only after **successful serial integrate**
48
- — once per integrated green sibling. Abort / integrate-failed → charge **0**.
47
+ - **Parallel `--parallel`:** charge only after **successful integrate**
48
+ — once per landed green sibling. Abort / integrate-failed → charge **0**.
49
49
  Do not charge on worktree-green before integrate. See
50
50
  [`parallel-batch.md`](parallel-batch.md).
51
51
 
@@ -69,13 +69,16 @@ wrong contract or proof path — agent-owned recovery; never advance on broken s
69
69
  The fail-on-red path:
70
70
 
71
71
  1. Continue the same wright under `devrites-debug-recovery`, carrying exact output and dead
72
- ends; cap writer + recovery at three no-progress attempts per exact causal fingerprint.
72
+ ends; cap writer + recovery at three no-progress attempts per exact causal fingerprint
73
+ and strategy.
73
74
  A correction that closes the reproduction is progress; a different evidenced
74
75
  Critical/Important invariant starts a separate fingerprint.
75
76
  2. Green → record the slice. Product-contract/irreversible ambiguity → write the genuine
76
77
  human gate. Missing human-only credential/permission → write a human-intervention gate.
77
- 3. Any other exhausted objective failure → set `Status: blocked`, preserve the reproduction,
78
- set `Next step: none — technical recovery exhausted for <causal fingerprint>; requires new evidence or changed failure conditions`, and STOP without a qid or runnable phase command. Reinvocation with the unchanged fingerprint remains blocked and does not reset the cap.
78
+ 3. Any other spent strategy → escalate inline to the next correction class; after three
79
+ escalations park the fingerprint and build every slice that does not depend on it,
80
+ per the [retry contract](../../devrites-lib/reference/standards/afk-hitl.md#retry-cap-no-progress-loops-and-self-resolve).
81
+ Never ask a qid or permission to retry; never hand back a routine phase command.
79
82
  4. Fire `notify:` only for an actual `awaiting_human` transition.
80
83
 
81
84
  AFK never starts the next slice while checks are red and never asks the human to approve
@@ -18,7 +18,7 @@ the orchestrator pauses for approval before landing it.
18
18
  and fail-on-red proof are green, with no open Critical/Important and no repair
19
19
  wright still in flight. Serial: git recipe below (skip empty index) or isolated
20
20
  FF of a matching `transfer_commit`. Parallel: `devrites-engine parallel
21
- integrate --apply-to-control` (no second control `git commit`).
21
+ integrate --slice <id> --apply-to-control` (no second control `git commit`).
22
22
  - **Do not:** when a wright returns; before review/proof; with red/gap findings;
23
23
  fast-forward an isolated transfer onto control before those checks.
24
24
 
@@ -28,7 +28,7 @@ RECORD → orchestrator: after green verification, update state.md/evidence.m
28
28
  upsert the authoritative candidate manifest from the actual scoped diff
29
29
  (CHECKPOINT) → only now, with review+proof green: local WIP(<slug>): <imperative summary>
30
30
  on the control branch (no slice id) → checkpoint.md
31
- NEXT → HITL root reports and stops. AFK with parallel cap>1: return to parallel-batch selection and run the new N_eff; otherwise repeat under afk-discipline.md
31
+ NEXT → HITL root reports and stops. AFK with parallel cap>1: return to parallel-batch selection to refill; otherwise repeat under afk-discipline.md
32
32
  ```
33
33
 
34
34
  ## Why the boundary matters
@@ -36,14 +36,14 @@ Select **greedily in plan order**: pass every currently dependency-ready pending
36
36
  `N_eff = 1` → one serial round; nothing pending → Prove. A cap that cannot be filled
37
37
  is normal: take fewer. Serial is this round's size, not the rest of the run.
38
38
 
39
- **Re-batch automatically after every completed round** (parallel integrate+cleanup or
40
- a serial slice). Re-read `state.md`, pending slices, and the tree, then run
41
- `parallel select` again: finished work leaves the pending set, and satisfied
42
- dependencies unlock new slices. Under `.devrites/AFK` and `/rite-autocomplete` the
43
- repeat is the same run — HITL stops after each batch. `--parallel 5` with one eligible
44
- slice runs that one; when two to five then become eligible, the next round takes that
45
- many. **Failing case:** the run stays one-by-one after a serial round even though more
46
- slices are now eligible under the same cap.
39
+ **Refill per landing; never wait for the batch.** Each sibling lands alone when
40
+ green ([Lifecycle](#lifecycle) step 6). Then re-read `state.md`, pending slices, and
41
+ the tree and run `parallel select --cap N --slug <slug>`: unlanded siblings hold
42
+ their slots and paths, landed ones count as built, and only new picks print;
43
+ `parallel add` starts each from the control tip and its wright dispatches at once.
44
+ No lease → plain `select` + `create`. AFK/autocomplete is one run; HITL stops after
45
+ each landing. **Failing case:** three siblings are green, one is repairing, and no
46
+ new slice starts.
47
47
 
48
48
  ## Path-disjoint
49
49
 
@@ -109,22 +109,27 @@ Lease: `batch_id`, `created_at`, `base_sha`, `n`,
109
109
  headroom bounds the batch size — one batch never assumes unbounded reviewers.
110
110
  5. Non-green siblings → **repair round** (below) in the same worktrees; lease
111
111
  stays `running` — no abort while repair budget remains. A green sibling →
112
- `parallel record-green`. No partial integrate. All green → integrate.
112
+ `parallel record-green`, then step 6 for it alone.
113
113
  A recoverable RED blocks integration but does not cancel independent safe running siblings.
114
114
  Expected test-first RED is not a terminal gate failure. Cancel only for a shared
115
115
  invalid foundation, safety/access failure, resource boundary, or explicit stop;
116
116
  preserve completed and in-progress recoverable work and classify each result.
117
- 6. `parallel integrate --apply-to-control` **only after steps 4–5 are green**:
118
- each `transfer_commit` descends from `B` and diffs path-exact vs
119
- `B`; apply each in plan order as its own local `WIP(<slug>):` commit
120
- (imperative summary, never a slice id). Staging branch, then FF. Conflict →
121
- reset to `B`, `integrate-failed`; classify under repair rounds (siblings stay
122
- in place). Never integrate because a wright returned.
123
- 7. Success: FF control (the branch that held `HEAD` when the batch started —
124
- often `main`/`master`, otherwise whatever the user was on) to the integrate
125
- tip: N local commits, never pushed; union `touched-files.md`; update
126
- state/evidence; AFK +1 per integrated sibling; optional `check candidate`.
127
- 8. Cleanup runs only after `integrate` marks the lease `complete` — work
117
+ 6. `parallel integrate --slice <id> --apply-to-control` **only after its steps
118
+ 4–5 are green**: `transfer_commit` descends from the sibling's base and diffs
119
+ path-exact vs it; apply as its own local `WIP(<slug>):` commit
120
+ (imperative summary, never a slice id). Staging branch, then FF; the engine
121
+ refuses (never rewinds) if anything but this lease moved control. Conflict →
122
+ `integrate-failed`; classify under repair rounds (siblings stay in place).
123
+ Never integrate because a wright returned.
124
+ 7. Each landing: FF control (the branch that held `HEAD` when the batch started —
125
+ often `main`/`master`, otherwise whatever the user was on) by one local commit,
126
+ never pushed; union that sibling's paths into `touched-files.md`; update
127
+ state/evidence; AFK +1 for that sibling; optional `check candidate`. Then
128
+ refill ([Dynamic selection](#dynamic-selection-and-re-batching)) and start the
129
+ feature gates on control
130
+ ([Proof tiers](phase-contract.md#proof-tiers)); the next landing waits for them
131
+ to pass, the refilled wrights do not.
132
+ 8. Cleanup runs only after the last landing marks the lease `complete` — work
128
133
  landed in control, so `parallel cleanup` removes worktrees/branches.
129
134
  Blocked/human-stopped batches keep lease, worktrees, branches — nothing is
130
135
  removed while the batch may resume. `parallel abort` + `cleanup --force`
@@ -182,18 +187,20 @@ Repair rejected work in place; never discard/rebuild while budget remains.
182
187
  exhaustion. Use plan path only if inventory proves the approach unsound.
183
188
  - Stop under the canonical retry/authority/resource conditions, or when evidence
184
189
  proves the approach unsound and no in-scope corrected decomposition exists.
185
- - Exhaustion is not abort: record one technical blocker (`Status: blocked`;
186
- `Next step: none — technical recovery exhausted; requires new evidence or changed failure conditions`), preserve
187
- lease/worktrees/branches, STOP — same fingerprint stays blocked on
188
- reinvoke; new evidence resumes repair in place. Human-owned decisions use
189
- the drift-guard question and wait.
190
+ - A spent strategy is not abort: escalate per the canonical retry contract,
191
+ preserving lease/worktrees/branches; a fully escalated fingerprint parks and
192
+ the batch keeps its independent members. Repair resumes in place on
193
+ escalation or reinvocation. Human-owned decisions use the drift-guard
194
+ question and wait.
190
195
 
191
196
  ## Engine verbs
192
197
 
193
198
  ```text
194
- devrites-engine parallel select --cap <1-10> [--root <dir>] [<json-file>|-]
199
+ devrites-engine parallel select --cap <1-10> [--root <dir>] [--slug <slug>] [<json-file>|-]
195
200
  devrites-engine parallel create --root <repo> --slug <slug> --batch <id> --base <B> --json <file>|-
201
+ devrites-engine parallel add --root <repo> --slug <slug> --json <file>|-
196
202
  devrites-engine parallel record-green --root <repo> --slug <slug> --slice <id> --commit <sha>
203
+ devrites-engine parallel integrate --root <repo> --slug <slug> --slice <id> --apply-to-control
197
204
  devrites-engine parallel integrate --root <repo> --slug <slug> --apply-to-control
198
205
  devrites-engine parallel status --root <repo> --slug <slug>
199
206
  devrites-engine parallel lease-write|lease-read|lease-clear --root <repo> --slug <slug>
@@ -42,7 +42,8 @@ Spec Drift Guard still applies.
42
42
  6. **Prove.** Against the frozen pre-slice candidate inspect
43
43
  test hunks for deletion, skipping/focus, tautology, or weaker expectations.
44
44
  Wait for step 5's exact test-analyst account; missing/adverse criterion verdict is
45
- Critical. Run only `test-plan.md` repository/CI commands, record output, recheck
45
+ Critical. Run only `test-plan.md` repository/CI commands ([tier](#proof-tiers)),
46
+ record output, recheck
46
47
  `git diff --name-only`. Missing/weakened/red/source-mutating proof cannot pass.
47
48
  Pre-existing/environment-specific claims need a predating same-command,
48
49
  same-environment baseline; otherwise unresolved.
@@ -67,6 +68,14 @@ Spec Drift Guard still applies.
67
68
 
68
69
  One contract builds one slice: preserve TDD, exact paths and independent judgment.
69
70
 
71
+ ## Proof tiers
72
+
73
+ With a `test-plan.md` `## Feature gates` section, step 6 runs `Tests/proof` and every
74
+ other row; feature gates run once per parallel landing, on control, while worktree
75
+ wrights continue. The next landing and Prove wait for them; red is a fingerprint
76
+ against slices landed since the last green run. Serial same-worktree mode, and plans
77
+ without the section, run every row each round.
78
+
70
79
  ## Independent Build review
71
80
 
72
81
  After inspection, freeze full slice scope and cumulative baseline diff. Initial
@@ -82,5 +82,6 @@ The detecting phase owns backtracking and the batch sweep. Save
82
82
  `return_phase`/`return_next_action`; consume nested Plan/Vet `STOP` internally, complete
83
83
  vetted acceptance-preserving remediation, then restore the cursor and failed step.
84
84
  Never hand the human an intermediate command. The shared three-attempt causal-fingerprint
85
- cap still applies: exhaustion produces one technical blocker, while a genuinely
86
- human-owned decision uses the question format below.
85
+ cap still applies: a spent strategy escalates and a fully escalated fingerprint parks
86
+ under the [retry contract](../../devrites-lib/reference/standards/afk-hitl.md#retry-cap-no-progress-loops-and-self-resolve),
87
+ while a genuinely human-owned decision uses the question format below.
@@ -144,8 +144,8 @@ TTL is crash recovery, not normal cleanup.
144
144
  **Do not land on control until review and proof are both green.** Isolated
145
145
  `transfer_commit` stays on the worker branch; same-worktree diffs stay
146
146
  uncommitted. Serial: [`checkpoint.md`](checkpoint.md), then host may remove the
147
- worktree. Parallel: `record-green` only; land with `parallel integrate
148
- --apply-to-control` after the batch; `parallel cleanup` removes worktrees.
147
+ worktree. Parallel: `record-green`, then `parallel integrate
148
+ --slice <id> --apply-to-control`; `parallel cleanup` removes worktrees.
149
149
  5. Reconcile returned reuse, conventions, principles, sources, assumptions,
150
150
  decisions, dead ends, follow-ups, gates, and touched files. Persist the
151
151
  relevant facts in canonical artifacts, not the wholesale report. A plan-gap
@@ -161,7 +161,7 @@ Pull these via `Read` when shaping the plan:
161
161
  meaning-changing mappings block. Then run
162
162
  `devrites-engine check task-graph <slug>`; a malformed dependency graph blocks
163
163
  before Vet rather than spending a reviewer context on invalid tasks. Resolve each
164
- `ADVISORY size:` line now (split, or `Size rationale:`); it never blocks.
164
+ `ADVISORY size:`/`hub:` line now (split or seam slice, or a rationale); never blocking.
165
165
  7. **Readiness gate** (`plan-template.md`): require CLEAR coverage; complete acceptance,
166
166
  wiring, shared-contract proof, applicable outputs, and rollback; risk-first acyclic order;
167
167
  justified deviations; and every horizon item present, with blockers resolved, planning
@@ -74,7 +74,7 @@ themselves. The workspace is the canonical store; the handoff is the chat-only d
74
74
  6. **In-flight work.** Every dispatch wave opened or sealed without a return (`devrites-engine
75
75
  dispatch <slug> status`), running writer handle, held claim id plus paths (`devrites-engine
76
76
  claim list --all`), and consumptive action started, each `terminal: yes|unknown` (`yes` only with
77
- an admitted return, release, or proof of stop). The live handle exists only in chat. Any
77
+ an admitted return, release, `dead` claim, or proof of stop). The live handle exists only in chat. Any
78
78
  `unknown` row makes item 1 a reconcile step (`dispatch <slug> status`, `parallel status`,
79
79
  `claim list --all`), never a writer command: otherwise the next session dispatches a second writer.
80
80
  7. **How to resume:** fixed boilerplate (see template below).
@@ -177,7 +177,7 @@ Before classifying any Reslice, read `.pi/skills/devrites-lib/reference/standard
177
177
 
178
178
  When invoked inline by a controlling rite, return the completed Plan checkpoint
179
179
  to that caller so it can invoke Vet immediately. The phase boundary is not a
180
- user-facing stop unless a genuine HITL, safety/access, or exhausted-recovery
180
+ user-facing stop unless a genuine HITL, safety/access, or parked-recovery
181
181
  condition was recorded.
182
182
 
183
183
  When invoked directly with no controlling caller and a planning artifact
@@ -168,3 +168,8 @@ Order by dependency, but minimize coupling. A slice that needs three other slice
168
168
  is a smell: look for a thinner cut that stands alone. An edge exists only when this slice
169
169
  reads something the other produces: write it as `SLICE-001 (via <interface>)`. If you
170
170
  cannot name what crosses, drop the edge; a shallow, wide graph runs in parallel.
171
+
172
+ Slices sharing a file never build side by side: put a hub file's shared edit
173
+ (registry, command table, test harness) in one seam slice the others depend on.
174
+ `check task-graph` prints the `schedule:` and `ADVISORY hub:` lines; inseparable
175
+ writes get `Serial rationale: <why>`. Never merge slices or drop acceptance to widen it.
@@ -37,8 +37,10 @@ TTHW, and exact signal-bearing errors; never assert DX (trigger `devex`).
37
37
  validates it. Only the bounded wright fixes product source/tests.
38
38
  - **Prove remains the controlling caller** during technical backtracking. Save
39
39
  its cursor; run Plan repair, Recovery Vet, remediation, and re-proof inline;
40
- consume nested boundaries; resume the failed rung. Recovery exhausts after
41
- three no-progress attempts on the exact same fingerprint. Closing one or exposing a distinct
40
+ consume nested boundaries; resume the failed rung. A strategy is spent after
41
+ three no-progress attempts on the exact same fingerprint; escalate it per the
42
+ [retry contract](../devrites-lib/reference/standards/afk-hitl.md#retry-cap-no-progress-loops-and-self-resolve)
43
+ instead of stopping. Closing one or exposing a distinct
42
44
  Critical/Important invariant is progress, not a reason to hand work off.
43
45
  <!-- workflow-artifact-adapter: {"module":"devrites-lib/reference/standards/workflow-artifacts.md","entry":"Prove consumes installed Workflow Artifact or CLEANED rerun","action":"VERIFY_EXISTING or admitted proof path ending PROVE_AND_RETURN","return":"saved Prove cursor; stop before real action"} -->
44
46
  ## Released-workspace refresh
@@ -47,6 +47,7 @@ loop to `devrites-debug-recovery`.
47
47
  - Three no-progress attempts on the exact same causal fingerprint consume the
48
48
  shared recovery cap. A recheck that closes the reproduction is progress; a
49
49
  different evidenced Critical/Important invariant gets its own fingerprint.
50
- Preserve the reproduction and dead ends, then stop once as a technical blocker.
50
+ Preserve the reproduction and dead ends, then escalate or park per the
51
+ [retry contract](../../devrites-lib/reference/standards/afk-hitl.md#retry-cap-no-progress-loops-and-self-resolve).
51
52
  Ask only when the remaining decision is human-owned.
52
53
  - A failure you can't fix in scope is a recorded **blocker**, not a silent skip.
@@ -131,7 +131,7 @@ None.
131
131
  | slice_mode | none |
132
132
  | risk | none |
133
133
  | spec_gate | <passed <iso>; marker sweep: <n> files, <k> hits, <d> discarded — absent until /rite-spec passes> |
134
- | next_action | <single command + reason, or terminal: none — technical recovery exhausted for an unchanged causal fingerprint> |
134
+ | next_action | <single command + reason; parked recovery names the invoking command> |
135
135
  | return_phase | <originating later phase; clarification or agent-owned technical backtracking only> |
136
136
  | return_next_action | <saved originating command> |
137
137
  | schema | 4 |
@@ -154,7 +154,7 @@ Before an active caller moves backward, it copies its current phase and
154
154
  non-empty action into the two return rows. Nested Plan, Vet, Build, and proof
155
155
  work preserves that valid cursor. Once the prerequisite chain is green, the
156
156
  controlling caller restores the saved phase/action and removes both rows in one
157
- rewrite. A real HITL or exhausted-recovery stop retains the cursor for cold
157
+ rewrite. A real HITL or parked-recovery stop retains the cursor for cold
158
158
  resume. Never overwrite an existing valid return cursor, and preserve every
159
159
  unrelated Markdown byte. `/rite-clarify` applies its stricter native cursor protocol in `/rite-clarify`.
160
160
 
@@ -103,6 +103,14 @@ From /rite-vet on <iso>. Runner + conventions: <detected framework + command>.
103
103
  Link any disposable parser fixture. Preflight values are planning evidence, not post-build proof;
104
104
  Prove recaptures the observed command, candidate identity, and result.
105
105
 
106
+ ## Feature gates
107
+ | Gate | Command | Cwd | Expected |
108
+ |---|---|---|---|
109
+ | <full suite / workspace lint / audit> | <exact command> | <path> | <exit/output> |
110
+
111
+ Whole-repository rows only: Build runs them per landing
112
+ ([tiers](../../rite-build/reference/phase-contract.md#proof-tiers)), Prove on the final candidate.
113
+
106
114
  Commands in this durable artifact are portable repository commands: no RTK or local shell
107
115
  aliases, user-specific absolute paths, or temporary proof trees. Evidence records
108
116
  the command actually executed.
@@ -30,7 +30,7 @@ Before implementation review, check for work beyond the settled spec.
30
30
  (over-budget `tasks.md`/`plan.md` from slice or AC count) is a scope finding, not a
31
31
  `Budget override`: route to `/rite-plan course-correct` (`MVP cut`) with the
32
32
  continuation sequence named; do not vet the whole epic. An `ADVISORY size:`
33
- slice without `Size rationale:` is a non-blocking Suggestion to split it.
33
+ or `hub:` line without its rationale is a non-blocking Suggestion to split or seam it.
34
34
  4. **Built-in check.** For each new pattern/infra/concurrency approach, invoke
35
35
  `devrites-source-driven` inline to verify current framework/runtime support and cite it. Custom
36
36
  work where a built-in suffices is a scope-reduction finding.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devrites",
3
- "version": "6.1.0",
3
+ "version": "6.1.2",
4
4
  "description": "DevRites: a disciplined senior-engineer workflow pack for Claude Code, Codex, omp, pi, and Devin CLI",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "homepage": "https://github.com/ViktorsBaikers/DevRites#readme",