devrites 7.2.8 → 7.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (330) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +1 -1
  3. package/docs/candidate-integrity.md +10 -0
  4. package/docs/cli.md +7 -1
  5. package/docs/command-map.md +5 -2
  6. package/docs/engine/commands.md +28 -4
  7. package/docs/orchestration.md +26 -13
  8. package/docs/skills.md +5 -0
  9. package/engine/internal/acceptance/cli.go +27 -26
  10. package/engine/internal/acceptance/preconditions.go +1 -1
  11. package/engine/internal/acceptance/run.go +42 -16
  12. package/engine/internal/acceptance/transcript.go +236 -45
  13. package/engine/internal/devritespaths/paths.go +16 -3
  14. package/engine/internal/gate/gate.go +6 -0
  15. package/engine/internal/lib/candidate.go +20 -7
  16. package/engine/internal/lib/candidate_coverage.go +2 -19
  17. package/engine/internal/lib/closeout.go +16 -4
  18. package/engine/internal/lib/context.go +64 -45
  19. package/engine/internal/lib/context_io.go +171 -0
  20. package/engine/internal/lib/detect.go +8 -8
  21. package/engine/internal/lib/dispatch.go +2 -0
  22. package/engine/internal/lib/packet.go +37 -7
  23. package/engine/internal/lib/packet_freeze.go +60 -12
  24. package/engine/internal/lib/packet_integrity.go +179 -0
  25. package/engine/internal/lib/perturb.go +3 -3
  26. package/engine/internal/lib/slicecheck.go +7 -1
  27. package/engine/internal/lib/taskgraph.go +20 -36
  28. package/engine/internal/lib/triggers.go +28 -29
  29. package/engine/internal/lib/workspace_pool.go +330 -0
  30. package/engine/internal/parallel/cli.go +190 -49
  31. package/engine/internal/parallel/git.go +47 -14
  32. package/engine/internal/parallel/landing.go +232 -0
  33. package/engine/internal/parallel/lease.go +97 -18
  34. package/engine/internal/parallel/ops.go +312 -155
  35. package/engine/internal/parallel/pathdisjoint.go +48 -4
  36. package/engine/internal/parallel/prune.go +133 -0
  37. package/engine/internal/parallel/repository.go +239 -0
  38. package/engine/internal/parallel/select.go +64 -42
  39. package/engine/main.go +2 -1
  40. package/pack/.claude/agents/devrites-proof-runner.md +16 -9
  41. package/pack/.claude/skills/devrites-lib/SKILL.md +2 -0
  42. package/pack/.claude/skills/devrites-lib/reference/candidate-integrity.md +7 -3
  43. package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +3 -0
  44. package/pack/.claude/skills/devrites-lib/reference/parallel-workspaces.md +202 -0
  45. package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +9 -12
  46. package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +1 -1
  47. package/pack/.claude/skills/devrites-lib/reference/standards/context-hygiene.md +1 -1
  48. package/pack/.claude/skills/devrites-lib/reference/standards/gates.md +18 -9
  49. package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +10 -0
  50. package/pack/.claude/skills/rite-autocomplete/SKILL.md +13 -10
  51. package/pack/.claude/skills/rite-autocomplete/reference/lookahead.md +4 -4
  52. package/pack/.claude/skills/rite-autocomplete/reference/loop.md +13 -9
  53. package/pack/.claude/skills/rite-build/SKILL.md +13 -10
  54. package/pack/.claude/skills/rite-build/reference/afk-discipline.md +1 -1
  55. package/pack/.claude/skills/rite-build/reference/checkpoint.md +1 -1
  56. package/pack/.claude/skills/rite-build/reference/parallel-batch.md +57 -36
  57. package/pack/.claude/skills/rite-build/reference/phase-contract.md +8 -5
  58. package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +7 -7
  59. package/pack/.claude/skills/rite-clarify/SKILL.md +2 -2
  60. package/pack/.claude/skills/rite-converge/SKILL.md +4 -4
  61. package/pack/.claude/skills/rite-define/SKILL.md +7 -3
  62. package/pack/.claude/skills/rite-define/reference/plan-template.md +4 -2
  63. package/pack/.claude/skills/rite-plan/SKILL.md +11 -8
  64. package/pack/.claude/skills/rite-plan/reference/dependency-graph.md +9 -2
  65. package/pack/.claude/skills/rite-plan/reference/slicing.md +2 -0
  66. package/pack/.claude/skills/rite-polish/SKILL.md +3 -3
  67. package/pack/.claude/skills/rite-prove/SKILL.md +9 -5
  68. package/pack/.claude/skills/rite-resolve/SKILL.md +3 -3
  69. package/pack/.claude/skills/rite-resolve/reference/answer-protocol.md +2 -0
  70. package/pack/.claude/skills/rite-review/SKILL.md +4 -3
  71. package/pack/.claude/skills/rite-review/reference/feature-scoped-review.md +2 -2
  72. package/pack/.claude/skills/rite-seal/SKILL.md +1 -1
  73. package/pack/.claude/skills/rite-seal/reference/phase-contract.md +1 -1
  74. package/pack/.claude/skills/rite-ship/SKILL.md +2 -2
  75. package/pack/.claude/skills/rite-ship/reference/git-ship.md +2 -2
  76. package/pack/.claude/skills/rite-spec/SKILL.md +8 -5
  77. package/pack/.claude/skills/rite-spec/reference/state-workspace.md +5 -0
  78. package/pack/.claude/skills/rite-temper/SKILL.md +3 -3
  79. package/pack/.claude/skills/rite-vet/SKILL.md +9 -5
  80. package/pack/.claude/skills/rite-vet/reference/review-axes.md +12 -5
  81. package/pack/generated/claude/agents/devrites-proof-runner.md +16 -9
  82. package/pack/generated/claude/skills/devrites-lib/SKILL.md +2 -0
  83. package/pack/generated/claude/skills/devrites-lib/reference/candidate-integrity.md +7 -3
  84. package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +3 -0
  85. package/pack/generated/claude/skills/devrites-lib/reference/parallel-workspaces.md +202 -0
  86. package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +9 -12
  87. package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +1 -1
  88. package/pack/generated/claude/skills/devrites-lib/reference/standards/context-hygiene.md +1 -1
  89. package/pack/generated/claude/skills/devrites-lib/reference/standards/gates.md +18 -9
  90. package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +10 -0
  91. package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +13 -10
  92. package/pack/generated/claude/skills/rite-autocomplete/reference/lookahead.md +4 -4
  93. package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +13 -9
  94. package/pack/generated/claude/skills/rite-build/SKILL.md +13 -10
  95. package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +1 -1
  96. package/pack/generated/claude/skills/rite-build/reference/checkpoint.md +1 -1
  97. package/pack/generated/claude/skills/rite-build/reference/parallel-batch.md +57 -36
  98. package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +8 -5
  99. package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +7 -7
  100. package/pack/generated/claude/skills/rite-clarify/SKILL.md +2 -2
  101. package/pack/generated/claude/skills/rite-converge/SKILL.md +4 -4
  102. package/pack/generated/claude/skills/rite-define/SKILL.md +7 -3
  103. package/pack/generated/claude/skills/rite-define/reference/plan-template.md +4 -2
  104. package/pack/generated/claude/skills/rite-plan/SKILL.md +11 -8
  105. package/pack/generated/claude/skills/rite-plan/reference/dependency-graph.md +9 -2
  106. package/pack/generated/claude/skills/rite-plan/reference/slicing.md +2 -0
  107. package/pack/generated/claude/skills/rite-polish/SKILL.md +3 -3
  108. package/pack/generated/claude/skills/rite-prove/SKILL.md +9 -5
  109. package/pack/generated/claude/skills/rite-resolve/SKILL.md +3 -3
  110. package/pack/generated/claude/skills/rite-resolve/reference/answer-protocol.md +2 -0
  111. package/pack/generated/claude/skills/rite-review/SKILL.md +4 -3
  112. package/pack/generated/claude/skills/rite-review/reference/feature-scoped-review.md +2 -2
  113. package/pack/generated/claude/skills/rite-seal/SKILL.md +1 -1
  114. package/pack/generated/claude/skills/rite-seal/reference/phase-contract.md +1 -1
  115. package/pack/generated/claude/skills/rite-ship/SKILL.md +2 -2
  116. package/pack/generated/claude/skills/rite-ship/reference/git-ship.md +2 -2
  117. package/pack/generated/claude/skills/rite-spec/SKILL.md +8 -5
  118. package/pack/generated/claude/skills/rite-spec/reference/state-workspace.md +5 -0
  119. package/pack/generated/claude/skills/rite-temper/SKILL.md +3 -3
  120. package/pack/generated/claude/skills/rite-vet/SKILL.md +9 -5
  121. package/pack/generated/claude/skills/rite-vet/reference/review-axes.md +12 -5
  122. package/pack/generated/codex/agents/devrites-proof-runner.toml +16 -9
  123. package/pack/generated/codex/skills/devrites-lib/SKILL.md +2 -0
  124. package/pack/generated/codex/skills/devrites-lib/reference/candidate-integrity.md +7 -3
  125. package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +3 -0
  126. package/pack/generated/codex/skills/devrites-lib/reference/parallel-workspaces.md +202 -0
  127. package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +9 -12
  128. package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +1 -1
  129. package/pack/generated/codex/skills/devrites-lib/reference/standards/context-hygiene.md +1 -1
  130. package/pack/generated/codex/skills/devrites-lib/reference/standards/gates.md +18 -9
  131. package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +10 -0
  132. package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +13 -10
  133. package/pack/generated/codex/skills/rite-autocomplete/reference/lookahead.md +4 -4
  134. package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +13 -9
  135. package/pack/generated/codex/skills/rite-build/SKILL.md +13 -10
  136. package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +1 -1
  137. package/pack/generated/codex/skills/rite-build/reference/checkpoint.md +1 -1
  138. package/pack/generated/codex/skills/rite-build/reference/parallel-batch.md +57 -36
  139. package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +8 -5
  140. package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +7 -7
  141. package/pack/generated/codex/skills/rite-clarify/SKILL.md +2 -2
  142. package/pack/generated/codex/skills/rite-converge/SKILL.md +4 -4
  143. package/pack/generated/codex/skills/rite-define/SKILL.md +7 -3
  144. package/pack/generated/codex/skills/rite-define/reference/plan-template.md +4 -2
  145. package/pack/generated/codex/skills/rite-plan/SKILL.md +11 -8
  146. package/pack/generated/codex/skills/rite-plan/reference/dependency-graph.md +9 -2
  147. package/pack/generated/codex/skills/rite-plan/reference/slicing.md +2 -0
  148. package/pack/generated/codex/skills/rite-polish/SKILL.md +3 -3
  149. package/pack/generated/codex/skills/rite-prove/SKILL.md +9 -5
  150. package/pack/generated/codex/skills/rite-resolve/SKILL.md +3 -3
  151. package/pack/generated/codex/skills/rite-resolve/reference/answer-protocol.md +2 -0
  152. package/pack/generated/codex/skills/rite-review/SKILL.md +4 -3
  153. package/pack/generated/codex/skills/rite-review/reference/feature-scoped-review.md +2 -2
  154. package/pack/generated/codex/skills/rite-seal/SKILL.md +1 -1
  155. package/pack/generated/codex/skills/rite-seal/reference/phase-contract.md +1 -1
  156. package/pack/generated/codex/skills/rite-ship/SKILL.md +2 -2
  157. package/pack/generated/codex/skills/rite-ship/reference/git-ship.md +2 -2
  158. package/pack/generated/codex/skills/rite-spec/SKILL.md +8 -5
  159. package/pack/generated/codex/skills/rite-spec/reference/state-workspace.md +5 -0
  160. package/pack/generated/codex/skills/rite-temper/SKILL.md +3 -3
  161. package/pack/generated/codex/skills/rite-vet/SKILL.md +9 -5
  162. package/pack/generated/codex/skills/rite-vet/reference/review-axes.md +12 -5
  163. package/pack/generated/devin/agents/devrites-proof-runner.md +16 -9
  164. package/pack/generated/devin/skills/devrites-lib/SKILL.md +2 -0
  165. package/pack/generated/devin/skills/devrites-lib/reference/candidate-integrity.md +7 -3
  166. package/pack/generated/devin/skills/devrites-lib/reference/parallel-dispatch.md +3 -0
  167. package/pack/generated/devin/skills/devrites-lib/reference/parallel-workspaces.md +202 -0
  168. package/pack/generated/devin/skills/devrites-lib/reference/standards/afk-hitl.md +9 -12
  169. package/pack/generated/devin/skills/devrites-lib/reference/standards/agents.md +1 -1
  170. package/pack/generated/devin/skills/devrites-lib/reference/standards/context-hygiene.md +1 -1
  171. package/pack/generated/devin/skills/devrites-lib/reference/standards/gates.md +18 -9
  172. package/pack/generated/devin/skills/devrites-lib/reference/workspace-artifact-schema.md +10 -0
  173. package/pack/generated/devin/skills/rite-autocomplete/SKILL.md +13 -10
  174. package/pack/generated/devin/skills/rite-autocomplete/reference/lookahead.md +4 -4
  175. package/pack/generated/devin/skills/rite-autocomplete/reference/loop.md +13 -9
  176. package/pack/generated/devin/skills/rite-build/SKILL.md +13 -10
  177. package/pack/generated/devin/skills/rite-build/reference/afk-discipline.md +1 -1
  178. package/pack/generated/devin/skills/rite-build/reference/checkpoint.md +1 -1
  179. package/pack/generated/devin/skills/rite-build/reference/parallel-batch.md +57 -36
  180. package/pack/generated/devin/skills/rite-build/reference/phase-contract.md +8 -5
  181. package/pack/generated/devin/skills/rite-build/reference/wright-dispatch.md +7 -7
  182. package/pack/generated/devin/skills/rite-clarify/SKILL.md +2 -2
  183. package/pack/generated/devin/skills/rite-converge/SKILL.md +4 -4
  184. package/pack/generated/devin/skills/rite-define/SKILL.md +7 -3
  185. package/pack/generated/devin/skills/rite-define/reference/plan-template.md +4 -2
  186. package/pack/generated/devin/skills/rite-plan/SKILL.md +11 -8
  187. package/pack/generated/devin/skills/rite-plan/reference/dependency-graph.md +9 -2
  188. package/pack/generated/devin/skills/rite-plan/reference/slicing.md +2 -0
  189. package/pack/generated/devin/skills/rite-polish/SKILL.md +3 -3
  190. package/pack/generated/devin/skills/rite-prove/SKILL.md +9 -5
  191. package/pack/generated/devin/skills/rite-resolve/SKILL.md +3 -3
  192. package/pack/generated/devin/skills/rite-resolve/reference/answer-protocol.md +2 -0
  193. package/pack/generated/devin/skills/rite-review/SKILL.md +4 -3
  194. package/pack/generated/devin/skills/rite-review/reference/feature-scoped-review.md +2 -2
  195. package/pack/generated/devin/skills/rite-seal/SKILL.md +1 -1
  196. package/pack/generated/devin/skills/rite-seal/reference/phase-contract.md +1 -1
  197. package/pack/generated/devin/skills/rite-ship/SKILL.md +2 -2
  198. package/pack/generated/devin/skills/rite-ship/reference/git-ship.md +2 -2
  199. package/pack/generated/devin/skills/rite-spec/SKILL.md +8 -5
  200. package/pack/generated/devin/skills/rite-spec/reference/state-workspace.md +5 -0
  201. package/pack/generated/devin/skills/rite-temper/SKILL.md +3 -3
  202. package/pack/generated/devin/skills/rite-vet/SKILL.md +9 -5
  203. package/pack/generated/devin/skills/rite-vet/reference/review-axes.md +12 -5
  204. package/pack/generated/dsh/agents/devrites-proof-runner.md +16 -9
  205. package/pack/generated/dsh/runtime/cordis.patch.yml +1 -1
  206. package/pack/generated/dsh/skills/devrites-lib/SKILL.md +2 -0
  207. package/pack/generated/dsh/skills/devrites-lib/reference/candidate-integrity.md +7 -3
  208. package/pack/generated/dsh/skills/devrites-lib/reference/parallel-dispatch.md +3 -0
  209. package/pack/generated/dsh/skills/devrites-lib/reference/parallel-workspaces.md +202 -0
  210. package/pack/generated/dsh/skills/devrites-lib/reference/standards/afk-hitl.md +9 -12
  211. package/pack/generated/dsh/skills/devrites-lib/reference/standards/agents.md +1 -1
  212. package/pack/generated/dsh/skills/devrites-lib/reference/standards/context-hygiene.md +1 -1
  213. package/pack/generated/dsh/skills/devrites-lib/reference/standards/gates.md +18 -9
  214. package/pack/generated/dsh/skills/devrites-lib/reference/workspace-artifact-schema.md +10 -0
  215. package/pack/generated/dsh/skills/rite-autocomplete/SKILL.md +13 -10
  216. package/pack/generated/dsh/skills/rite-autocomplete/reference/lookahead.md +4 -4
  217. package/pack/generated/dsh/skills/rite-autocomplete/reference/loop.md +13 -9
  218. package/pack/generated/dsh/skills/rite-build/SKILL.md +13 -10
  219. package/pack/generated/dsh/skills/rite-build/reference/afk-discipline.md +1 -1
  220. package/pack/generated/dsh/skills/rite-build/reference/checkpoint.md +1 -1
  221. package/pack/generated/dsh/skills/rite-build/reference/parallel-batch.md +57 -36
  222. package/pack/generated/dsh/skills/rite-build/reference/phase-contract.md +8 -5
  223. package/pack/generated/dsh/skills/rite-build/reference/wright-dispatch.md +7 -7
  224. package/pack/generated/dsh/skills/rite-clarify/SKILL.md +2 -2
  225. package/pack/generated/dsh/skills/rite-converge/SKILL.md +4 -4
  226. package/pack/generated/dsh/skills/rite-define/SKILL.md +7 -3
  227. package/pack/generated/dsh/skills/rite-define/reference/plan-template.md +4 -2
  228. package/pack/generated/dsh/skills/rite-plan/SKILL.md +11 -8
  229. package/pack/generated/dsh/skills/rite-plan/reference/dependency-graph.md +9 -2
  230. package/pack/generated/dsh/skills/rite-plan/reference/slicing.md +2 -0
  231. package/pack/generated/dsh/skills/rite-polish/SKILL.md +3 -3
  232. package/pack/generated/dsh/skills/rite-prove/SKILL.md +9 -5
  233. package/pack/generated/dsh/skills/rite-resolve/SKILL.md +3 -3
  234. package/pack/generated/dsh/skills/rite-resolve/reference/answer-protocol.md +2 -0
  235. package/pack/generated/dsh/skills/rite-review/SKILL.md +4 -3
  236. package/pack/generated/dsh/skills/rite-review/reference/feature-scoped-review.md +2 -2
  237. package/pack/generated/dsh/skills/rite-seal/SKILL.md +1 -1
  238. package/pack/generated/dsh/skills/rite-seal/reference/phase-contract.md +1 -1
  239. package/pack/generated/dsh/skills/rite-ship/SKILL.md +2 -2
  240. package/pack/generated/dsh/skills/rite-ship/reference/git-ship.md +2 -2
  241. package/pack/generated/dsh/skills/rite-spec/SKILL.md +8 -5
  242. package/pack/generated/dsh/skills/rite-spec/reference/state-workspace.md +5 -0
  243. package/pack/generated/dsh/skills/rite-temper/SKILL.md +3 -3
  244. package/pack/generated/dsh/skills/rite-vet/SKILL.md +9 -5
  245. package/pack/generated/dsh/skills/rite-vet/reference/review-axes.md +12 -5
  246. package/pack/generated/omp/agents/devrites-proof-runner.md +16 -9
  247. package/pack/generated/omp/commands/rite-build.md +1 -1
  248. package/pack/generated/omp/skills/devrites-lib/SKILL.md +2 -0
  249. package/pack/generated/omp/skills/devrites-lib/reference/candidate-integrity.md +7 -3
  250. package/pack/generated/omp/skills/devrites-lib/reference/parallel-dispatch.md +3 -0
  251. package/pack/generated/omp/skills/devrites-lib/reference/parallel-workspaces.md +202 -0
  252. package/pack/generated/omp/skills/devrites-lib/reference/standards/afk-hitl.md +9 -12
  253. package/pack/generated/omp/skills/devrites-lib/reference/standards/agents.md +1 -1
  254. package/pack/generated/omp/skills/devrites-lib/reference/standards/context-hygiene.md +1 -1
  255. package/pack/generated/omp/skills/devrites-lib/reference/standards/gates.md +18 -9
  256. package/pack/generated/omp/skills/devrites-lib/reference/workspace-artifact-schema.md +10 -0
  257. package/pack/generated/omp/skills/rite-autocomplete/SKILL.md +13 -10
  258. package/pack/generated/omp/skills/rite-autocomplete/reference/lookahead.md +4 -4
  259. package/pack/generated/omp/skills/rite-autocomplete/reference/loop.md +13 -9
  260. package/pack/generated/omp/skills/rite-build/SKILL.md +13 -10
  261. package/pack/generated/omp/skills/rite-build/reference/afk-discipline.md +1 -1
  262. package/pack/generated/omp/skills/rite-build/reference/checkpoint.md +1 -1
  263. package/pack/generated/omp/skills/rite-build/reference/parallel-batch.md +57 -36
  264. package/pack/generated/omp/skills/rite-build/reference/phase-contract.md +8 -5
  265. package/pack/generated/omp/skills/rite-build/reference/wright-dispatch.md +7 -7
  266. package/pack/generated/omp/skills/rite-clarify/SKILL.md +2 -2
  267. package/pack/generated/omp/skills/rite-converge/SKILL.md +4 -4
  268. package/pack/generated/omp/skills/rite-define/SKILL.md +7 -3
  269. package/pack/generated/omp/skills/rite-define/reference/plan-template.md +4 -2
  270. package/pack/generated/omp/skills/rite-plan/SKILL.md +11 -8
  271. package/pack/generated/omp/skills/rite-plan/reference/dependency-graph.md +9 -2
  272. package/pack/generated/omp/skills/rite-plan/reference/slicing.md +2 -0
  273. package/pack/generated/omp/skills/rite-polish/SKILL.md +3 -3
  274. package/pack/generated/omp/skills/rite-prove/SKILL.md +9 -5
  275. package/pack/generated/omp/skills/rite-resolve/SKILL.md +3 -3
  276. package/pack/generated/omp/skills/rite-resolve/reference/answer-protocol.md +2 -0
  277. package/pack/generated/omp/skills/rite-review/SKILL.md +4 -3
  278. package/pack/generated/omp/skills/rite-review/reference/feature-scoped-review.md +2 -2
  279. package/pack/generated/omp/skills/rite-seal/SKILL.md +1 -1
  280. package/pack/generated/omp/skills/rite-seal/reference/phase-contract.md +1 -1
  281. package/pack/generated/omp/skills/rite-ship/SKILL.md +2 -2
  282. package/pack/generated/omp/skills/rite-ship/reference/git-ship.md +2 -2
  283. package/pack/generated/omp/skills/rite-spec/SKILL.md +8 -5
  284. package/pack/generated/omp/skills/rite-spec/reference/state-workspace.md +5 -0
  285. package/pack/generated/omp/skills/rite-temper/SKILL.md +3 -3
  286. package/pack/generated/omp/skills/rite-vet/SKILL.md +9 -5
  287. package/pack/generated/omp/skills/rite-vet/reference/review-axes.md +12 -5
  288. package/pack/generated/pi/agents/devrites-proof-runner.md +16 -9
  289. package/pack/generated/pi/prompts/rite-build.md +1 -1
  290. package/pack/generated/pi/skills/devrites-lib/SKILL.md +2 -0
  291. package/pack/generated/pi/skills/devrites-lib/reference/candidate-integrity.md +7 -3
  292. package/pack/generated/pi/skills/devrites-lib/reference/parallel-dispatch.md +3 -0
  293. package/pack/generated/pi/skills/devrites-lib/reference/parallel-workspaces.md +202 -0
  294. package/pack/generated/pi/skills/devrites-lib/reference/standards/afk-hitl.md +9 -12
  295. package/pack/generated/pi/skills/devrites-lib/reference/standards/agents.md +1 -1
  296. package/pack/generated/pi/skills/devrites-lib/reference/standards/context-hygiene.md +1 -1
  297. package/pack/generated/pi/skills/devrites-lib/reference/standards/gates.md +18 -9
  298. package/pack/generated/pi/skills/devrites-lib/reference/workspace-artifact-schema.md +10 -0
  299. package/pack/generated/pi/skills/rite-autocomplete/SKILL.md +13 -10
  300. package/pack/generated/pi/skills/rite-autocomplete/reference/lookahead.md +4 -4
  301. package/pack/generated/pi/skills/rite-autocomplete/reference/loop.md +13 -9
  302. package/pack/generated/pi/skills/rite-build/SKILL.md +13 -10
  303. package/pack/generated/pi/skills/rite-build/reference/afk-discipline.md +1 -1
  304. package/pack/generated/pi/skills/rite-build/reference/checkpoint.md +1 -1
  305. package/pack/generated/pi/skills/rite-build/reference/parallel-batch.md +57 -36
  306. package/pack/generated/pi/skills/rite-build/reference/phase-contract.md +8 -5
  307. package/pack/generated/pi/skills/rite-build/reference/wright-dispatch.md +7 -7
  308. package/pack/generated/pi/skills/rite-clarify/SKILL.md +2 -2
  309. package/pack/generated/pi/skills/rite-converge/SKILL.md +4 -4
  310. package/pack/generated/pi/skills/rite-define/SKILL.md +7 -3
  311. package/pack/generated/pi/skills/rite-define/reference/plan-template.md +4 -2
  312. package/pack/generated/pi/skills/rite-plan/SKILL.md +11 -8
  313. package/pack/generated/pi/skills/rite-plan/reference/dependency-graph.md +9 -2
  314. package/pack/generated/pi/skills/rite-plan/reference/slicing.md +2 -0
  315. package/pack/generated/pi/skills/rite-polish/SKILL.md +3 -3
  316. package/pack/generated/pi/skills/rite-prove/SKILL.md +9 -5
  317. package/pack/generated/pi/skills/rite-resolve/SKILL.md +3 -3
  318. package/pack/generated/pi/skills/rite-resolve/reference/answer-protocol.md +2 -0
  319. package/pack/generated/pi/skills/rite-review/SKILL.md +4 -3
  320. package/pack/generated/pi/skills/rite-review/reference/feature-scoped-review.md +2 -2
  321. package/pack/generated/pi/skills/rite-seal/SKILL.md +1 -1
  322. package/pack/generated/pi/skills/rite-seal/reference/phase-contract.md +1 -1
  323. package/pack/generated/pi/skills/rite-ship/SKILL.md +2 -2
  324. package/pack/generated/pi/skills/rite-ship/reference/git-ship.md +2 -2
  325. package/pack/generated/pi/skills/rite-spec/SKILL.md +8 -5
  326. package/pack/generated/pi/skills/rite-spec/reference/state-workspace.md +5 -0
  327. package/pack/generated/pi/skills/rite-temper/SKILL.md +3 -3
  328. package/pack/generated/pi/skills/rite-vet/SKILL.md +9 -5
  329. package/pack/generated/pi/skills/rite-vet/reference/review-axes.md +12 -5
  330. package/package.json +1 -1
@@ -118,18 +118,15 @@ candidate manifest to cover the whole recorded chain — run
118
118
  `/rite-autocomplete` recovers agent-owned Seal `NO-GO` per
119
119
  [stop-conditions.md](../../../rite-autocomplete/reference/stop-conditions.md), not a handoff.
120
120
 
121
- `max_parallel` is the unattended default batch cap only when this invocation does
122
- not contain `--parallel N`; `1` forces the serial cycle only in that default
123
- case. An exact `--parallel N` on `/rite-autocomplete` or `/rite-build` is the
124
- batch cap for this run: do not consult leftover sentinel `max_parallel`, and do
125
- not treat `max_parallel: 1` as serial. `/rite-autocomplete --parallel N` writes
126
- or replaces only that field so later ticks keep the cap; `/rite-build --parallel N`
127
- wins for that invocation without rewriting the sentinel. Never write `max_slices`
128
- from `--max-slices`. **Failing case:** `/rite-autocomplete --parallel 5` honors a
129
- leftover `max_parallel: 1` and stays serial.
130
- Unattended runs take the largest eligible set ≤ that cap and recompute after
131
- every completed round (serial slice or parallel integrate)
132
- ([parallel-batch.md § Dynamic selection and re-batching](../../../rite-build/reference/parallel-batch.md#dynamic-selection-and-re-batching)).
121
+ `max_parallel` is the unattended default writer cap when this invocation omits
122
+ `--parallel N`; explicit N wins and Autocomplete writes/replaces only that field.
123
+ Build's explicit flag wins without rewriting the sentinel. Never write
124
+ `max_slices` from `--max-slices`. Autocomplete uses one cap across all authorized
125
+ sources, including explicit 1, under the shared root-only
126
+ [`workspace controller`](../parallel-workspaces.md); standalone Build stays local.
127
+ Unattended runs recompute after each landing and planning/review return, not only
128
+ after a batch completes. **Failing case:** `/rite-autocomplete --parallel 5`
129
+ honors leftover `max_parallel: 1`, or grants five writers per workspace.
133
130
 
134
131
  ## Unattended resource envelope
135
132
 
@@ -72,7 +72,7 @@ Only that bounded writer may edit its exact project-relative source/test paths;
72
72
  workspace writes, scope widening, or second writer. Root remains source/test nonwriter.
73
73
  This exception grants no additional tools, permissions, phase, agent-launch, or Git authority.
74
74
 
75
- 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.
75
+ Isolated-worktree pilot follows [`wright-dispatch.md`](../../../rite-build/reference/wright-dispatch.md#isolated-writer-worktree-pilot); sanctioned parallel work follows [`parallel-batch.md`](../../../rite-build/reference/parallel-batch.md) and Autocomplete's shared [`workspace controller`](../parallel-workspaces.md), never same-tree co-writers or 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.
76
76
 
77
77
  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.
78
78
 
@@ -47,7 +47,7 @@ Required review rosters and final proof remain. Preserve protected history uncha
47
47
  a compact current view references originals without omitting active requirements.
48
48
 
49
49
  **Compaction fallback:** after compaction or a resumed session, always run
50
- `devrites-engine handoff [slug] --resume` first (slug from `.devrites/ACTIVE`) — one
50
+ `devrites-engine handoff <source> --resume` first for the selected source per [phase target binding](../parallel-workspaces.md#phase-target-binding) — one
51
51
  deterministic resume record reduced from durable artifacts (cursor, `awaiting_human`,
52
52
  open `questions.md` gates, the `gates.md` reduction with unmet/stale ids,
53
53
  `decisions.md` dead ends, in-flight dispatch waves, and the read-next order over
@@ -65,11 +65,18 @@ their optional `Run at` cell, writing the same transcripts.
65
65
  Execution contract: the command runs through the platform shell in the named
66
66
  directory with a bounded timeout; pass requires exit 0 **and** output matching
67
67
  EXPECT. Without `--transcripts`, output is captured but never persisted, only its
68
- digest. `--transcripts` writes one file per executed or reused gate under
69
- `references/gates/<gate-id>/`. Each file holds the command, cwd, attempt, times,
70
- exit, EXPECT verdict, the candidate digest read before and after the run, and the
71
- output with known credential shapes masked and capped at 1 MiB. Its
72
- `OUTPUT_SHA256` equals the ledger evidence digest.
68
+ digest. `--transcripts` atomically writes a private v2 executed record under
69
+ `references/gates/<gate-id>/`, or returns a verified original record for reuse
70
+ without rewriting its historical candidate labels. Metadata and output mask
71
+ known credential shapes; output is capped at 1 MiB. `DEFINITION_SHA256` binds the
72
+ oracle, `OUTPUT_SHA256`/`OUTPUT_BYTES` describe original output, and the final
73
+ `TRANSCRIPT_SHA256` hashes all preceding record bytes for drift detection.
74
+ Do not rehash redacted/truncated output as though it were original output.
75
+ Reuse requires a complete passing executed origin matching current definition,
76
+ output identity and declared inputs, plus current command approval. Missing,
77
+ corrupt, legacy v1 or reuse-only records rerun only affected approved checks;
78
+ missing approval blocks even when an old checkbox remains met. A record checksum
79
+ detects drift; it is not a signature or proof of honest execution.
73
80
 
74
81
  After Vet READY the runnable set is fixed: converting a runnable gate to manual,
75
82
  loosening EXPECT, changing CHECK or CWD, adding or narrowing INPUTS, or removing
@@ -115,10 +122,12 @@ devrites-engine gates attest <slug> <id> <note> record human evidence on a man
115
122
  devrites-engine gates abandon <slug> <id> <why> record a terminal ABANDON handoff
116
123
  ```
117
124
 
118
- Run/reverify hold the feature lock, re-read the ledger before writeback, and
119
- discard a result whose gate definition moved mid-run. Reverify is the
120
- suspicion-killer: when any doubt exists about prior passes, rerun it rather
121
- than trusting recorded evidence.
125
+ Run/reverify serialize execution, origin lookup and transcript publication under
126
+ the gates lock; the feature lock is held only for input acquisition and ledger
127
+ writeback. Results whose gate definition moved are discarded. Unchanged declared
128
+ inputs may reuse proof even under reverify; a reused result is never execution.
129
+ If non-file prerequisites changed or proof is doubtful, invalidate affected
130
+ automatic evidence through the single-writer protocol before approved rerun.
122
131
 
123
132
  ## Oracle quality (`gates lint`)
124
133
 
@@ -223,6 +223,7 @@ SLA: <15m | 4h | 24h | none>
223
223
  Checkpoint: <question + why it needs unavailable pre-code evidence or action-time approval | none>
224
224
  Dependencies: <SLICE-### (via <interface it consumes>) list | none>
225
225
  depends_on: [<SLICE-### IDs>]
226
+ Workspace dependencies: <none | comma-separated <workspace-slug>/SLICE-### producer refs>
226
227
  Consumes / Produces: <interfaces read and exposed>
227
228
  Known-Gotchas: <ordering hazards and framework footguns | none>
228
229
  Prior-slice learnings: <constraints learned earlier | none>
@@ -245,6 +246,15 @@ Done condition: <checkable, exhaustive completion criterion>
245
246
 
246
247
  `depends_on` is the machine-readable mirror of `Dependencies`; keep the sets
247
248
  identical and cycle-free. Each dependency names what crosses it (`check task-graph` advises).
249
+ `Workspace dependencies` records cross-workspace producer prerequisites, separate
250
+ from local `Dependencies`/`depends_on`. Define/Plan writes it after native interface,
251
+ assumption, runtime-resource and proof-independence review; Vet approves the current
252
+ bound declaration. `none` is explicit, not inferred from paths or local edges.
253
+ Only durably BUILT/integrated producer checkpoints satisfy refs, including valid
254
+ archived predecessors; unknown/malformed refs or cycles withhold unsafe work.
255
+ Missing field on a legacy future plan requires narrow Plan/Vet repair before
256
+ early admission, not rejection of existing local/standalone execution. The global
257
+ controller procedure lives only in [`parallel-workspaces.md`](parallel-workspaces.md).
248
258
  Define and `/rite-plan` repair write `Prior-slice learnings`, folding Build's
249
259
  `decisions.md` carry-forward constraints; Build never edits `tasks.md`. `Gate`, `SLA`, and `Checkpoint` are required for HITL
250
260
  slices; use `none` when they do not apply. Complexity above 3 triggers reslicing
@@ -5,7 +5,7 @@ argument-hint: "[idea] [--ship|--yolo] [--max-slices N] [--parallel N] [--full]
5
5
  user-invocable: true
6
6
  ---
7
7
 
8
- <!-- loads: {"always":["devrites-lib/reference/standards/core.md","devrites-lib/reference/standards/afk-hitl.md","devrites-lib/reference/standards/one-shot-actions.md","devrites-lib/reference/orchestration-profiles.md","devrites-lib/reference/standards/acceptance-preserving-reslice.md","rite-autocomplete/reference/decision-policy.md","rite-autocomplete/reference/loop.md","rite-autocomplete/reference/stop-conditions.md"],"triggers":{"workflow-artifacts":["devrites-lib/reference/standards/workflow-artifacts.md"],"lookahead":["rite-autocomplete/reference/lookahead.md"]},"workspace":["state.md","spec.md","plan.md","tasks.md","questions.md","decisions.md","drift.md","evidence.md","test-plan.md"],"rootOnly":["devrites-lib/reference/standards/afk-hitl.md","devrites-lib/reference/orchestration-profiles.md","devrites-lib/reference/standards/workflow-artifacts.md","rite-autocomplete/reference/lookahead.md"]} -->
8
+ <!-- loads: {"always":["devrites-lib/reference/standards/core.md","devrites-lib/reference/standards/afk-hitl.md","devrites-lib/reference/standards/one-shot-actions.md","devrites-lib/reference/orchestration-profiles.md","devrites-lib/reference/parallel-workspaces.md","devrites-lib/reference/standards/acceptance-preserving-reslice.md","rite-autocomplete/reference/decision-policy.md","rite-autocomplete/reference/loop.md","rite-autocomplete/reference/stop-conditions.md"],"triggers":{"workflow-artifacts":["devrites-lib/reference/standards/workflow-artifacts.md"],"lookahead":["rite-autocomplete/reference/lookahead.md"]},"workspace":["state.md","spec.md","plan.md","tasks.md","questions.md","decisions.md","drift.md","evidence.md","test-plan.md"],"rootOnly":["devrites-lib/reference/standards/afk-hitl.md","devrites-lib/reference/orchestration-profiles.md","devrites-lib/reference/parallel-workspaces.md","devrites-lib/reference/standards/workflow-artifacts.md","rite-autocomplete/reference/lookahead.md"]} -->
9
9
  > Read-set manifest: `devrites-engine context --skills-root .dsh/skills <slug> --phase autocomplete` bundles every file named below into one deduplicated read. Trigger names map to the conditional rules in the sections that follow.
10
10
 
11
11
 
@@ -86,7 +86,7 @@ With `--lookahead` (trigger `lookahead`), follow
86
86
  [`lookahead.md`](reference/lookahead.md) instead of the steps below: plan the
87
87
  next sequence continuation through Vet in a second session, then stop.
88
88
 
89
- 1. **Orient and parse.** Resolve the explicit or active slug; when a workspace exists,
89
+ 1. **Orient and parse.** Resolve source per [phase target binding](../devrites-lib/reference/parallel-workspaces.md#phase-target-binding); when a workspace exists,
90
90
  require its `state.md` and read its cursor; a fresh idea starts empty at step 2.
91
91
  Before honoring `blocked` with terminal `next_action`,
92
92
  reconcile retained consumptive evidence and fingerprint attempts from
@@ -96,7 +96,7 @@ next sequence continuation through Vet in a second session, then stop.
96
96
  Reconstruct a missing return cursor only from
97
97
  the current phase and exact approved action in `test-plan.md`/evidence, never
98
98
  from chat. After compaction or a resumed session, always run `devrites-engine
99
- handoff <slug> --resume` first (slug from `.devrites/ACTIVE`) and open only the
99
+ handoff <source> --resume` first for that selected source and open only the
100
100
  `read_next` artifacts it names, per [`context-hygiene.md`](../devrites-lib/reference/standards/context-hygiene.md) § Compaction fallback.
101
101
  Normalize current arguments to idea, `ship_preflight: yes|no`,
102
102
  `max_slices: unlimited`, `parallel: N|default`, `profile: standard|full`,
@@ -118,13 +118,16 @@ next sequence continuation through Vet in a second session, then stop.
118
118
  `/rite-build` batch loop → `/rite-prove` → `/rite-polish` →
119
119
  `/rite-review` → `/rite-seal`. Read and execute each skill; durable files, not
120
120
  chat, carry state. Apply the mutable post-vet budget before first Build.
121
- Build uses `parallel select --from-plan` (cap: explicit `--parallel N`, else
122
- sentinel `max_parallel`, else 10), refilling per landing until none pending;
123
- a one-slice round is serial for that round only; reselect afterward. Host
124
- isolation may force serial. If `--parallel N` is explicit,
125
- pass it into `/rite-build` and ignore leftover sentinel `max_parallel`.
126
- Otherwise pass the resolved sentinel/default cap into `/rite-build` as
127
- `--parallel N`, never bare `/rite-build`.
121
+ Execute [`parallel-workspaces.md`](../devrites-lib/reference/parallel-workspaces.md):
122
+ continuously scan the authorized recorded sequence across stages, preparing
123
+ and re-Vetting future targets while writers run. Build queries the global
124
+ pool with `parallel select --from-plan --slug <controller> --workspaces
125
+ <controller,authorized-source,...> --cap N`; N is explicit `--parallel N`, else
126
+ sentinel `max_parallel`, else 10 — one global writer cap, including explicit 1.
127
+ Always pass resolved `--parallel N` to Build. Cap>1 uses an isolated first
128
+ writer even when initially alone; refill globally per landing and planning/
129
+ review return. Unsupported host stays serial. No local ready slice is not
130
+ completion while authorized planning, repair/re-Vet or independent work remains.
128
131
  **Completion:** loop reaches Seal GO or persists a valid stop before any later phase.
129
132
  5. **Apply stops.** At every gate use
130
133
  [stop-conditions.md](reference/stop-conditions.md). A `blocked` label alone is not a stop condition:
@@ -19,15 +19,15 @@ Exit 3: held, stop. Re-add the same session each phase. Release with `devrites-e
19
19
 
20
20
  ## Rules
21
21
 
22
- - Never read or write `.devrites/ACTIVE`. Pass the slug to `/rite-spec <target> "<objective>"` and `devrites-engine handoff <target> --resume`.
22
+ - Preserve the ordered owner's `.devrites/ACTIVE`; bind every phase and handoff to the target per shared [phase target binding](../../devrites-lib/reference/parallel-workspaces.md#phase-target-binding).
23
23
  - After the workspace exists, run `devrites-engine state set <target> sequence_lookahead=yes`.
24
24
  - Run Spec → Clarify → Temper → Define → Plan → Vet. Define and Plan read the predecessor tree and plan. Record one assumption per predecessor interface used.
25
25
  - At Vet record `Predecessor readiness: <active-slug> <digest>` in `eng-review.md` (the `--emit-binding` hex). A later planning change blocks `DRV-GATE-READINESS-STALE`; re-vet before Build.
26
- - Predecessor still in Build or later forbids only Build, product source, tests, commits, and `.devrites/AFK`. It does not skip Define, Plan, or Vet, and is not `awaiting_human`. Acceptance, scope, and irreversible risk still stop.
26
+ - This explicit second session stays planning-only: no Build, product source/tests, commits or `.devrites/AFK` writes, even after predecessor Seal. Main controller may later consume the prepared target under [`parallel-workspaces.md`](../../devrites-lib/reference/parallel-workspaces.md); its sanctioned isolated Build is not a second same-tree writer. Acceptance, scope and irreversible risk still stop.
27
27
  - No spawn tool is not gate `access` or `awaiting_human`. Root writes Define and Plan. No Vet `READY` until those roles are admitted; else stop `running`, `next_action: /rite-vet`.
28
28
  - On every entry, re-read `state.md` and `questions.md`. Do not report a stop from chat. `continuation: clear` with `awaiting_human` is not done: fold resolved decisions into the spec, then continue. An except-principle or change-the-spec question complies: change the spec and resolve it. Ask only when the approved objective cannot comply.
29
- - Stop at Vet `READY` with `next_action: build after predecessor Seal GO`, at a real human gate, or when the lease is lost.
29
+ - Stop at Vet `READY` with `next_action: /rite-build <target>` as a cursor for the main controller (not permission for this lookahead session to Build), at a real human gate, or when the lease is lost. Release the planning claim so the main controller can recheck/admit it.
30
30
 
31
- **Failing case:** Vet then Build while the predecessor is still sealing, so two sessions write one tree. Or Define, Plan, and Vet skipped because the predecessor is still Build, or a missing strategy-reviewer spawn recorded as gate `access`.
31
+ **Failing case:** lookahead session starts Build; main controller is blanket-blocked until predecessor Seal despite current native independent admission; or Define/Plan/Vet are skipped because predecessor is still Build. Missing strategy-reviewer spawn is not gate `access`.
32
32
 
33
33
  **Failing case:** stops to except a principle the spec can avoid.
@@ -16,7 +16,7 @@ allow_gates: [advisory, validating]
16
16
  # max_slices / max_agents / max_minutes / max_review_queue omitted: unlimited
17
17
  # continue_sequence: false # opt out; default chains after Seal GO
18
18
  # max_workspaces: 5 # sequence budget when chaining
19
- # max_parallel: 10 # default cap when this invocation omits `--parallel N`; `--parallel N` wins and rewrites only this field
19
+ # max_parallel: 10 # fresh-run default; preserve retained lease capacity on cold resume; explicit `--parallel N` rewrites only this field
20
20
  # max_tokens: <N>
21
21
  # max_cost_usd: <amount>
22
22
  # notify: "<cmd>"
@@ -28,7 +28,10 @@ when this invocation contains `--parallel N`: then write or replace only
28
28
  malformed. Do not stop because it names `max_slices` / `max_agents` /
29
29
  `max_minutes` / `max_review_queue` or only `[advisory]`. If absent, write it
30
30
  once after clarity, and include `max_parallel: N` when that flag is present.
31
- Never write `max_slices` from `--max-slices`. It is otherwise read-only: never rewrite it after Vet or reset it on resume. Leftover `expires_at` is ignored
31
+ Without the flag, seed a newly created sentinel from retained global lease capacity
32
+ when present; otherwise use fresh-run default 10. Never replace a valid existing
33
+ sentinel's capacity from lease/default. Never write `max_slices` from `--max-slices`.
34
+ It is otherwise read-only: never rewrite it after Vet or reset it on resume. Leftover `expires_at` is ignored
32
35
  and never rewritten. **Failing case:** leftover `max_parallel: 1` keeps the run
33
36
  serial after `--parallel 5`.
34
37
 
@@ -64,7 +67,7 @@ Workspace files, not chat, carry state. Read/execute each phase skill:
64
67
  | 3 | `/rite-temper` | harden or reduce; `expand` and extra acceptance stop for a human; irreversible risk still pauses |
65
68
  | 4 | `/rite-define` | approved plan/tasks/traceability |
66
69
  | 5 | `/rite-vet` | every plan; derive mutable budget after READY |
67
- | 6 | `/rite-build` batch loop | largest eligible path-disjoint set (cap: this invocation's `--parallel N`, else sentinel `max_parallel`, else 10; serial if <2 eligible); refill per landing; charge once per landed slice |
70
+ | 6 | `/rite-build` global frontier | execute [shared controller workflow](../../devrites-lib/reference/parallel-workspaces.md); scan authorized stages and repair/re-Vet while writers run, refill per landing under one global cap; charge each source once per landed slice |
68
71
  | 7 | `/rite-prove` | all slices built except deferred (`Satisfies: none`); approved proof; recovery on red |
69
72
  | 8 | `/rite-polish` | re-prove after code edits |
70
73
  | 9 | `/rite-review` | in-scope correction then fresh proof |
@@ -72,7 +75,7 @@ Workspace files, not chat, carry state. Read/execute each phase skill:
72
75
  | 11 | `/rite-ship` | only after GO; `--ship` never authorizes Git; stop at literal-GO/native approval |
73
76
 
74
77
  Check [stop-conditions.md](stop-conditions.md) before advancing. Discard stale
75
- pass evidence after source edits. Re-read active workspace before each phase. On a cold resume or
78
+ pass evidence after source edits. Re-read the selected source before each phase per [phase target binding](../../devrites-lib/reference/parallel-workspaces.md#phase-target-binding). On a cold resume or
76
79
  new activation, run `devrites-engine check regression <slug>`: `BLOCKED` names a
77
80
  durable fact lost since the last checkpoint — restore or route it through its
78
81
  owning phase before continuing; `unproven` does not block. After each phase's
@@ -89,11 +92,12 @@ step 10 does not end the run: leave the sealed workspace unshipped with its
89
92
  (`/rite-spec <parent>-<n> "<objective>"` from the parent's `decisions.md` sequence)
90
93
  and re-enter step 1. Spend one workspace per opened continuation.
91
94
 
92
- For a child already planned by [lookahead](lookahead.md), do not re-specify.
93
- Wait while `devrites-engine claim check --workspace <child>` exits 3 (live
94
- lookahead), then set `.devrites/ACTIVE` to the child and resume its cursor at
95
- step 1. A predecessor replan since its Vet blocks child readiness with
96
- `DRV-GATE-READINESS-STALE`; route to `/rite-vet` before Build.
95
+ For an already prepared child, do not re-specify. Follow
96
+ [`parallel-workspaces.md`](../../devrites-lib/reference/parallel-workspaces.md)
97
+ while the owner is still running: honor claims, repair/re-Vet stale readiness,
98
+ and admit only explicitly independent/dependency-satisfied isolated work.
99
+ ACTIVE changes to the child only at normal ordered handoff after the owner Seal;
100
+ resume its durable cursor without a second controller or another opening charge.
97
101
 
98
102
  Before invoking a continuation, require durable `state.md`
99
103
  `sequence_workspaces_remaining > 0`; if absent, first write
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  name: rite-build
3
- description: Build the next approved vertical slice with evidence. HITL one-slice default; AFK/autocomplete chain serially or in eligible path-disjoint batches (dynamic size, cap 10); `--parallel N` caps a batch.
3
+ description: Build the next approved vertical slice with evidence. HITL one-slice default; AFK/autocomplete refill eligible isolated work under --parallel N, one global writer cap under Autocomplete.
4
4
  argument-hint: "[--parallel N] [slice number or name]"
5
5
  user-invocable: true
6
6
  ---
7
7
 
8
- <!-- loads: {"always":["devrites-lib/reference/standards/core.md","devrites-lib/reference/standards/code-navigation.md","devrites-lib/reference/standards/code-index.md","devrites-lib/reference/standards/agents.md","rite-build/reference/phase-contract.md","rite-build/reference/one-slice-cycle.md","rite-build/reference/wright-dispatch.md","rite-build/reference/checkpoint.md","rite-build/reference/spec-drift-guard.md","rite-build/reference/output.md","rite-build/reference/anti-patterns.md"],"rootOnly":["devrites-lib/reference/standards/code-index.md","rite-build/reference/phase-contract.md","rite-build/reference/wright-dispatch.md","rite-build/reference/checkpoint.md","rite-build/reference/output.md","rite-build/reference/afk-discipline.md","rite-build/reference/checkpoint-protocol.md","rite-build/reference/parallel-batch.md","devrites-lib/reference/standards/afk-hitl.md","devrites-lib/reference/standards/workflow-artifacts.md"],"triggers":{"afk":["rite-build/reference/afk-discipline.md","devrites-lib/reference/standards/afk-hitl.md","rite-build/reference/checkpoint-protocol.md"],"applicability":["devrites-lib/reference/standards/repository-topology.md","devrites-lib/reference/standards/data-integrity.md","devrites-lib/reference/standards/integration-reliability.md"],"coding":["devrites-lib/reference/standards/coding-style.md"],"debug-recovery":["devrites-lib/reference/standards/debug-recovery.md"],"dod":["devrites-lib/reference/standards/definition-of-done.md"],"errors":["devrites-lib/reference/standards/error-handling.md"],"frontend":["rite-build/reference/frontend-trigger.md"],"parallel":["rite-build/reference/parallel-batch.md"],"patterns":["devrites-lib/reference/standards/patterns.md"],"principles":["devrites-lib/reference/standards/principles.md"],"security":["devrites-lib/reference/standards/security.md"],"tdd":["rite-build/reference/tdd.md","devrites-lib/reference/standards/testing.md"],"workflow-artifacts":["devrites-lib/reference/standards/workflow-artifacts.md"]},"workspace":["brief.md","spec.md","state.md","decisions.md","assumptions.md","questions.md","decision-coverage.md","architecture.md","plan.md","tasks.md","traceability.md","eng-review.md","test-plan.md","gates.md","strategy.md"],"workspaceByRole":{"code-reviewer":["spec.md","plan.md","tasks.md","test-plan.md","architecture.md","decisions.md","state.md"],"doubt-reviewer":["spec.md","plan.md","tasks.md","state.md","decisions.md"],"slice-wright":["brief.md","spec.md","architecture.md","plan.md","tasks.md","test-plan.md","state.md","decisions.md","assumptions.md","questions.md"],"test-analyst":["spec.md","tasks.md","test-plan.md","state.md"]}} -->
8
+ <!-- loads: {"always":["devrites-lib/reference/parallel-workspaces.md","devrites-lib/reference/standards/core.md","devrites-lib/reference/standards/code-navigation.md","devrites-lib/reference/standards/code-index.md","devrites-lib/reference/standards/agents.md","rite-build/reference/phase-contract.md","rite-build/reference/one-slice-cycle.md","rite-build/reference/wright-dispatch.md","rite-build/reference/checkpoint.md","rite-build/reference/spec-drift-guard.md","rite-build/reference/output.md","rite-build/reference/anti-patterns.md"],"rootOnly":["devrites-lib/reference/standards/code-index.md","devrites-lib/reference/parallel-workspaces.md","rite-build/reference/phase-contract.md","rite-build/reference/wright-dispatch.md","rite-build/reference/checkpoint.md","rite-build/reference/output.md","rite-build/reference/afk-discipline.md","rite-build/reference/checkpoint-protocol.md","rite-build/reference/parallel-batch.md","devrites-lib/reference/standards/afk-hitl.md","devrites-lib/reference/standards/workflow-artifacts.md"],"triggers":{"afk":["rite-build/reference/afk-discipline.md","devrites-lib/reference/standards/afk-hitl.md","rite-build/reference/checkpoint-protocol.md"],"applicability":["devrites-lib/reference/standards/repository-topology.md","devrites-lib/reference/standards/data-integrity.md","devrites-lib/reference/standards/integration-reliability.md"],"coding":["devrites-lib/reference/standards/coding-style.md"],"debug-recovery":["devrites-lib/reference/standards/debug-recovery.md"],"dod":["devrites-lib/reference/standards/definition-of-done.md"],"errors":["devrites-lib/reference/standards/error-handling.md"],"frontend":["rite-build/reference/frontend-trigger.md"],"parallel":["rite-build/reference/parallel-batch.md","devrites-lib/reference/parallel-workspaces.md"],"patterns":["devrites-lib/reference/standards/patterns.md"],"principles":["devrites-lib/reference/standards/principles.md"],"security":["devrites-lib/reference/standards/security.md"],"tdd":["rite-build/reference/tdd.md","devrites-lib/reference/standards/testing.md"],"workflow-artifacts":["devrites-lib/reference/standards/workflow-artifacts.md"]},"workspace":["brief.md","spec.md","state.md","decisions.md","assumptions.md","questions.md","decision-coverage.md","architecture.md","plan.md","tasks.md","traceability.md","eng-review.md","test-plan.md","gates.md","strategy.md"],"workspaceByRole":{"code-reviewer":["spec.md","plan.md","tasks.md","test-plan.md","architecture.md","decisions.md","state.md"],"doubt-reviewer":["spec.md","plan.md","tasks.md","state.md","decisions.md"],"slice-wright":["brief.md","spec.md","architecture.md","plan.md","tasks.md","test-plan.md","state.md","decisions.md","assumptions.md","questions.md"],"test-analyst":["spec.md","tasks.md","test-plan.md","state.md"]}} -->
9
9
  > Read-set manifest: `devrites-engine context --skills-root .dsh/skills <slug> --phase build` bundles every file named below into one deduplicated read. Trigger names map to the conditional rules in the sections that follow.
10
10
 
11
11
 
@@ -80,12 +80,14 @@ Wright applies anti-slop; root verifies returns and never patches source. Refuse
80
80
  <!-- workflow-artifact-adapter: {"module":"devrites-lib/reference/standards/workflow-artifacts.md","entry":"Vet-ready admitted bytes require root authorship outside product wright","action":"ROOT_TRANSACTION; root writes only admitted .devrites/** targets","return":"saved Build slice cursor; wright product allowlist unchanged"} -->
81
81
  ## `--parallel N` (opt-in)
82
82
 
83
- HITL default/explicit `1` ≡ serial; AFK inherits cap.
84
- `2`–`10` is a **cap** — the root runs an eligible
85
- path-disjoint set it can start now (`N_eff`, from `parallel select --from-plan`), takes fewer when the cap cannot be
86
- filled, and refills a slot per landing (serial slice or one sibling) until
87
- no pending slice remains
88
- ([`parallel-batch.md` § Dynamic selection](reference/parallel-batch.md#dynamic-selection-and-re-batching)).
83
+ Standalone HITL default/explicit `1` ≡ serial; AFK inherits cap. Under
84
+ Autocomplete, read and execute shared root-only
85
+ [`parallel-workspaces.md`](../devrites-lib/reference/parallel-workspaces.md)
86
+ (trigger `parallel`, including global cap 1): controller/source routing,
87
+ authorized pool, isolated first writer and continuous repair/re-Vet/refill.
88
+ Standalone Build remains local. `2`–`10` is a cap, not a quota; eligible
89
+ path-disjoint work refills after each landing
90
+ ([`parallel-batch.md`](reference/parallel-batch.md#dynamic-selection-and-re-batching)).
89
91
  Unattended runs (`/rite-autocomplete`, `.devrites/AFK` `max_parallel`) refill
90
92
  inside the same run; HITL stops after each landing. This invocation's `--parallel N`
91
93
  is the cap: leftover sentinel `max_parallel` is not consulted. Autocomplete with
@@ -102,8 +104,9 @@ a human `Fix`. Exhausted repair blocks and preserves everything;
102
104
  `cleanup --force` salvages slice branches before removing worktrees —
103
105
  human-gated to abandon a batch, orchestrator-emitted only as the salvage
104
106
  step of an automatic frozen-lease re-batch.
105
- AFK charges per landed sibling only. Running lease blocks another
106
- `/rite-build`. Details: `parallel-batch.md`.
107
+ AFK charges per landed sibling only. A retained lease resumes through its
108
+ controller; it blocks a competing Build root, not controller-owned source dispatch.
109
+ Details: `parallel-batch.md`.
107
110
 
108
111
  ## Execute and reply
109
112
 
@@ -110,7 +110,7 @@ the hook receives:
110
110
  | `DEVRITES_QID` | the new qid (e.g. `q-2026-05-28-001`) |
111
111
  | `DEVRITES_GATE` | `advisory` / `validating` / `blocking` / `escalating` |
112
112
  | `DEVRITES_SLICE` | `<N — name>` |
113
- | `DEVRITES_SLUG` | active feature slug |
113
+ | `DEVRITES_SLUG` | source feature slug |
114
114
  | `DEVRITES_QUESTION` | the checkpoint text |
115
115
  | `DEVRITES_PROPOSED` | the proposed answer |
116
116
 
@@ -70,7 +70,7 @@ After a crash, a fresh session may read the last `WIP(<slug>)` body as crash con
70
70
  Authoritative state remains in `.devrites/`: validate the body against that workspace;
71
71
  never reconstruct or advance state from the commit body. Reload per
72
72
  [`context-hygiene.md`](../../devrites-lib/reference/standards/context-hygiene.md)
73
- (`.devrites/ACTIVE`, `state.md`, `questions.md`, `decisions.md`, `test-plan.md`/`evidence.md`).
73
+ (source-local `state.md`, `questions.md`, `decisions.md`, `test-plan.md`/`evidence.md`).
74
74
 
75
75
  ## Collapse at ship
76
76
  WIP commits are scratch and never reach shared history. `/rite-ship` folds them into the
@@ -4,6 +4,12 @@
4
4
 
5
5
  Opt-in only. Default `/rite-build` stays [`one-slice-cycle.md`](one-slice-cycle.md).
6
6
 
7
+ Autocomplete first executes shared
8
+ [`parallel-workspaces.md`](../../devrites-lib/reference/parallel-workspaces.md):
9
+ it owns global admission, authorized source discovery and controller routing.
10
+ The local selection below applies to standalone Build; mixed selection uses
11
+ that reference and then this same per-slice review/repair/integration lifecycle.
12
+
7
13
  ## Entry
8
14
 
9
15
  | Input | Behavior |
@@ -14,8 +20,9 @@ Opt-in only. Default `/rite-build` stays [`one-slice-cycle.md`](one-slice-cycle.
14
20
  | Autocomplete `--parallel N` | N is the cap for this run; leftover sentinel `max_parallel` is ignored, then `/rite-autocomplete` writes or replaces only `max_parallel: N` |
15
21
  | Autocomplete, no flag | Same path, cap from sentinel `max_parallel` else 10; serial only when ineligible |
16
22
 
17
- AFK caps `N`. Charge green siblings once after integrate; abort /
18
- integrate-failed → **0**. `parallel create` refuses while a lease exists.
23
+ AFK caps `N`. Charge each green sibling once after its successful landing;
24
+ rejected/unlanded work charges zero, without undoing prior landed accounting.
25
+ `parallel create` refuses another retained repository controller.
19
26
  Reconcile retained repair-round artifacts by exact causal fingerprint before honoring a stored blocked status/verdict. Blocked status, round count, or distinct finding alone cannot stop cold resume: establish missing or stale review coverage under step 4; repair unless a stop condition remains evidenced.
20
27
 
21
28
  ## Dynamic selection and re-batching
@@ -45,8 +52,10 @@ passes `--whole` so the other slices stay visible.
45
52
  `next` prints `eligible_now:`/`batch:`. `n_eff` counts new picks only.
46
53
  With a running lease, a single new pick still uses `parallel add`;
47
54
  `n_eff=0` with a running lease waits for siblings, not Prove. Without one:
48
- ≥2 → parallel batch, 1 → serial, none pending → Prove.
49
- Serial is this round only; a cap need not be filled.
55
+ ≥2 → parallel batch, 1 → standalone serial; Autocomplete cap>1 on a capable
56
+ host instead isolates that first writer for global refill. No pending work
57
+ returns to the caller's next phase; no ready local work does not exhaust its
58
+ authorized global frontier. A cap need not be filled.
50
59
 
51
60
  **Refill per landing; never wait for the batch.** Each sibling lands alone when
52
61
  green ([Lifecycle](#lifecycle) step 6). Re-read state, pending slices, and the
@@ -91,33 +100,36 @@ lands a broken lockfile.
91
100
 
92
101
  ## Control vs workers
93
102
 
94
- Control owns `.devrites/work/<slug>/` (lease + bookkeeping).
95
- Workers: `.scratch/parallel-wt/<batch>/<slice>/` on
96
- `devrites/parallel/<slug>/<batch>/<slice>` @ base `B`. Wrights never write
97
- `.devrites/**`.
103
+ Control owns the controller lease; source workspaces own their bookkeeping.
104
+ Use returned worker `worktree_path`/`branch`: controller-local siblings retain
105
+ `<batch>/<slice>`, foreign siblings use `<batch>/_workspaces/<source>/<slice>`.
106
+ Workers never write `.devrites/**`.
98
107
 
99
- Lease: `batch_id`, `created_at`, `base_sha`, `n`,
100
- `status` (`running|aborted|integrate-failed|complete`), `control_pid_or_session`,
101
- `slices[]` (`id`, `paths`, `worktree_path`, `branch`, `wright_status`,
102
- `transfer_commit`).
108
+ Lease includes `batch_id`, `created_at`, `base_sha`, `capacity`, `n`, `status`,
109
+ `control_pid_or_session` and `slices[]` (`id`, optional `workspace`, `paths`,
110
+ `worktree_path`, `branch`, `wright_status`, `transfer_commit`). Omitted workspace
111
+ means controller; CLI lease `--slice` uses source-qualified foreign keys.
103
112
 
104
113
  ## Lifecycle
105
114
 
106
115
  1. Orient/gate; parse the cap; compute `N_eff` and select the eligible set
107
116
  ([Dynamic selection and re-batching](#dynamic-selection-and-re-batching)) —
108
- `parallel select --slug <slug> --cap N --from-plan` (ready set, write paths,
109
- and pairwise disjointness are inside that verb).
117
+ local `parallel select --slug <slug> --cap N --from-plan`, or Autocomplete's
118
+ authorized mixed-source query from the shared controller reference.
110
119
  Preflight each selected slice with `devrites-engine check slice <slug>
111
120
  <id>`, plus `check preconditions <slug> --slice <id>` when it has a
112
121
  `pre-dispatch <id>` preflight row; a malformed contract or non-zero
113
122
  precondition is dropped from the batch and recorded as a gap, not dispatched.
114
- 2. Write lease; freeze `B=HEAD`; `parallel create` worktrees.
115
- 3. Dispatch ≤10 wrights in parallel (cwd=worktree; allowlist; prove `HEAD==B`).
116
- One wave, one role per sibling: `--role slice-wright.<SLICE-ID> --slice <SLICE-ID>`
117
- for each. `start` every role before waiting on any. One shared `slice-wright`
118
- role is refused: it has one handle, so the other slices never start.
119
- A linked worktree has no `.devrites`:
120
- tell each wright to run `gates precheck` with `DEVRITES_ROOT=<control>/.devrites`.
123
+ 2. Write lease with `parallel create --cap N`; freeze `B=HEAD`; create isolated
124
+ worktrees, including Autocomplete's first lone writer at cap>1.
125
+ 3. Dispatch ≤N active wrights globally (absolute cwd=returned worktree; exact
126
+ `devrites-slice-wright` native profile; source slug; allowlist; prove `HEAD==B`).
127
+ Source-local waves use one role per sibling:
128
+ `--role slice-wright.<SLICE-ID> --slice <SLICE-ID>`.
129
+ `start` every selected role across sources before waiting on any.
130
+ Shared `slice-wright` role is refused: one handle cannot track siblings.
131
+ Linked worktrees run source checks with `DEVRITES_ROOT=<control>/.devrites`;
132
+ source overrides never leak into controller lease mutations.
121
133
  4. Inspect each returned path list, cumulative diff from `B`, transfer identity,
122
134
  and required result fields against the immutable contract. Reject malformed,
123
135
  stale, or out-of-scope work. Freeze and probe the sibling in its worktree:
@@ -145,21 +157,30 @@ Lease: `batch_id`, `created_at`, `base_sha`, `n`,
145
157
  preserve completed and in-progress recoverable work and classify each result.
146
158
  6. `parallel integrate --slice <id> --apply-to-control` **only after its steps
147
159
  4–5 are green**: `transfer_commit` descends from the sibling's base and diffs
148
- path-exact vs it; apply as its own local `WIP(<slug>):` commit
149
- (imperative summary, never a slice id). Staging branch, then FF; the engine
150
- refuses (never rewinds) if anything but this lease moved control. Conflict →
151
- `integrate-failed`; classify under repair rounds (siblings stay in place).
160
+ path-exact vs it; apply as its own local `WIP(<source-slug>):` commit
161
+ (imperative summary, never a slice id). Staging branch, durable exact landing
162
+ intent, then FF; retry the same operation after interrupted persistence.
163
+ The engine reconciles only that recorded landing and refuses unrelated
164
+ HEAD/ref movement. Conflict → `integrate-failed`; classify under repair rounds
165
+ (siblings stay in place).
152
166
  Never integrate because a wright returned.
153
167
  7. Each landing: FF control (the branch that held `HEAD` when the batch started —
154
168
  often `main`/`master`, otherwise whatever the user was on) by one local commit,
155
- never pushed; union that sibling's paths into `touched-files.md`; update
156
- state/evidence; AFK +1; optional `check candidate`. Land every green sibling,
157
- refill ([Dynamic selection](#dynamic-selection-and-re-batching)), then run the
158
- feature gates once for the train
159
- ([Proof tiers](phase-contract.md#proof-tiers)); the next train waits, the
160
- refilled wrights do not.
161
- 8. Cleanup runs only after the last landing marks the lease `complete` — work
162
- landed in control, so `parallel cleanup` removes worktrees/branches.
169
+ never pushed; union only that sibling's paths into SOURCE `touched-files.md`;
170
+ update its checked BUILT state/evidence and regression floor; AFK +1 once.
171
+ Once every worker-bound reviewer/proof handle is terminal and source bookkeeping
172
+ is durable, run `parallel prune --root <repo> --slug <controller>` to release
173
+ clean integrated checkouts before refilling. It keeps transfer branches, proof
174
+ identities, lease rows and pending siblings. A dirty, ignored-data-bearing,
175
+ switched or unknown checkout stays untouched; record its recovery path and
176
+ continue safe independent work, never force-delete it to reclaim a slot.
177
+ Land every independently green sibling and refill globally immediately
178
+ ([Dynamic selection](#dynamic-selection-and-re-batching)), then run source-owned
179
+ feature gates for the train ([Proof tiers](phase-contract.md#proof-tiers));
180
+ refilled wrights do not wait for unrelated source proof.
181
+ 8. Whole cleanup runs only after the last landing marks the lease `complete`.
182
+ `parallel cleanup` removes verified disposable checkouts/branches; late edits,
183
+ ignored/untracked data and extra commits stay with reported recovery paths.
163
184
  Blocked/human-stopped batches keep lease, worktrees, branches — nothing is
164
185
  removed while the batch may resume. `parallel abort` + `cleanup --force`
165
186
  abandons the batch — the explicit human discard path; the single
@@ -225,9 +246,9 @@ Repair rejected work in place; never discard/rebuild while budget remains.
225
246
  ## Engine verbs
226
247
 
227
248
  ```text
228
- devrites-engine parallel select --cap <1-10> [--root <dir>] [--slug <slug>] [--from-plan | <json-file>|-]
229
- devrites-engine parallel create --root <repo> --slug <slug> --batch <id> --base <B> --json <file>|-
230
- devrites-engine parallel add --root <repo> --slug <slug> --json <file>|-
249
+ devrites-engine parallel select --cap <1-10> [--root <dir>] [--slug <controller>] [--from-plan [--workspaces <controller,authorized-source,...>] | <json-file>|-]
250
+ devrites-engine parallel create --root <repo> --slug <controller> --batch <id> --base <B> --cap <N> --json <file>|-
251
+ devrites-engine parallel add --root <repo> --slug <controller> --cap <N> --json <file>|-
231
252
  devrites-engine parallel record-green --root <repo> --slug <slug> --slice <id> --commit <sha>
232
253
  devrites-engine parallel integrate --root <repo> --slug <slug> --slice <id> --apply-to-control
233
254
  devrites-engine parallel integrate --root <repo> --slug <slug> --apply-to-control
@@ -4,11 +4,13 @@
4
4
 
5
5
  Apply [`one-slice-cycle.md`](one-slice-cycle.md) and
6
6
  [`candidate-integrity.md`](../../devrites-lib/reference/candidate-integrity.md).
7
- Opt-in `--parallel N` replaces steps 2–8 with [`parallel-batch.md`](parallel-batch.md);
7
+ `--parallel N` uses [`parallel-batch.md`](parallel-batch.md) for steps 2–8;
8
+ Autocomplete also executes the shared
9
+ [`workspace controller`](../../devrites-lib/reference/parallel-workspaces.md).
8
10
  Spec Drift Guard still applies.
9
11
 
10
- 1. **Gate.** Read core, `.devrites/ACTIVE`, then `devrites-engine orient <slug>`
11
- (`devrites-engine next <slug>` prints the minimal remaining path) and the
12
+ 1. **Gate.** Read core and ordered ACTIVE owner; use explicit SOURCE slug for
13
+ `devrites-engine orient <slug>` (`next <slug>` prints its minimal path) and the
12
14
  Build read-next in
13
15
  [`workspace-artifact-schema.md`](../../devrites-lib/reference/workspace-artifact-schema.md#read-next-by-phase):
14
16
  the selected slice via `devrites-engine observe slice <slug> <SLICE-ID>`, not whole
@@ -16,8 +18,9 @@ Spec Drift Guard still applies.
16
18
  `Implementation readiness: READY`, current `Readiness inputs SHA-256`, exact
17
19
  required accounts, ID/meaning traceability and green proof preflight.
18
20
  Run `devrites-engine check readiness <slug>`; any miss/nonzero blocks.
19
- Non-empty `orient` `inflight_waves` is reconciled first: `dispatch return` each
20
- role whose account is in hand, else `dispatch abandon --reason` and re-dispatch.
21
+ Non-empty `orient` `inflight_waves` is reconciled first: record accounts in
22
+ hand; retain running/unknown writer handles, claims and lease slots. Read-only
23
+ stale waves follow terminal reconciliation before re-dispatch, not blind abandon.
21
24
  2. **Select.** Pick the lowest pending slice whose `depends_on` are all built, using
22
25
  `orient` `task_graph.slices` plus the `state.md` built list — never by scanning
23
26
  `tasks.md`; then `observe slice` it. Restate its goal, ACs, exclusions and exact paths. Include
@@ -46,10 +46,10 @@ only per [`checkpoint.md`](checkpoint.md).
46
46
 
47
47
  Conflict, extra/missing commit, moved base, or cleanup failure is `gap`/STOP:
48
48
  preserve the worktree and commit. Without explicit reconciliation, use same-worktree serial.
49
- Parallel isolated-writer worktrees remain forbidden until this serial pilot measures
50
- transfer, conflict, proof, and review outcomes on both hosts; opt-in `/rite-build --parallel N`
51
- (2≤N≤10) path-disjoint fan-out is the only sanctioned parallel mode. Same-worktree multi-writer / root-emulated
52
- worktrees stay forbidden.
49
+ Parallel isolated writers use only [`parallel-batch.md`](parallel-batch.md) and,
50
+ under Autocomplete, the shared
51
+ [`workspace controller`](../../devrites-lib/reference/parallel-workspaces.md).
52
+ Same-worktree multi-writer / root-emulated worktrees stay forbidden.
53
53
 
54
54
  ## Prepare
55
55
 
@@ -131,9 +131,9 @@ a spec trace of the slice's obligations (hardening no AC/INV/PROH requires moves
131
131
  a sibling slice dependents do not need, still gated before Seal), and
132
132
  reopen with `--reslice-review <DRIFT-ID>`. Same-worktree stays one writer.
133
133
  Never run two writers in one worktree, mix isolated and same-worktree writers,
134
- or substitute a generic agent. Opt-in `/rite-build --parallel N` is the
135
- exception: one wright per worktree, each its own `slice-wright.<SLICE-ID>` role
136
- on one wave ([`parallel-batch.md`](parallel-batch.md)).
134
+ or substitute a generic agent. Sanctioned parallel dispatch uses one exact
135
+ wright per worktree, source-local `slice-wright.<SLICE-ID>` roles and starts
136
+ all selected sources before first wait ([`parallel-batch.md`](parallel-batch.md)).
137
137
 
138
138
  The `return` that completes the wave releases its claim; `dispatch abandon --release`
139
139
  releases it on any other host-confirmed terminal path (a stop, a launch refused with no
@@ -5,7 +5,7 @@ argument-hint: "[feature-slug]"
5
5
  user-invocable: true
6
6
  ---
7
7
 
8
- <!-- loads: {"always":["devrites-lib/reference/standards/core.md","devrites-lib/reference/standards/code-navigation.md","devrites-lib/reference/standards/code-index.md","devrites-lib/reference/standards/afk-hitl.md","rite-clarify/reference/decision-coverage.md","rite-clarify/reference/anti-patterns.md"],"triggers":{"agents":["devrites-lib/reference/standards/agents.md"]},"workspace":["brief.md","spec.md","state.md","decisions.md","assumptions.md","questions.md","decision-coverage.md"],"workspaceByRole":{"evidence-scout":["brief.md","spec.md","state.md","questions.md"]},"rootOnly":["devrites-lib/reference/standards/code-index.md","devrites-lib/reference/standards/afk-hitl.md"]} -->
8
+ <!-- loads: {"always":["devrites-lib/reference/parallel-workspaces.md","devrites-lib/reference/standards/core.md","devrites-lib/reference/standards/code-navigation.md","devrites-lib/reference/standards/code-index.md","devrites-lib/reference/standards/afk-hitl.md","rite-clarify/reference/decision-coverage.md","rite-clarify/reference/anti-patterns.md"],"triggers":{"agents":["devrites-lib/reference/standards/agents.md"]},"workspace":["brief.md","spec.md","state.md","decisions.md","assumptions.md","questions.md","decision-coverage.md"],"workspaceByRole":{"evidence-scout":["brief.md","spec.md","state.md","questions.md"]},"rootOnly":["devrites-lib/reference/parallel-workspaces.md","devrites-lib/reference/standards/code-index.md","devrites-lib/reference/standards/afk-hitl.md"]} -->
9
9
  > Read-set manifest: `devrites-engine context --skills-root .dsh/skills <slug> --phase clarify` bundles every file named below into one deduplicated read. Trigger names map to the conditional rules in the sections that follow.
10
10
 
11
11
 
@@ -40,7 +40,7 @@ dispatch uses
40
40
 
41
41
  ## Workflow
42
42
 
43
- 1. **Orient.** Read `.devrites/ACTIVE`, `state.md`, and `spec.md`. Require
43
+ 1. **Orient.** Resolve source per [phase target binding](../devrites-lib/reference/parallel-workspaces.md#phase-target-binding), then read its `state.md` and `spec.md`. Require
44
44
  `state.md` `spec_gate: passed` (legacy `Spec gate: passed` line accepted); otherwise stop at `/rite-spec`. Apply the native cursor
45
45
  protocol below before changing workspace artifacts.
46
46
  2. **Enumerate the topology.** From the spec, live code, contracts, references,