devrites 7.2.7 → 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 (340) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/README.md +6 -1
  3. package/docs/candidate-integrity.md +10 -0
  4. package/docs/cli.md +7 -1
  5. package/docs/command-map.md +9 -2
  6. package/docs/engine/commands.md +50 -4
  7. package/docs/orchestration.md +35 -13
  8. package/docs/skills.md +5 -0
  9. package/engine/internal/acceptance/cli.go +35 -30
  10. package/engine/internal/acceptance/preconditions.go +1 -1
  11. package/engine/internal/acceptance/run.go +138 -53
  12. package/engine/internal/acceptance/transcript.go +236 -45
  13. package/engine/internal/devritespaths/paths.go +23 -5
  14. package/engine/internal/gate/gate.go +6 -0
  15. package/engine/internal/install/apply.go +5 -0
  16. package/engine/internal/install/merge.go +48 -6
  17. package/engine/internal/install/preflight.go +21 -3
  18. package/engine/internal/install/uninstall.go +9 -10
  19. package/engine/internal/lib/apply_bundle.go +7 -1
  20. package/engine/internal/lib/candidate.go +20 -7
  21. package/engine/internal/lib/candidate_coverage.go +2 -19
  22. package/engine/internal/lib/closeout.go +22 -10
  23. package/engine/internal/lib/context.go +67 -47
  24. package/engine/internal/lib/context_io.go +171 -0
  25. package/engine/internal/lib/detect.go +8 -8
  26. package/engine/internal/lib/dispatch.go +6 -0
  27. package/engine/internal/lib/packet.go +37 -7
  28. package/engine/internal/lib/packet_freeze.go +60 -12
  29. package/engine/internal/lib/packet_integrity.go +179 -0
  30. package/engine/internal/lib/perturb.go +3 -3
  31. package/engine/internal/lib/resolve.go +10 -5
  32. package/engine/internal/lib/slicecheck.go +7 -1
  33. package/engine/internal/lib/state_edit.go +9 -2
  34. package/engine/internal/lib/taskgraph.go +20 -36
  35. package/engine/internal/lib/triggers.go +30 -31
  36. package/engine/internal/lib/workspace_pool.go +330 -0
  37. package/engine/internal/parallel/cli.go +190 -49
  38. package/engine/internal/parallel/git.go +47 -14
  39. package/engine/internal/parallel/landing.go +232 -0
  40. package/engine/internal/parallel/lease.go +97 -18
  41. package/engine/internal/parallel/ops.go +312 -155
  42. package/engine/internal/parallel/pathdisjoint.go +48 -4
  43. package/engine/internal/parallel/prune.go +133 -0
  44. package/engine/internal/parallel/repository.go +239 -0
  45. package/engine/internal/parallel/select.go +64 -42
  46. package/engine/internal/state/cursor.go +5 -5
  47. package/engine/main.go +2 -1
  48. package/pack/.claude/agents/devrites-proof-runner.md +16 -9
  49. package/pack/.claude/skills/devrites-lib/SKILL.md +2 -0
  50. package/pack/.claude/skills/devrites-lib/reference/candidate-integrity.md +7 -3
  51. package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +3 -0
  52. package/pack/.claude/skills/devrites-lib/reference/parallel-workspaces.md +202 -0
  53. package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +9 -12
  54. package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +7 -3
  55. package/pack/.claude/skills/devrites-lib/reference/standards/context-hygiene.md +1 -1
  56. package/pack/.claude/skills/devrites-lib/reference/standards/gates.md +18 -9
  57. package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +10 -0
  58. package/pack/.claude/skills/rite-autocomplete/SKILL.md +13 -10
  59. package/pack/.claude/skills/rite-autocomplete/reference/lookahead.md +4 -4
  60. package/pack/.claude/skills/rite-autocomplete/reference/loop.md +13 -9
  61. package/pack/.claude/skills/rite-build/SKILL.md +13 -10
  62. package/pack/.claude/skills/rite-build/reference/afk-discipline.md +1 -1
  63. package/pack/.claude/skills/rite-build/reference/checkpoint.md +1 -1
  64. package/pack/.claude/skills/rite-build/reference/parallel-batch.md +60 -39
  65. package/pack/.claude/skills/rite-build/reference/phase-contract.md +8 -5
  66. package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +7 -7
  67. package/pack/.claude/skills/rite-clarify/SKILL.md +2 -2
  68. package/pack/.claude/skills/rite-converge/SKILL.md +4 -4
  69. package/pack/.claude/skills/rite-define/SKILL.md +7 -3
  70. package/pack/.claude/skills/rite-define/reference/plan-template.md +4 -2
  71. package/pack/.claude/skills/rite-plan/SKILL.md +11 -8
  72. package/pack/.claude/skills/rite-plan/reference/dependency-graph.md +9 -2
  73. package/pack/.claude/skills/rite-plan/reference/slicing.md +2 -0
  74. package/pack/.claude/skills/rite-polish/SKILL.md +3 -3
  75. package/pack/.claude/skills/rite-prove/SKILL.md +9 -5
  76. package/pack/.claude/skills/rite-resolve/SKILL.md +3 -3
  77. package/pack/.claude/skills/rite-resolve/reference/answer-protocol.md +2 -0
  78. package/pack/.claude/skills/rite-review/SKILL.md +4 -3
  79. package/pack/.claude/skills/rite-review/reference/feature-scoped-review.md +2 -2
  80. package/pack/.claude/skills/rite-seal/SKILL.md +1 -1
  81. package/pack/.claude/skills/rite-seal/reference/phase-contract.md +1 -1
  82. package/pack/.claude/skills/rite-ship/SKILL.md +2 -2
  83. package/pack/.claude/skills/rite-ship/reference/git-ship.md +2 -2
  84. package/pack/.claude/skills/rite-spec/SKILL.md +8 -5
  85. package/pack/.claude/skills/rite-spec/reference/state-workspace.md +5 -0
  86. package/pack/.claude/skills/rite-temper/SKILL.md +3 -3
  87. package/pack/.claude/skills/rite-vet/SKILL.md +9 -5
  88. package/pack/.claude/skills/rite-vet/reference/review-axes.md +12 -5
  89. package/pack/generated/claude/agents/devrites-proof-runner.md +16 -9
  90. package/pack/generated/claude/skills/devrites-lib/SKILL.md +2 -0
  91. package/pack/generated/claude/skills/devrites-lib/reference/candidate-integrity.md +7 -3
  92. package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +3 -0
  93. package/pack/generated/claude/skills/devrites-lib/reference/parallel-workspaces.md +202 -0
  94. package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +9 -12
  95. package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +7 -3
  96. package/pack/generated/claude/skills/devrites-lib/reference/standards/context-hygiene.md +1 -1
  97. package/pack/generated/claude/skills/devrites-lib/reference/standards/gates.md +18 -9
  98. package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +10 -0
  99. package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +13 -10
  100. package/pack/generated/claude/skills/rite-autocomplete/reference/lookahead.md +4 -4
  101. package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +13 -9
  102. package/pack/generated/claude/skills/rite-build/SKILL.md +13 -10
  103. package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +1 -1
  104. package/pack/generated/claude/skills/rite-build/reference/checkpoint.md +1 -1
  105. package/pack/generated/claude/skills/rite-build/reference/parallel-batch.md +60 -39
  106. package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +8 -5
  107. package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +7 -7
  108. package/pack/generated/claude/skills/rite-clarify/SKILL.md +2 -2
  109. package/pack/generated/claude/skills/rite-converge/SKILL.md +4 -4
  110. package/pack/generated/claude/skills/rite-define/SKILL.md +7 -3
  111. package/pack/generated/claude/skills/rite-define/reference/plan-template.md +4 -2
  112. package/pack/generated/claude/skills/rite-plan/SKILL.md +11 -8
  113. package/pack/generated/claude/skills/rite-plan/reference/dependency-graph.md +9 -2
  114. package/pack/generated/claude/skills/rite-plan/reference/slicing.md +2 -0
  115. package/pack/generated/claude/skills/rite-polish/SKILL.md +3 -3
  116. package/pack/generated/claude/skills/rite-prove/SKILL.md +9 -5
  117. package/pack/generated/claude/skills/rite-resolve/SKILL.md +3 -3
  118. package/pack/generated/claude/skills/rite-resolve/reference/answer-protocol.md +2 -0
  119. package/pack/generated/claude/skills/rite-review/SKILL.md +4 -3
  120. package/pack/generated/claude/skills/rite-review/reference/feature-scoped-review.md +2 -2
  121. package/pack/generated/claude/skills/rite-seal/SKILL.md +1 -1
  122. package/pack/generated/claude/skills/rite-seal/reference/phase-contract.md +1 -1
  123. package/pack/generated/claude/skills/rite-ship/SKILL.md +2 -2
  124. package/pack/generated/claude/skills/rite-ship/reference/git-ship.md +2 -2
  125. package/pack/generated/claude/skills/rite-spec/SKILL.md +8 -5
  126. package/pack/generated/claude/skills/rite-spec/reference/state-workspace.md +5 -0
  127. package/pack/generated/claude/skills/rite-temper/SKILL.md +3 -3
  128. package/pack/generated/claude/skills/rite-vet/SKILL.md +9 -5
  129. package/pack/generated/claude/skills/rite-vet/reference/review-axes.md +12 -5
  130. package/pack/generated/codex/agents/devrites-proof-runner.toml +16 -9
  131. package/pack/generated/codex/skills/devrites-lib/SKILL.md +2 -0
  132. package/pack/generated/codex/skills/devrites-lib/reference/candidate-integrity.md +7 -3
  133. package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +3 -0
  134. package/pack/generated/codex/skills/devrites-lib/reference/parallel-workspaces.md +202 -0
  135. package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +9 -12
  136. package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +7 -3
  137. package/pack/generated/codex/skills/devrites-lib/reference/standards/context-hygiene.md +1 -1
  138. package/pack/generated/codex/skills/devrites-lib/reference/standards/gates.md +18 -9
  139. package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +10 -0
  140. package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +13 -10
  141. package/pack/generated/codex/skills/rite-autocomplete/reference/lookahead.md +4 -4
  142. package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +13 -9
  143. package/pack/generated/codex/skills/rite-build/SKILL.md +13 -10
  144. package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +1 -1
  145. package/pack/generated/codex/skills/rite-build/reference/checkpoint.md +1 -1
  146. package/pack/generated/codex/skills/rite-build/reference/parallel-batch.md +60 -39
  147. package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +8 -5
  148. package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +7 -7
  149. package/pack/generated/codex/skills/rite-clarify/SKILL.md +2 -2
  150. package/pack/generated/codex/skills/rite-converge/SKILL.md +4 -4
  151. package/pack/generated/codex/skills/rite-define/SKILL.md +7 -3
  152. package/pack/generated/codex/skills/rite-define/reference/plan-template.md +4 -2
  153. package/pack/generated/codex/skills/rite-plan/SKILL.md +11 -8
  154. package/pack/generated/codex/skills/rite-plan/reference/dependency-graph.md +9 -2
  155. package/pack/generated/codex/skills/rite-plan/reference/slicing.md +2 -0
  156. package/pack/generated/codex/skills/rite-polish/SKILL.md +3 -3
  157. package/pack/generated/codex/skills/rite-prove/SKILL.md +9 -5
  158. package/pack/generated/codex/skills/rite-resolve/SKILL.md +3 -3
  159. package/pack/generated/codex/skills/rite-resolve/reference/answer-protocol.md +2 -0
  160. package/pack/generated/codex/skills/rite-review/SKILL.md +4 -3
  161. package/pack/generated/codex/skills/rite-review/reference/feature-scoped-review.md +2 -2
  162. package/pack/generated/codex/skills/rite-seal/SKILL.md +1 -1
  163. package/pack/generated/codex/skills/rite-seal/reference/phase-contract.md +1 -1
  164. package/pack/generated/codex/skills/rite-ship/SKILL.md +2 -2
  165. package/pack/generated/codex/skills/rite-ship/reference/git-ship.md +2 -2
  166. package/pack/generated/codex/skills/rite-spec/SKILL.md +8 -5
  167. package/pack/generated/codex/skills/rite-spec/reference/state-workspace.md +5 -0
  168. package/pack/generated/codex/skills/rite-temper/SKILL.md +3 -3
  169. package/pack/generated/codex/skills/rite-vet/SKILL.md +9 -5
  170. package/pack/generated/codex/skills/rite-vet/reference/review-axes.md +12 -5
  171. package/pack/generated/devin/agents/devrites-proof-runner.md +16 -9
  172. package/pack/generated/devin/skills/devrites-lib/SKILL.md +2 -0
  173. package/pack/generated/devin/skills/devrites-lib/reference/candidate-integrity.md +7 -3
  174. package/pack/generated/devin/skills/devrites-lib/reference/parallel-dispatch.md +3 -0
  175. package/pack/generated/devin/skills/devrites-lib/reference/parallel-workspaces.md +202 -0
  176. package/pack/generated/devin/skills/devrites-lib/reference/standards/afk-hitl.md +9 -12
  177. package/pack/generated/devin/skills/devrites-lib/reference/standards/agents.md +7 -3
  178. package/pack/generated/devin/skills/devrites-lib/reference/standards/context-hygiene.md +1 -1
  179. package/pack/generated/devin/skills/devrites-lib/reference/standards/gates.md +18 -9
  180. package/pack/generated/devin/skills/devrites-lib/reference/workspace-artifact-schema.md +10 -0
  181. package/pack/generated/devin/skills/rite-autocomplete/SKILL.md +13 -10
  182. package/pack/generated/devin/skills/rite-autocomplete/reference/lookahead.md +4 -4
  183. package/pack/generated/devin/skills/rite-autocomplete/reference/loop.md +13 -9
  184. package/pack/generated/devin/skills/rite-build/SKILL.md +13 -10
  185. package/pack/generated/devin/skills/rite-build/reference/afk-discipline.md +1 -1
  186. package/pack/generated/devin/skills/rite-build/reference/checkpoint.md +1 -1
  187. package/pack/generated/devin/skills/rite-build/reference/parallel-batch.md +60 -39
  188. package/pack/generated/devin/skills/rite-build/reference/phase-contract.md +8 -5
  189. package/pack/generated/devin/skills/rite-build/reference/wright-dispatch.md +7 -7
  190. package/pack/generated/devin/skills/rite-clarify/SKILL.md +2 -2
  191. package/pack/generated/devin/skills/rite-converge/SKILL.md +4 -4
  192. package/pack/generated/devin/skills/rite-define/SKILL.md +7 -3
  193. package/pack/generated/devin/skills/rite-define/reference/plan-template.md +4 -2
  194. package/pack/generated/devin/skills/rite-plan/SKILL.md +11 -8
  195. package/pack/generated/devin/skills/rite-plan/reference/dependency-graph.md +9 -2
  196. package/pack/generated/devin/skills/rite-plan/reference/slicing.md +2 -0
  197. package/pack/generated/devin/skills/rite-polish/SKILL.md +3 -3
  198. package/pack/generated/devin/skills/rite-prove/SKILL.md +9 -5
  199. package/pack/generated/devin/skills/rite-resolve/SKILL.md +3 -3
  200. package/pack/generated/devin/skills/rite-resolve/reference/answer-protocol.md +2 -0
  201. package/pack/generated/devin/skills/rite-review/SKILL.md +4 -3
  202. package/pack/generated/devin/skills/rite-review/reference/feature-scoped-review.md +2 -2
  203. package/pack/generated/devin/skills/rite-seal/SKILL.md +1 -1
  204. package/pack/generated/devin/skills/rite-seal/reference/phase-contract.md +1 -1
  205. package/pack/generated/devin/skills/rite-ship/SKILL.md +2 -2
  206. package/pack/generated/devin/skills/rite-ship/reference/git-ship.md +2 -2
  207. package/pack/generated/devin/skills/rite-spec/SKILL.md +8 -5
  208. package/pack/generated/devin/skills/rite-spec/reference/state-workspace.md +5 -0
  209. package/pack/generated/devin/skills/rite-temper/SKILL.md +3 -3
  210. package/pack/generated/devin/skills/rite-vet/SKILL.md +9 -5
  211. package/pack/generated/devin/skills/rite-vet/reference/review-axes.md +12 -5
  212. package/pack/generated/dsh/agents/devrites-proof-runner.md +16 -9
  213. package/pack/generated/dsh/runtime/cordis.patch.yml +1 -1
  214. package/pack/generated/dsh/skills/devrites-lib/SKILL.md +2 -0
  215. package/pack/generated/dsh/skills/devrites-lib/reference/candidate-integrity.md +7 -3
  216. package/pack/generated/dsh/skills/devrites-lib/reference/parallel-dispatch.md +3 -0
  217. package/pack/generated/dsh/skills/devrites-lib/reference/parallel-workspaces.md +202 -0
  218. package/pack/generated/dsh/skills/devrites-lib/reference/standards/afk-hitl.md +9 -12
  219. package/pack/generated/dsh/skills/devrites-lib/reference/standards/agents.md +7 -3
  220. package/pack/generated/dsh/skills/devrites-lib/reference/standards/context-hygiene.md +1 -1
  221. package/pack/generated/dsh/skills/devrites-lib/reference/standards/gates.md +18 -9
  222. package/pack/generated/dsh/skills/devrites-lib/reference/workspace-artifact-schema.md +10 -0
  223. package/pack/generated/dsh/skills/rite-autocomplete/SKILL.md +13 -10
  224. package/pack/generated/dsh/skills/rite-autocomplete/reference/lookahead.md +4 -4
  225. package/pack/generated/dsh/skills/rite-autocomplete/reference/loop.md +13 -9
  226. package/pack/generated/dsh/skills/rite-build/SKILL.md +13 -10
  227. package/pack/generated/dsh/skills/rite-build/reference/afk-discipline.md +1 -1
  228. package/pack/generated/dsh/skills/rite-build/reference/checkpoint.md +1 -1
  229. package/pack/generated/dsh/skills/rite-build/reference/parallel-batch.md +60 -39
  230. package/pack/generated/dsh/skills/rite-build/reference/phase-contract.md +8 -5
  231. package/pack/generated/dsh/skills/rite-build/reference/wright-dispatch.md +7 -7
  232. package/pack/generated/dsh/skills/rite-clarify/SKILL.md +2 -2
  233. package/pack/generated/dsh/skills/rite-converge/SKILL.md +4 -4
  234. package/pack/generated/dsh/skills/rite-define/SKILL.md +7 -3
  235. package/pack/generated/dsh/skills/rite-define/reference/plan-template.md +4 -2
  236. package/pack/generated/dsh/skills/rite-plan/SKILL.md +11 -8
  237. package/pack/generated/dsh/skills/rite-plan/reference/dependency-graph.md +9 -2
  238. package/pack/generated/dsh/skills/rite-plan/reference/slicing.md +2 -0
  239. package/pack/generated/dsh/skills/rite-polish/SKILL.md +3 -3
  240. package/pack/generated/dsh/skills/rite-prove/SKILL.md +9 -5
  241. package/pack/generated/dsh/skills/rite-resolve/SKILL.md +3 -3
  242. package/pack/generated/dsh/skills/rite-resolve/reference/answer-protocol.md +2 -0
  243. package/pack/generated/dsh/skills/rite-review/SKILL.md +4 -3
  244. package/pack/generated/dsh/skills/rite-review/reference/feature-scoped-review.md +2 -2
  245. package/pack/generated/dsh/skills/rite-seal/SKILL.md +1 -1
  246. package/pack/generated/dsh/skills/rite-seal/reference/phase-contract.md +1 -1
  247. package/pack/generated/dsh/skills/rite-ship/SKILL.md +2 -2
  248. package/pack/generated/dsh/skills/rite-ship/reference/git-ship.md +2 -2
  249. package/pack/generated/dsh/skills/rite-spec/SKILL.md +8 -5
  250. package/pack/generated/dsh/skills/rite-spec/reference/state-workspace.md +5 -0
  251. package/pack/generated/dsh/skills/rite-temper/SKILL.md +3 -3
  252. package/pack/generated/dsh/skills/rite-vet/SKILL.md +9 -5
  253. package/pack/generated/dsh/skills/rite-vet/reference/review-axes.md +12 -5
  254. package/pack/generated/omp/agents/devrites-proof-runner.md +16 -9
  255. package/pack/generated/omp/commands/rite-build.md +1 -1
  256. package/pack/generated/omp/skills/devrites-lib/SKILL.md +2 -0
  257. package/pack/generated/omp/skills/devrites-lib/reference/candidate-integrity.md +7 -3
  258. package/pack/generated/omp/skills/devrites-lib/reference/parallel-dispatch.md +3 -0
  259. package/pack/generated/omp/skills/devrites-lib/reference/parallel-workspaces.md +202 -0
  260. package/pack/generated/omp/skills/devrites-lib/reference/standards/afk-hitl.md +9 -12
  261. package/pack/generated/omp/skills/devrites-lib/reference/standards/agents.md +11 -3
  262. package/pack/generated/omp/skills/devrites-lib/reference/standards/context-hygiene.md +1 -1
  263. package/pack/generated/omp/skills/devrites-lib/reference/standards/gates.md +18 -9
  264. package/pack/generated/omp/skills/devrites-lib/reference/workspace-artifact-schema.md +10 -0
  265. package/pack/generated/omp/skills/rite-autocomplete/SKILL.md +13 -10
  266. package/pack/generated/omp/skills/rite-autocomplete/reference/lookahead.md +4 -4
  267. package/pack/generated/omp/skills/rite-autocomplete/reference/loop.md +13 -9
  268. package/pack/generated/omp/skills/rite-build/SKILL.md +13 -10
  269. package/pack/generated/omp/skills/rite-build/reference/afk-discipline.md +1 -1
  270. package/pack/generated/omp/skills/rite-build/reference/checkpoint.md +1 -1
  271. package/pack/generated/omp/skills/rite-build/reference/parallel-batch.md +60 -39
  272. package/pack/generated/omp/skills/rite-build/reference/phase-contract.md +8 -5
  273. package/pack/generated/omp/skills/rite-build/reference/wright-dispatch.md +7 -7
  274. package/pack/generated/omp/skills/rite-clarify/SKILL.md +2 -2
  275. package/pack/generated/omp/skills/rite-converge/SKILL.md +4 -4
  276. package/pack/generated/omp/skills/rite-define/SKILL.md +7 -3
  277. package/pack/generated/omp/skills/rite-define/reference/plan-template.md +4 -2
  278. package/pack/generated/omp/skills/rite-plan/SKILL.md +11 -8
  279. package/pack/generated/omp/skills/rite-plan/reference/dependency-graph.md +9 -2
  280. package/pack/generated/omp/skills/rite-plan/reference/slicing.md +2 -0
  281. package/pack/generated/omp/skills/rite-polish/SKILL.md +3 -3
  282. package/pack/generated/omp/skills/rite-prove/SKILL.md +9 -5
  283. package/pack/generated/omp/skills/rite-resolve/SKILL.md +3 -3
  284. package/pack/generated/omp/skills/rite-resolve/reference/answer-protocol.md +2 -0
  285. package/pack/generated/omp/skills/rite-review/SKILL.md +4 -3
  286. package/pack/generated/omp/skills/rite-review/reference/feature-scoped-review.md +2 -2
  287. package/pack/generated/omp/skills/rite-seal/SKILL.md +1 -1
  288. package/pack/generated/omp/skills/rite-seal/reference/phase-contract.md +1 -1
  289. package/pack/generated/omp/skills/rite-ship/SKILL.md +2 -2
  290. package/pack/generated/omp/skills/rite-ship/reference/git-ship.md +2 -2
  291. package/pack/generated/omp/skills/rite-spec/SKILL.md +8 -5
  292. package/pack/generated/omp/skills/rite-spec/reference/state-workspace.md +5 -0
  293. package/pack/generated/omp/skills/rite-temper/SKILL.md +3 -3
  294. package/pack/generated/omp/skills/rite-vet/SKILL.md +9 -5
  295. package/pack/generated/omp/skills/rite-vet/reference/review-axes.md +12 -5
  296. package/pack/generated/pi/agents/devrites-proof-runner.md +16 -9
  297. package/pack/generated/pi/prompts/rite-build.md +1 -1
  298. package/pack/generated/pi/skills/devrites-lib/SKILL.md +2 -0
  299. package/pack/generated/pi/skills/devrites-lib/reference/candidate-integrity.md +7 -3
  300. package/pack/generated/pi/skills/devrites-lib/reference/parallel-dispatch.md +3 -0
  301. package/pack/generated/pi/skills/devrites-lib/reference/parallel-workspaces.md +202 -0
  302. package/pack/generated/pi/skills/devrites-lib/reference/standards/afk-hitl.md +9 -12
  303. package/pack/generated/pi/skills/devrites-lib/reference/standards/agents.md +7 -3
  304. package/pack/generated/pi/skills/devrites-lib/reference/standards/context-hygiene.md +1 -1
  305. package/pack/generated/pi/skills/devrites-lib/reference/standards/gates.md +18 -9
  306. package/pack/generated/pi/skills/devrites-lib/reference/workspace-artifact-schema.md +10 -0
  307. package/pack/generated/pi/skills/rite-autocomplete/SKILL.md +13 -10
  308. package/pack/generated/pi/skills/rite-autocomplete/reference/lookahead.md +4 -4
  309. package/pack/generated/pi/skills/rite-autocomplete/reference/loop.md +13 -9
  310. package/pack/generated/pi/skills/rite-build/SKILL.md +13 -10
  311. package/pack/generated/pi/skills/rite-build/reference/afk-discipline.md +1 -1
  312. package/pack/generated/pi/skills/rite-build/reference/checkpoint.md +1 -1
  313. package/pack/generated/pi/skills/rite-build/reference/parallel-batch.md +60 -39
  314. package/pack/generated/pi/skills/rite-build/reference/phase-contract.md +8 -5
  315. package/pack/generated/pi/skills/rite-build/reference/wright-dispatch.md +7 -7
  316. package/pack/generated/pi/skills/rite-clarify/SKILL.md +2 -2
  317. package/pack/generated/pi/skills/rite-converge/SKILL.md +4 -4
  318. package/pack/generated/pi/skills/rite-define/SKILL.md +7 -3
  319. package/pack/generated/pi/skills/rite-define/reference/plan-template.md +4 -2
  320. package/pack/generated/pi/skills/rite-plan/SKILL.md +11 -8
  321. package/pack/generated/pi/skills/rite-plan/reference/dependency-graph.md +9 -2
  322. package/pack/generated/pi/skills/rite-plan/reference/slicing.md +2 -0
  323. package/pack/generated/pi/skills/rite-polish/SKILL.md +3 -3
  324. package/pack/generated/pi/skills/rite-prove/SKILL.md +9 -5
  325. package/pack/generated/pi/skills/rite-resolve/SKILL.md +3 -3
  326. package/pack/generated/pi/skills/rite-resolve/reference/answer-protocol.md +2 -0
  327. package/pack/generated/pi/skills/rite-review/SKILL.md +4 -3
  328. package/pack/generated/pi/skills/rite-review/reference/feature-scoped-review.md +2 -2
  329. package/pack/generated/pi/skills/rite-seal/SKILL.md +1 -1
  330. package/pack/generated/pi/skills/rite-seal/reference/phase-contract.md +1 -1
  331. package/pack/generated/pi/skills/rite-ship/SKILL.md +2 -2
  332. package/pack/generated/pi/skills/rite-ship/reference/git-ship.md +2 -2
  333. package/pack/generated/pi/skills/rite-spec/SKILL.md +8 -5
  334. package/pack/generated/pi/skills/rite-spec/reference/state-workspace.md +5 -0
  335. package/pack/generated/pi/skills/rite-temper/SKILL.md +3 -3
  336. package/pack/generated/pi/skills/rite-vet/SKILL.md +9 -5
  337. package/pack/generated/pi/skills/rite-vet/reference/review-axes.md +12 -5
  338. package/package.json +1 -1
  339. package/scripts/build-host-artifacts.sh +5 -6
  340. package/scripts/omp-generate.sh +24 -14
package/CHANGELOG.md CHANGED
@@ -2,6 +2,46 @@
2
2
 
3
3
  All notable changes to DevRites are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and DevRites adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Releases are generated automatically by [semantic-release](https://semantic-release.gitbook.io/) from Conventional Commits on `main`.
4
4
 
5
+ ## [7.3.0](https://github.com/ViktorsBaikers/DevRites/compare/v7.2.8...v7.3.0) (2026-11-01)
6
+
7
+ ### Added
8
+
9
+ * **devrites:** improve parallel throughput and proof integrity ([#203](https://github.com/ViktorsBaikers/DevRites/issues/203)) ([ac9c404](https://github.com/ViktorsBaikers/DevRites/commit/ac9c404908f3b709bfb76205aae0574e89bfcfe3))
10
+
11
+ ## Unreleased
12
+
13
+ ### Added
14
+
15
+ - Pool independent, currently vetted continuation slices under one repository-wide
16
+ parallel controller, with rolling landings and refills across workspace sources.
17
+ - Prune clean integrated worker checkouts without discarding transfer branches,
18
+ proof identities, retained lease rows, or running siblings.
19
+
20
+ ### Fixed
21
+
22
+ - Recover exact recorded parallel landings after interrupted lease persistence;
23
+ preserve late worker edits, ignored data, extra commits, and missing-checkout
24
+ Git metadata during cleanup.
25
+ - Exclude explicitly deferred slices from runnable work; stop inventing integration
26
+ suites from language manifests alone.
27
+ - Verify cached context bytes and frozen review diffs, publish complete artifacts
28
+ atomically, and isolate concurrent freeze/render attempts.
29
+ - Recover missing executed gate transcripts without rerunning valid scoped proof;
30
+ redact sensitive transcript metadata as well as command output.
31
+ - Keep timed-out tests failed even when graceful termination exits successfully.
32
+ - Support drive-qualified Windows paths in reviewer diff bindings.
33
+ - Audit underfilled parallel frontiers through acceptance-preserving Plan/Vet;
34
+ separate independently provable capabilities without dropping producer, proof
35
+ or authority gates.
36
+
37
+ ## [7.2.8](https://github.com/ViktorsBaikers/DevRites/compare/v7.2.7...v7.2.8) (2026-10-31)
38
+
39
+ ### Fixed
40
+
41
+ * **no-release:** close installer evidence and recovery integrity gaps ([#200](https://github.com/ViktorsBaikers/DevRites/issues/200)) ([edb8754](https://github.com/ViktorsBaikers/DevRites/commit/edb8754ecf80d4a0dd83590c5b346787c3647244))
42
+ * **no-release:** select exact OMP specialists and preserve reviewer roles ([#199](https://github.com/ViktorsBaikers/DevRites/issues/199)) ([b31814a](https://github.com/ViktorsBaikers/DevRites/commit/b31814a37d80c45a27d5470ab5464cd93c91f76a))
43
+ * **release:** publish pending installer fixes ([dfd2192](https://github.com/ViktorsBaikers/DevRites/commit/dfd2192d1b7d9da1b0111603760c5eb8f246b9a4))
44
+
5
45
  ## [7.2.7](https://github.com/ViktorsBaikers/DevRites/compare/v7.2.6...v7.2.7) (2026-10-31)
6
46
 
7
47
  ### Fixed
package/README.md CHANGED
@@ -31,7 +31,7 @@ history can't lose it. After you clear the conversation, switch hosts, or hand
31
31
  the feature to another engineer, the next session reads the same plan,
32
32
  decisions, and evidence before it continues.
33
33
 
34
- **Status:** [`v7.2.7`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v7.2.7): see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
34
+ **Status:** [`v7.3.0`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v7.3.0): see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
35
35
 
36
36
  This is the latest published release; `main` may contain unreleased work.
37
37
 
@@ -382,6 +382,11 @@ with `--force`; legacy manifests without hashes also require `--force`.
382
382
  `--force --dry-run` lists the exact destructive actions. Every settings and
383
383
  marker merge is checked before the first write, so a rejected merge (such as a
384
384
  Codex config that already sets top-level `default_permissions`) leaves the project untouched.
385
+ Unmerges receive the same preflight: malformed settings or legacy hooks JSON
386
+ blocks uninstall and dropped-host pruning, including dry runs, before writes.
387
+ Existing files retain their permission bits. Claude permission ownership is
388
+ recorded before settings replacement, so interrupted merges retain the records
389
+ needed to remove installer-added grants on retry and uninstall.
385
390
  Marker-merged files keep user content outside the DevRites block, and
386
391
  `.devrites/` runtime state stays in place. `update` reuses the install flags
387
392
  recorded in the manifest; flags you pass explicitly win and are recorded. The installer refuses symlinks, junctions, and paths that
@@ -116,6 +116,16 @@ Candidate and Seal. A mismatch stops; it is never reinterpreted as equivalent.
116
116
  Fresh literal `GO` and native host approval remain required for each disclosed
117
117
  Git attempt.
118
118
 
119
+ ## Concurrent workspaces
120
+
121
+ Mixed-workspace execution shares a controller, not a candidate or proof ledger.
122
+ Every landing uses `WIP(<source>):` and updates only that source's manifest and
123
+ evidence. Interleaved child checkpoints do not authorize parent-only Ship to
124
+ absorb unfinished child work. The deferred release waits for participating
125
+ workspaces' final proof/Review/Seal, generates the recorded sequence's union
126
+ manifest, and checks exact staged bytes and scope under fresh literal `GO`.
127
+ Retained controller/source leases must be cleaned before archival.
128
+
119
129
  ## Older workspaces
120
130
 
121
131
  Released v1/v2/v3 unfinished workspaces use read-only `/rite-upgrade`. A missing
package/docs/cli.md CHANGED
@@ -304,7 +304,7 @@ selection exits `2`; a malformed/unsafe manifest or candidate mismatch prints
304
304
  - Atomic state operations retain their documented operation-specific nonzero
305
305
  results.
306
306
  - `state close` exits `4` for usage or a missing workspace.
307
- - `state close` exits `3` for a schema refusal.
307
+ - `state close` exits `3` for a schema refusal or a retained controller/source lease.
308
308
  - `state close` exits `5` when an archive already exists.
309
309
  - `state close` exits `1` for an invalid workspace, archive directory, or ACTIVE cursor.
310
310
 
@@ -313,6 +313,12 @@ selection exits `2`; a malformed/unsafe manifest or candidate mismatch prints
313
313
  `DEVRITES_ROOT` selects a project root or `.devrites/` directory.
314
314
  `DEVRITES_WORKSPACE` may select one explicit contained workspace. Mutating
315
315
  commands refuse ambiguous, escaped, symlinked, or otherwise unsafe roots.
316
+ Explicit producer dependencies resolve safely within the selected `DEVRITES_ROOT`
317
+ without changing or redirecting the consumer's workspace override.
318
+ Global controller queries use explicit source slugs in a per-invocation environment
319
+ without a worker's `DEVRITES_WORKSPACE`; conflicting overrides fail closed rather
320
+ than redirecting another workspace's reads. Workspace parallelism keeps one
321
+ controller lease and global writer capacity; it does not broaden Ship approval.
316
322
 
317
323
  Install, update application, and uninstall remain manifest-owned local
318
324
  operations. Direct engine update, shell, and npm may acquire a release candidate;
@@ -50,6 +50,10 @@ The Go surface is intentionally closed and deterministic:
50
50
  | Install/operator | `install`, `update`, `uninstall`, `version` | Direct update acquires latest; npm/bootstrap may supply local candidates; the engine performs manifest-owned local changes. |
51
51
  | Native policy | no engine command | Skills/root own spec grammar re-read, qid allocation, Clarify cursor edits, AFK/recovery accounting, and read-only `/rite-doctor`. |
52
52
 
53
+ `state apply-bundle` merges workspace-relative path aliases into one target:
54
+ `plan.md`, `./plan.md`, and `refs/../plan.md` share base pins and patch hunks.
55
+ Conflicting replacements or base hashes block the entire bundle without writes.
56
+
53
57
  `devrites-engine help` exhaustively lists the operational engine commands.
54
58
  Standard `help`, `-h`, `--help`, `version`, and `--version` forms remain
55
59
  available; each operational command and subcommand also accepts `-h` / `--help`.
@@ -244,8 +248,11 @@ See [`flow.md`](flow.md) for the Mermaid diagrams. The text form is:
244
248
  only the exact-plan Ship approval boundary and never authorizes Git.
245
249
  ```
246
250
 
247
- - Every phase **reads the active workspace first**; if none, it stops and tells
248
- the user to run `/rite-spec <feature>`.
251
+ - Every phase resolves its explicit source workspace before the ACTIVE default.
252
+ Autocomplete keeps ACTIVE on the ordered lifecycle owner while preparing or
253
+ building authorized independent future slices through one global controller.
254
+ Existing `--parallel N` spans those workspaces; no second feature flag is needed.
255
+ See [cross-workspace admission](../pack/.claude/skills/devrites-lib/reference/parallel-workspaces.md).
249
256
  - **Spec Drift Guard** lives in build/prove/polish/review/seal: on drift, stop,
250
257
  record in `drift.md`, and classify. Objective implementation and tool defects
251
258
  use bounded recovery; a wrong durable plan uses `/rite-plan repair`; only a
@@ -17,8 +17,8 @@ workflow strategy.
17
17
  | `check preconditions <slug> [--slice SLICE-###] [--timeout N]` | Run the `test-plan.md` Build-entry preflight rows whose optional `Run at` cell is `vet` (with `--slice`, `pre-dispatch <SLICE>`); `action` rows and rows without the cell never run. Writes one candidate-bound transcript per row under `references/gates/preflight-*/`; a row passes on exit 0. A `pre-dispatch` row whose newest transcript passed is kept, not re-run: it is a pre-edit baseline, so a re-dispatch never runs it against the slice's own edits; changing its command or cwd retires the pass. Exit `3` on any failure or an invalid `Run at` value. |
18
18
  | `check seal <slug>` | Check files required by target Phase `seal`, open human gates, the `tasks.md` slice graph, canonical `AC-###` presence when `tasks.md`/`test-plan.md` are required, the stable Build-input binding, and exact candidate bindings. `check readiness` and `check seal` also block a `scripts/` test driver that a tasks.md Writer allowlist plans or touched-files.md lists when no gates.md `CHECK` runs it and no `Driver waiver: <path> — DEC-### <reason>` line cites a recorded decision; waived drivers print as `note: unexecuted driver (waived by DEC-###): <path>` lines, on pass or block. |
19
19
  | `check path-disjoint [--root <dir>] [<json-file> | -]` | Verify slice path sets are pairwise disjoint. |
20
- | `parallel select --cap <1-10> [--root <dir>] [--slug <slug>] [--from-plan \| <json-file> \| -]` | Choose the greedy path-disjoint subset ≤ cap from supplied ready slices, or with `--from-plan` (needs `--slug`) from the plan: tasks.md slices whose dependencies are built (state.md checkbox, or an evidence.md heading that says that slice was checkpointed plus a `Checkpoint: <sha>` line), with Writer allowlist (else Files likely touched) paths plus the nearest manifest/lockfile when `External dependencies:` names a package (module path, npm scope, backticked name, or a non-toolchain version). With `--slug` and a running lease, the lease's not-yet-landed slices hold cap slots and paths, slices it names are never picked, and only new picks print. |
21
- | `parallel <create\|add\|integrate\|cleanup\|status\|abort\|lease-read\|lease-write\|lease-clear\|record-green>` | Deterministic parallel worktree leases, integration, and cleanup for parallel writer batches. A lease is a pipeline: `integrate --slice <id> --apply-to-control` lands one green sibling onto control (refusing if anything but this lease moved control), and `add` starts new path-disjoint siblings from the current control tip while others still run. |
20
+ | `parallel select --cap <1-10> [--root <dir>] [--slug <controller>] [--from-plan [--workspaces <slug,...>] \| <json-file> \| -]` | Choose a plan-order path-disjoint ready subset, seeded by all retained repository-controller slots and paths. `--from-plan` uses canonical built checkpoints, local and declared workspace producer dependencies, exact write sets and required dependency manifests. The internal `--workspaces` data-source parameter pools recorded forward continuations with current readiness and explicit native-vetted per-slice declarations; blocked/stale/missing candidates print scoped notices without hiding other ready work. Foreign identities print `<workspace>/<slice>`. |
21
+ | `parallel <create\|add\|integrate\|prune\|cleanup\|status\|abort\|lease-read\|lease-write\|lease-clear\|record-green>` | One repository controller owns isolated workers across source workspaces. `create` accepts a single initial worker; `create`/`add --cap N` persist the global admission capacity. Explicit `add --cap N --json -` with stdin `[]` updates capacity only; lowering below active count refuses without canceling workers. A completed retained lease can refill at unchanged control tip. `record-green` and per-slice `integrate --slice <workspace/id> --apply-to-control` target source-qualified lanes (bare IDs mean controller lanes); integration keeps exact ancestry/path/dirty-work checks and lands `WIP(<source>):`. `prune` removes only verified clean integrated checkouts, retaining branches, proof identities, lease rows and controller. Status exposes the retained controller and pending landing; cleanup preserves salvage/unknown work. |
22
22
  | `check task-graph <slug>` | Validate `tasks.md` slice dependency graph for cycles, unknown deps, malformed tokens, duplicate IDs, missing `Dependencies`, and `depends_on` mismatch. Prints a non-blocking `ADVISORY size:` line (and records a `size-advisory` metric) for each slice with 12+ Writer allowlist files and no `Size rationale:`. A `Dependencies` ID may carry a `(via <interface>)` suffix (empty or unclosed is a malformed token); prints a non-blocking `ADVISORY edge:` line (and records an `edge-advisory` metric) for each edge with no via, or whose via text is not a case-insensitive substring of the dependency's `Consumes / Produces:`. Prints `schedule: <n> slices in <r> build rounds at cap 10` (the `/rite-build` batch selection replayed over each slice's Writer allowlist, else Files likely touched, plus the manifest parallel select reserves; omitted when a slice has no path) and a non-blocking `ADVISORY hub:` line (top five; records a `hub-advisory` metric) for each path, compared case-folded, that three or more slices without `Serial rationale:` write. Advisories print only when the graph is valid. |
23
23
  | `check regression <slug> [--update]` | Compare the workspace's structural progress facts (phase ordinal, checked ACs, met/abandoned gates, done slices, resolved questions, present artifacts) against the recorded `regression-baseline.json` high-water mark; `--update` ratchets the baseline forward under the feature lock and prints each blessed regression. |
24
24
  | `check continuation [slug]` | Print whether an armed AFK run must invoke its cursor instead of replying. `continuation: required` plus `invoke: <next_action>` when `.devrites/AFK` is a regular file, `status` is `running`, `question_id` is empty, no blocking or escalating question is open, and `next_action` is an internal phase command (`/rite-spec` through `/rite-seal`, including `/rite-plan`, not `/rite-ship` or `/rite-autocomplete`). Otherwise `continuation: clear` with a one-line `reason`. Exit `0` either way. `handoff` prints the same lines. |
@@ -45,7 +45,7 @@ workflow strategy.
45
45
  | `metrics summary [slug] [--by-slice]` | Reduce `metrics.jsonl` into a per-phase roll-up. `--by-slice` reads `dispatch.json` instead: per slice, build wright rounds, slice-bound Vet rechecks, and agent-minutes (role start to `returned_at`; abandoned waves excluded). When the ledger has `resume` events it adds `resumes count=N minutes_to_dispatch=...` (each resume timed to the next `dispatch` event; `none` when another resume came first, `open` when none followed). |
46
46
  | `claim <add\|release\|list\|check>` | Advisory session-scoped file claims in `.devrites/claims.jsonl` (append-only). `add` records intent to write a path set with a TTL (1–240 min, default 30); a live claim by another session exits `3` and names the holder. `release` appends a release event owned by the claiming session. `list` shows every unreleased claim (live, expired, dead) plus one `N released (use --all)` count; `--all` includes released rows; a claim whose holding session has provably exited on this host shows `dead` and no longer conflicts. `check` is the read-only preflight for a path set. Coordination aid only — never a substitute for one-writer-per-worktree. |
47
47
  | `note <add\|list\|check\|rm> <slug> ...` | Anchored workspace notes in `notes.md`: `add <slug> <subject> <quote> <title> [body]` binds a note to a verbatim quote in one repository file and assigns `NOTE-###`; `list` and `check` regrade each anchor `exact`/`moved`/`stale`/`ambiguous`/`lost` by searching the repo for the quote (dependency and workspace trees excluded); `check --repair` rewrites a `moved` subject to its new file; `rm` deletes by ID. `check seal` refuses a malformed `notes.md` and any non-`exact` anchor. |
48
- | `gates <scaffold\|status\|run\|reverify\|lint\|precheck\|attest\|abandon> <slug>` | Operate the `gates.md` acceptance ledger: seed per-AC gates, execute runnable gates bound to `test-plan.md` preflight rows, attest manual gates, and reduce to `all-met`/`not-met`/`handoff`/`malformed`. A gate with `INPUTS:` records its files' content digest and is reused by `run` and `reverify` while they are unchanged. `run`/`reverify --transcripts` writes a redacted, candidate-bound transcript per executed or reused gate under `references/gates/<gate-id>/`. `precheck <slug> --worktree <path> [--slice <SLICE-ID>]` runs every `RUN: writer` gate and `check windows` against the wright's worktree (with `--slice`, it prints `SKIP <gate-id>` for a gate whose id only other unbuilt slices name in `tasks.md`, since gate ids reuse `AC-###` ids; a gate no slice names still runs), prints PASS/FAIL per gate id, exits `3` on any FAIL or on a malformed ledger, and writes no ledger, EVIDENCE line or transcript (`check windows` still appends its metric event); its output is never evidence. |
48
+ | `gates <scaffold\|status\|run\|reverify\|lint\|precheck\|attest\|abandon> <slug>` | Operate the `gates.md` acceptance ledger: seed per-AC gates, execute runnable gates bound to `test-plan.md` preflight rows, attest manual gates, and reduce to `all-met`/`not-met`/`handoff`/`malformed`. A gate with `INPUTS:` records its files' content digest and is reused by `run` and `reverify` while they are unchanged. `run`/`reverify --transcripts` atomically publishes a private redacted v2 executed transcript, or returns its verified originating record unchanged, under `references/gates/<gate-id>/`; legacy v1/reuse-only logs cannot authorize reuse. `precheck <slug> --worktree <path> [--slice <SLICE-ID>]` runs every `RUN: writer` gate and `check windows` against the wright's worktree (with `--slice`, it prints `SKIP <gate-id>` for a gate whose id only other unbuilt slices name in `tasks.md`, since gate ids reuse `AC-###` ids; a gate no slice names still runs), prints PASS/FAIL per gate id, exits `3` on any FAIL or on a malformed ledger, and writes no ledger, EVIDENCE line or transcript (`check windows` still appends its metric event); its output is never evidence. |
49
49
  | `state resolve <qid> "<answer>"` | Resolve an open question and update `questions.md` plus `state.md` atomically. |
50
50
  | `state merge-manifest <slug> [pred...]` | Fold the recorded predecessor chain's manifests into the release candidate manifest. |
51
51
  | `state set <slug> <key>=<value>... [--unset <key>]...` | Write `state.md` cursor fields all-or-nothing under the feature lock. Refuses an unknown `phase`, the engine-owned `schema` row, a pipe or line break in a value, and an overwrite of a saved `return_phase`/`return_next_action`. Setting `status=awaiting_human` under `.devrites/AFK` prints each open question the sentinel's `allow_gates` auto-picks. |
@@ -54,10 +54,17 @@ workflow strategy.
54
54
  | `migrate <slug> [--dry-run] [--answer id=choice]` | Normalize a pre-v5 workspace to the current schema; fail-closed, one-shot. |
55
55
  | `secret-scan [--staged] [--stdin] [slug]` | Scan exact staged blobs, stdin, or touched regular files for credential material. |
56
56
  | `open-visual <path-or-name> [--slug <slug>] [--no-open]` | Resolve a local visual HTML file, optionally open it in the OS browser, warn if the sibling outline is missing or inventory ids are absent from HTML, and print agent path tips. No network. |
57
- | `detect commands [--root <dir>] [--json]` | Resolve the repository's own test/lint/vet/build commands: explicit Makefile targets first, then `package.json` scripts, then language-manifest fallbacks, plus the lockfile-derived package manager. Read-only, no installs, no execution. |
57
+ | `detect commands [--root <dir>] [--json]` | Resolve the repository's own test/lint/vet/build commands: explicit Makefile targets first, then `package.json` scripts, then language-manifest fallbacks, plus the lockfile-derived package manager. Integration stays unresolved without an explicit repository target or script; a language manifest does not prove a separate integration suite. Read-only, no installs, no execution. |
58
58
  | `overhaul <records\|admit\|snapshot\|score\|bench\|render> ...` | Deterministic tools behind the standalone `/overhaul` skill: run-record generations and cross-record validation, worker-receipt admission and quote anchoring, index-safe baseline snapshots and per-attempt deltas, exact-rational readiness scoring, benchmark ratio intervals, and escaped offline review/report views. Operates only on explicit run-area and repository paths. See [Overhaul tools](#overhaul-tools). |
59
59
  | `version` | Print the engine version. |
60
60
 
61
+ For `context --role`, optional `devrites-` prefixes and `.lane` suffixes resolve
62
+ the base specialist's contract, workspace read-set, and role-specific rules.
63
+ The full label remains in bundle filenames and attribution. Reviewer
64
+ `dispatch return` requires `--result <file>` or an explicit
65
+ `--outcome findings|no-findings|gap`; omitting both refuses the return without
66
+ changing the wave or releasing its claim. Non-reviewer returns are unchanged.
67
+
61
68
  `help`, `-h`, and `--help` print this operational inventory. Each operational
62
69
  command and subcommand also accepts `-h` / `--help` and prints that command's
63
70
  usage to stdout without requiring a workspace. `version` and `--version` print
@@ -66,6 +73,45 @@ engine has no compatibility aliases or tombstones. The `add`/`upgrade`/`remove`
66
73
  conveniences belong only to the `npx devrites` adapter, not to the engine
67
74
  command namespace.
68
75
 
76
+ ## State and evidence safety
77
+
78
+ - `state set` resolves known cursor aliases before checking protected fields
79
+ and duplicate keys. Underscore variants cannot bypass phase, schema, or
80
+ saved-return-cursor protections; extension keys retain their spelling.
81
+ - `state resolve` ignores fenced examples when matching and removing an
82
+ Awaiting-human section. Resolving another question leaves the live wait intact.
83
+ - `state close` reads the physical `ACTIVE` pointer under the feature lock;
84
+ `DEVRITES_WORKSPACE` cannot make it clear another feature's pointer.
85
+ - `gates run` and `reverify` snapshot every declared `INPUTS` dependency around
86
+ the actual shared CHECK execution, recheck during locked writeback, and
87
+ invalidate earlier passes if later checks move their inputs.
88
+ Missing or changed inputs cannot certify a pass. Execution, discarded-result,
89
+ or evidence-write failures exit `3`, even if an older ledger still reads met.
90
+ - Parallel integration records exact landing intent before control FF. A matching
91
+ retry reconciles that landing once; external HEAD/ref movement still blocks.
92
+ Pending intent cannot be replaced or cleared through raw lease commands.
93
+ `prune` and normal/forced cleanup preserve late edits, ignored/untracked data,
94
+ unexpected worker tips and unknown checkouts rather than forcing their removal.
95
+ Missing registered checkouts retain their Git index and metadata; completed
96
+ cleanup releases the lease and reports recovery rather than discarding them.
97
+ - Context cache reuse verifies the actual regular bundle bytes and private mode,
98
+ not the digest sidecar alone. Workspace sources are bounded and acquired once
99
+ per invocation; unsafe reads fail instead of becoming omitted guidance.
100
+ Managed output stays confined; explicit external `--out` remains supported.
101
+ Windows cannot prove POSIX owner-only mode through Go's `FileMode`; repeat
102
+ context requests rebuild instead of falsely certifying a private cache hit.
103
+ - Frozen diff bytes must match their recorded SHA-256 at packet and dispatch
104
+ validation. Manually authored final reviewer packets may still name `.diff`
105
+ or `.patch` files, but must include `diff <64hex> <path>` binding rows.
106
+ Binding paths use `/` on every host, including drive-qualified Windows paths.
107
+ Same-wave freeze publication is serialized; each renderer owns its lint draft.
108
+ - `gates run`/`reverify --transcripts` reuse only a complete passing executed
109
+ origin matching the gate definition, recorded output identity and declared
110
+ inputs. Missing origin reruns only affected approved checks; missing approval
111
+ blocks instead of borrowing an old checkbox. Valid redacted/truncated origins
112
+ remain reusable, with their historical candidate identity. Transcript metadata
113
+ and output are redacted; publication is atomic and private.
114
+
69
115
  ## Check boundary
70
116
 
71
117
  The candidate gate validates and hashes path/state/type/mode/content identity;
@@ -37,6 +37,15 @@ Skills name the exact role and bounded task in normal language. The host owns
37
37
  internal spawn fields, scheduling, waiting, follow-ups, and result delivery.
38
38
  DevRites does not parse rollout logs or maintain dispatch receipts.
39
39
 
40
+ On OMP, each `task` item selects its specialist through `agent`, including every
41
+ item in a `tasks[]` batch: `devrites-code-reviewer`, `devrites-test-analyst`, or
42
+ `devrites-slice-wright` for those roles. Writing “you are…” in a task or naming it
43
+ after a specialist does not select that profile. Lane suffixes stay on engine
44
+ role labels, not native profile names. Check the actual host selector before
45
+ admitting results: the engine records declared roles and host handles, not
46
+ authenticated native profile identity. A missing profile remains a gap, not
47
+ permission to select a generic/default child.
48
+
40
49
  Quick, Standard, and Full select evidence/review depth only; they are not agent
41
50
  API versions or execution tiers. The shared contract lives in
42
51
  [`orchestration-profiles.md`](../pack/.claude/skills/devrites-lib/reference/orchestration-profiles.md).
@@ -132,19 +141,32 @@ base before native transfer, then re-proves the reconciled candidate. Missing tr
132
141
  conflict, extra paths, moved base, or cleanup failure stops with worktree evidence
133
142
  preserved. No ad hoc copy/cherry-pick/merge occurs from the read-only root.
134
143
 
135
- Isolation does not authorize same-worktree throughput. Parallel writers are allowed
136
- **only** under the `/rite-build` batch path when path-disjoint eligibility, abort-batch,
137
- and a control `parallel-lease.md` apply. `--parallel N` on `/rite-autocomplete`
138
- or `/rite-build` is the batch cap for that run and wins over leftover sentinel
139
- `max_parallel`; `/rite-autocomplete --parallel N` also writes or replaces only
140
- that field. Absent the flag, the sentinel (default cap 10 under
141
- `/rite-autocomplete`) is a **cap**: the run fills it
142
- with the largest eligible set, lands each sibling as soon as its review and proof are
143
- green, refills the freed slot (`parallel add`), and repeats until no pending slice
144
- remains; a one-slice round is serial for that round only (see
145
- [`parallel-batch.md`](../pack/.claude/skills/rite-build/reference/parallel-batch.md)).
146
- Same-worktree multi-writer and root-emulated worktrees remain forbidden; default
147
- `/rite-build` stays one writer across linked worktrees.
144
+ Parallel writers use the `/rite-build` worktree lifecycle: independently vetted
145
+ contracts, disjoint declared/hidden write surfaces, one retained controller lease,
146
+ and per-sibling review/proof before serialized integration. `--parallel N` on
147
+ Autocomplete is one global active-writer cap across authorized sequence workspaces;
148
+ without the flag it uses AFK `max_parallel`, retained lease capacity on resume,
149
+ else 10. No additional user flag is needed. Standalone Build remains scoped to
150
+ its requested workspace.
151
+
152
+ While a writer runs, Autocomplete prepares or re-Vets recorded continuations and
153
+ refills from the whole eligible pool. A future slice needs an explicit, current
154
+ Plan/Vet `Workspace dependencies` declaration; absent or stale declarations never
155
+ become independence merely because files differ. Only durable integrated producer
156
+ checkpoints release dependent work. Human/access/safety gates retain their scope.
157
+
158
+ Each worker keeps its source workspace identity, isolated cwd, candidate, proof,
159
+ state and `WIP(<source>):` checkpoint. Even a lone initial writer is isolated when
160
+ using a parallel-capable controller, so later work can refill without creating
161
+ same-tree co-writers. Explicit `--parallel 1` remains one writer total. Unsupported
162
+ host isolation falls back truthfully to serial execution.
163
+
164
+ The controller drains and cleans its lease before non-lease product corrections,
165
+ shared Polish writes or checkpoints; unrelated control commits are never blessed
166
+ as a new expected tip. Final per-workspace proof/Seal and exact release-union Ship
167
+ approval remain mandatory. See the
168
+ [controller workflow](../pack/.claude/skills/devrites-lib/reference/parallel-workspaces.md)
169
+ and [worktree lifecycle](../pack/.claude/skills/rite-build/reference/parallel-batch.md).
148
170
 
149
171
  ## Engine boundary
150
172
 
package/docs/skills.md CHANGED
@@ -194,6 +194,11 @@ and `Shipped`. Utility commands keep the same compact labels and one-next-action
194
194
  | [`devrites-api-interface`](../pack/.claude/skills/devrites-api-interface/SKILL.md) | Design stable API / interface contracts: REST/GraphQL, module boundaries, type contracts, FE/BE split. | A slice crosses a boundary or defines a public interface. |
195
195
  | [`devrites-debug-recovery`](../pack/.claude/skills/devrites-debug-recovery/SKILL.md) | Reproduce → ranked hypotheses → instrument → fix in scope → regression-test. Caller and recovery count at most three failures per causal fingerprint from context and Dead ends/evidence. | Tests, builds, or runtime checks fail. |
196
196
 
197
+ Under Autocomplete, existing parallel capacity spans authorized sequence
198
+ workspaces. It overlaps future planning/re-Vet with isolated, independently
199
+ admitted writers; standalone Build stays scoped. See the
200
+ [global controller](../pack/.claude/skills/devrites-lib/reference/parallel-workspaces.md).
201
+
197
202
  ### Prove: collect evidence, including browser evidence
198
203
 
199
204
  | Skill | What It Does | Use When |
@@ -27,11 +27,13 @@ Subcommands:
27
27
  scaffold <slug> Create gates.md from spec.md AC ids (only when absent)
28
28
  status <slug> Reduce the ledger without executing; exit 3 unless ALL MET
29
29
  run <slug> [--timeout N] [--transcripts]
30
- Execute unmet runnable gates and record evidence
30
+ Execute unmet gates; reuse unchanged INPUTS evidence
31
31
  reverify <slug> [--timeout N] [--transcripts]
32
- Re-execute every runnable gate, demoting stale passes
33
- (--transcripts writes one redacted, candidate-bound
34
- file per gate under references/gates/<gate-id>/)
32
+ Re-run runnable gates except valid unchanged INPUTS proof
33
+ --transcripts requires current approval and complete
34
+ passing executed origins for reuse; recover missing
35
+ origins by executing only affected approved gates.
36
+ New private redacted records: references/gates/<gate-id>/
35
37
  lint <slug> [--strict] Audit oracle quality without executing
36
38
  precheck <slug> --worktree <path> [--slice <SLICE-ID>]
37
39
  Run every RUN: writer gate, then check windows, in
@@ -160,12 +162,12 @@ func cmdStatus(root string, args []string, stdout, stderr io.Writer) int {
160
162
  fmt.Fprintf(stderr, "gates status: %v\n", err)
161
163
  return ExitBlocked
162
164
  }
163
- return reportStatus(slug, ledgerPath, testPlanPath, stdout, stderr)
165
+ return reportStatus(slug, ledgerPath, testPlanPath, false, stdout, stderr)
164
166
  }
165
167
 
166
168
  // reportStatus prints the stable greppable reduction. It returns ExitOK only
167
- // for a parse-clean ledger with every gate met and none abandoned.
168
- func reportStatus(slug, ledgerPath, testPlanPath string, stdout, stderr io.Writer) int {
169
+ // for a parse-clean ledger with every gate met, none abandoned and no failed attempt.
170
+ func reportStatus(slug, ledgerPath, testPlanPath string, attemptFailed bool, stdout, stderr io.Writer) int {
169
171
  text, err := ReadLedgerFile(ledgerPath)
170
172
  if err != nil {
171
173
  fmt.Fprintf(stderr, "gates status: %v\n", err)
@@ -191,7 +193,7 @@ func reportStatus(slug, ledgerPath, testPlanPath string, stdout, stderr io.Write
191
193
  case reduction.HandoffRequired():
192
194
  fmt.Fprintln(stdout, "result: handoff")
193
195
  return ExitBlocked
194
- case !reduction.AllMet():
196
+ case attemptFailed || !reduction.AllMet():
195
197
  fmt.Fprintln(stdout, "result: not-met")
196
198
  return ExitBlocked
197
199
  default:
@@ -263,12 +265,7 @@ func cmdRun(root string, args []string, reverify bool, stdout, stderr io.Writer)
263
265
  fmt.Fprintf(stderr, "gates %s: %v\n", verb, err)
264
266
  return ExitBlocked
265
267
  }
266
- before := ""
267
- if transcripts {
268
- before = candidateLabel(root, slug)
269
- }
270
- var ran []GateResult
271
- var ranDoc *Document
268
+ attemptFailed := false
272
269
 
273
270
  // The gates lock serializes check execution; the feature lock is held only
274
271
  // to read inputs and per writeback, so dispatch and other workspace writers
@@ -292,15 +289,33 @@ func cmdRun(root string, args []string, reverify bool, stdout, stderr io.Writer)
292
289
  }
293
290
  return nil
294
291
  }
295
- ran, ranDoc = RunGates(context.Background(), project, ledgerPath, doc, approved, reverify, timeout, featureLock), doc
296
- for _, result := range ran {
292
+ options := &RunOptions{WriteLock: featureLock}
293
+ before := ""
294
+ if transcripts {
295
+ options.TranscriptWork = work
296
+ before = candidateLabel(root, slug)
297
+ }
298
+ ran := RunGates(context.Background(), project, ledgerPath, doc, approved, reverify, timeout, options)
299
+ for i, result := range ran {
300
+ if result.Ran && !result.Passed || result.Discarded || result.WriteErr != nil || transcripts && doc.Gates[i].Check != "" && !result.Passed {
301
+ attemptFailed = true
302
+ }
297
303
  switch {
298
304
  case !result.Ran:
299
- fmt.Fprintf(stdout, "gate %s: skipped (%s)\n", result.ID, result.Detail)
305
+ fmt.Fprintf(stdout, "gate %s: skipped (%s)\n", transcriptMetadata(result.ID), transcriptMetadata(result.Detail))
300
306
  case result.Passed && !result.Discarded && result.WriteErr == nil:
301
- fmt.Fprintf(stdout, "gate %s: pass\n", result.ID)
307
+ fmt.Fprintf(stdout, "gate %s: pass\n", transcriptMetadata(result.ID))
302
308
  default:
303
- fmt.Fprintf(stdout, "gate %s: fail (%s)\n", result.ID, result.Detail)
309
+ fmt.Fprintf(stdout, "gate %s: fail (%s)\n", transcriptMetadata(result.ID), transcriptMetadata(result.Detail))
310
+ }
311
+ }
312
+ if transcripts {
313
+ paths, err := writeTranscripts(work, doc, ran, before, candidateLabel(root, slug))
314
+ for _, path := range paths {
315
+ fmt.Fprintf(stdout, "transcript: %s\n", path)
316
+ }
317
+ if err != nil {
318
+ return fmt.Errorf("transcript: %w", err)
304
319
  }
305
320
  }
306
321
  return nil
@@ -309,18 +324,8 @@ func cmdRun(root string, args []string, reverify bool, stdout, stderr io.Writer)
309
324
  fmt.Fprintf(stderr, "gates %s: %v\n", verb, lockErr)
310
325
  return ExitBlocked
311
326
  }
312
- if transcripts && ranDoc != nil {
313
- paths, err := writeTranscripts(work, ranDoc, ran, before, candidateLabel(root, slug))
314
- for _, path := range paths {
315
- fmt.Fprintf(stdout, "transcript: %s\n", path)
316
- }
317
- if err != nil {
318
- fmt.Fprintf(stderr, "gates %s: transcript: %v\n", verb, err)
319
- return ExitBlocked
320
- }
321
- }
322
327
  fmt.Fprintln(stdout, "---")
323
- return reportStatus(slug, ledgerPath, testPlanPath, stdout, stderr)
328
+ return reportStatus(slug, ledgerPath, testPlanPath, attemptFailed, stdout, stderr)
324
329
  }
325
330
 
326
331
  func cmdLint(root string, args []string, stdout, stderr io.Writer) int {
@@ -49,7 +49,7 @@ func PreflightRowsPassed(root, slug string, rows []PreflightRow) (bool, error) {
49
49
  // candidate but the lookup does not compare it: Vet writes workspace artifacts
50
50
  // after the run, and only a change to the row's command or cwd retires a pass.
51
51
  func PreflightPassed(work string, row PreflightRow) bool {
52
- dir := filepath.Join(work, "references", "gates", unsafeNameRE.ReplaceAllString(PreflightGateID(row), "_"))
52
+ dir := filepath.Join(work, "references", "gates", transcriptGateName(PreflightGateID(row)))
53
53
  entries, err := os.ReadDir(dir)
54
54
  if err != nil {
55
55
  return false