devrites 7.1.1 → 7.2.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 (440) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +9 -4
  3. package/docs/dsh.md +46 -0
  4. package/engine/internal/devritespaths/paths.go +2 -0
  5. package/engine/internal/hostpack/hostpack.go +29 -5
  6. package/engine/internal/install/apply.go +14 -2
  7. package/engine/internal/install/install.go +7 -3
  8. package/engine/internal/install/merge.go +1 -0
  9. package/engine/internal/install/preflight.go +9 -2
  10. package/engine/internal/install/update.go +1 -1
  11. package/engine/internal/lib/dispatch_packet.go +1 -1
  12. package/pack/.claude/agents/devrites-upgrade-planner.md +12 -4
  13. package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +21 -4
  14. package/pack/.claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +10 -3
  15. package/pack/.claude/skills/devrites-debug-recovery/reference/regression-test.md +7 -4
  16. package/pack/.claude/skills/devrites-lib/reference/reply-contract.md +11 -11
  17. package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +52 -56
  18. package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +11 -1
  19. package/pack/.claude/skills/devrites-lib/reference/standards/core.md +41 -40
  20. package/pack/.claude/skills/rite-autocomplete/SKILL.md +12 -14
  21. package/pack/.claude/skills/rite-autocomplete/reference/loop.md +34 -38
  22. package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +38 -39
  23. package/pack/.claude/skills/rite-define/SKILL.md +28 -27
  24. package/pack/.claude/skills/rite-plan/SKILL.md +7 -2
  25. package/pack/.claude/skills/rite-plan/reference/replan-and-repair.md +5 -2
  26. package/pack/.claude/skills/rite-resolve/SKILL.md +17 -10
  27. package/pack/.claude/skills/rite-resolve/reference/answer-protocol.md +18 -6
  28. package/pack/.claude/skills/rite-review/SKILL.md +4 -4
  29. package/pack/.claude/skills/rite-review/reference/security-review.md +4 -2
  30. package/pack/.claude/skills/rite-seal/SKILL.md +28 -33
  31. package/pack/.claude/skills/rite-ship/SKILL.md +14 -7
  32. package/pack/.claude/skills/rite-temper/SKILL.md +18 -18
  33. package/pack/.claude/skills/rite-temper/reference/scope-modes.md +6 -7
  34. package/pack/.claude/skills/rite-upgrade/SKILL.md +7 -2
  35. package/pack/.claude/skills/rite-vet/SKILL.md +33 -34
  36. package/pack/generated/README.md +3 -1
  37. package/pack/generated/claude/agents/devrites-upgrade-planner.md +12 -4
  38. package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +21 -4
  39. package/pack/generated/claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +10 -3
  40. package/pack/generated/claude/skills/devrites-debug-recovery/reference/regression-test.md +7 -4
  41. package/pack/generated/claude/skills/devrites-lib/reference/reply-contract.md +11 -11
  42. package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +52 -56
  43. package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +11 -1
  44. package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +41 -40
  45. package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +12 -14
  46. package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +34 -38
  47. package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +38 -39
  48. package/pack/generated/claude/skills/rite-define/SKILL.md +28 -27
  49. package/pack/generated/claude/skills/rite-plan/SKILL.md +7 -2
  50. package/pack/generated/claude/skills/rite-plan/reference/replan-and-repair.md +5 -2
  51. package/pack/generated/claude/skills/rite-resolve/SKILL.md +17 -10
  52. package/pack/generated/claude/skills/rite-resolve/reference/answer-protocol.md +18 -6
  53. package/pack/generated/claude/skills/rite-review/SKILL.md +4 -4
  54. package/pack/generated/claude/skills/rite-review/reference/security-review.md +4 -2
  55. package/pack/generated/claude/skills/rite-seal/SKILL.md +28 -33
  56. package/pack/generated/claude/skills/rite-ship/SKILL.md +14 -7
  57. package/pack/generated/claude/skills/rite-temper/SKILL.md +18 -18
  58. package/pack/generated/claude/skills/rite-temper/reference/scope-modes.md +6 -7
  59. package/pack/generated/claude/skills/rite-upgrade/SKILL.md +7 -2
  60. package/pack/generated/claude/skills/rite-vet/SKILL.md +33 -34
  61. package/pack/generated/codex/agents/devrites-upgrade-planner.toml +12 -4
  62. package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +21 -4
  63. package/pack/generated/codex/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +10 -3
  64. package/pack/generated/codex/skills/devrites-debug-recovery/reference/regression-test.md +7 -4
  65. package/pack/generated/codex/skills/devrites-lib/reference/reply-contract.md +11 -11
  66. package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +52 -56
  67. package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +11 -1
  68. package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +41 -40
  69. package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +12 -14
  70. package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +34 -38
  71. package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +38 -39
  72. package/pack/generated/codex/skills/rite-define/SKILL.md +28 -27
  73. package/pack/generated/codex/skills/rite-plan/SKILL.md +7 -2
  74. package/pack/generated/codex/skills/rite-plan/reference/replan-and-repair.md +5 -2
  75. package/pack/generated/codex/skills/rite-resolve/SKILL.md +17 -10
  76. package/pack/generated/codex/skills/rite-resolve/reference/answer-protocol.md +18 -6
  77. package/pack/generated/codex/skills/rite-review/SKILL.md +4 -4
  78. package/pack/generated/codex/skills/rite-review/reference/security-review.md +4 -2
  79. package/pack/generated/codex/skills/rite-seal/SKILL.md +28 -33
  80. package/pack/generated/codex/skills/rite-ship/SKILL.md +14 -7
  81. package/pack/generated/codex/skills/rite-temper/SKILL.md +18 -18
  82. package/pack/generated/codex/skills/rite-temper/reference/scope-modes.md +6 -7
  83. package/pack/generated/codex/skills/rite-upgrade/SKILL.md +7 -2
  84. package/pack/generated/codex/skills/rite-vet/SKILL.md +33 -34
  85. package/pack/generated/devin/agents/devrites-upgrade-planner.md +12 -4
  86. package/pack/generated/devin/skills/devrites-debug-recovery/SKILL.md +21 -4
  87. package/pack/generated/devin/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +10 -3
  88. package/pack/generated/devin/skills/devrites-debug-recovery/reference/regression-test.md +7 -4
  89. package/pack/generated/devin/skills/devrites-lib/reference/reply-contract.md +11 -11
  90. package/pack/generated/devin/skills/devrites-lib/reference/standards/afk-hitl.md +52 -56
  91. package/pack/generated/devin/skills/devrites-lib/reference/standards/agents.md +11 -1
  92. package/pack/generated/devin/skills/devrites-lib/reference/standards/core.md +41 -40
  93. package/pack/generated/devin/skills/rite-autocomplete/SKILL.md +12 -14
  94. package/pack/generated/devin/skills/rite-autocomplete/reference/loop.md +34 -38
  95. package/pack/generated/devin/skills/rite-autocomplete/reference/stop-conditions.md +38 -39
  96. package/pack/generated/devin/skills/rite-define/SKILL.md +28 -27
  97. package/pack/generated/devin/skills/rite-plan/SKILL.md +7 -2
  98. package/pack/generated/devin/skills/rite-plan/reference/replan-and-repair.md +5 -2
  99. package/pack/generated/devin/skills/rite-resolve/SKILL.md +17 -10
  100. package/pack/generated/devin/skills/rite-resolve/reference/answer-protocol.md +18 -6
  101. package/pack/generated/devin/skills/rite-review/SKILL.md +4 -4
  102. package/pack/generated/devin/skills/rite-review/reference/security-review.md +4 -2
  103. package/pack/generated/devin/skills/rite-seal/SKILL.md +28 -33
  104. package/pack/generated/devin/skills/rite-ship/SKILL.md +14 -7
  105. package/pack/generated/devin/skills/rite-temper/SKILL.md +18 -18
  106. package/pack/generated/devin/skills/rite-temper/reference/scope-modes.md +6 -7
  107. package/pack/generated/devin/skills/rite-upgrade/SKILL.md +7 -2
  108. package/pack/generated/devin/skills/rite-vet/SKILL.md +33 -34
  109. package/pack/generated/dsh/AGENTS.md +20 -0
  110. package/pack/generated/dsh/agents/devrites-code-reviewer.md +180 -0
  111. package/pack/generated/dsh/agents/devrites-devex-reviewer.md +137 -0
  112. package/pack/generated/dsh/agents/devrites-doubt-reviewer.md +100 -0
  113. package/pack/generated/dsh/agents/devrites-evidence-scout.md +93 -0
  114. package/pack/generated/dsh/agents/devrites-frontend-reviewer.md +139 -0
  115. package/pack/generated/dsh/agents/devrites-performance-reviewer.md +142 -0
  116. package/pack/generated/dsh/agents/devrites-plan-drafter.md +113 -0
  117. package/pack/generated/dsh/agents/devrites-plan-reviewer.md +167 -0
  118. package/pack/generated/dsh/agents/devrites-proof-runner.md +101 -0
  119. package/pack/generated/dsh/agents/devrites-retrospector.md +82 -0
  120. package/pack/generated/dsh/agents/devrites-security-auditor.md +146 -0
  121. package/pack/generated/dsh/agents/devrites-simplifier-reviewer.md +113 -0
  122. package/pack/generated/dsh/agents/devrites-slice-wright.md +240 -0
  123. package/pack/generated/dsh/agents/devrites-spec-reviewer.md +105 -0
  124. package/pack/generated/dsh/agents/devrites-strategy-reviewer.md +109 -0
  125. package/pack/generated/dsh/agents/devrites-test-analyst.md +110 -0
  126. package/pack/generated/dsh/agents/devrites-upgrade-planner.md +107 -0
  127. package/pack/generated/dsh/agents/fast-builder.md +92 -0
  128. package/pack/generated/dsh/agents/fast-checker.md +61 -0
  129. package/pack/generated/dsh/agents/fast-critic.md +71 -0
  130. package/pack/generated/dsh/agents/fast-planner.md +95 -0
  131. package/pack/generated/dsh/agents/overhaul-backend-engineer.md +70 -0
  132. package/pack/generated/dsh/agents/overhaul-boundary.md +64 -0
  133. package/pack/generated/dsh/agents/overhaul-craft.md +85 -0
  134. package/pack/generated/dsh/agents/overhaul-frontend-engineer.md +73 -0
  135. package/pack/generated/dsh/agents/overhaul-implementer.md +72 -0
  136. package/pack/generated/dsh/agents/overhaul-recon.md +77 -0
  137. package/pack/generated/dsh/agents/overhaul-specialist.md +67 -0
  138. package/pack/generated/dsh/agents/overhaul-verifier.md +73 -0
  139. package/pack/generated/dsh/runtime/cordis.patch.yml +1450 -0
  140. package/pack/generated/dsh/runtime/specialist.mjs +62 -0
  141. package/pack/generated/dsh/skills/devrites-api-interface/SKILL.md +65 -0
  142. package/pack/generated/dsh/skills/devrites-audit/SKILL.md +60 -0
  143. package/pack/generated/dsh/skills/devrites-browser-proof/SKILL.md +109 -0
  144. package/pack/generated/dsh/skills/devrites-browser-proof/reference/browser-performance.md +19 -0
  145. package/pack/generated/dsh/skills/devrites-browser-proof/reference/visual-verdict.md +38 -0
  146. package/pack/generated/dsh/skills/devrites-debug-recovery/SKILL.md +119 -0
  147. package/pack/generated/dsh/skills/devrites-debug-recovery/reference/build-the-loop.md +58 -0
  148. package/pack/generated/dsh/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +41 -0
  149. package/pack/generated/dsh/skills/devrites-debug-recovery/reference/hypotheses.md +23 -0
  150. package/pack/generated/dsh/skills/devrites-debug-recovery/reference/instrumentation.md +21 -0
  151. package/pack/generated/dsh/skills/devrites-debug-recovery/reference/regression-test.md +33 -0
  152. package/pack/generated/dsh/skills/devrites-debug-recovery/reference/trace.md +25 -0
  153. package/pack/generated/dsh/skills/devrites-doubt/SKILL.md +83 -0
  154. package/pack/generated/dsh/skills/devrites-frontend-craft/SKILL.md +89 -0
  155. package/pack/generated/dsh/skills/devrites-frontend-craft/reference/craft.md +63 -0
  156. package/pack/generated/dsh/skills/devrites-frontend-craft/reference/design-references.md +120 -0
  157. package/pack/generated/dsh/skills/devrites-frontend-craft/reference/fullstack.md +46 -0
  158. package/pack/generated/dsh/skills/devrites-frontend-craft/reference/quality-standards.md +286 -0
  159. package/pack/generated/dsh/skills/devrites-frontend-craft/reference/reuse-first.md +53 -0
  160. package/pack/generated/dsh/skills/devrites-frontend-craft/reference/shape.md +61 -0
  161. package/pack/generated/dsh/skills/devrites-interview/SKILL.md +107 -0
  162. package/pack/generated/dsh/skills/devrites-lib/SKILL.md +98 -0
  163. package/pack/generated/dsh/skills/devrites-lib/reference/candidate-integrity.md +59 -0
  164. package/pack/generated/dsh/skills/devrites-lib/reference/intent-map.md +86 -0
  165. package/pack/generated/dsh/skills/devrites-lib/reference/orchestration-profiles.md +48 -0
  166. package/pack/generated/dsh/skills/devrites-lib/reference/parallel-dispatch.md +184 -0
  167. package/pack/generated/dsh/skills/devrites-lib/reference/reply-contract.md +123 -0
  168. package/pack/generated/dsh/skills/devrites-lib/reference/standards/README.md +70 -0
  169. package/pack/generated/dsh/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md +32 -0
  170. package/pack/generated/dsh/skills/devrites-lib/reference/standards/afk-hitl.md +467 -0
  171. package/pack/generated/dsh/skills/devrites-lib/reference/standards/agents.md +231 -0
  172. package/pack/generated/dsh/skills/devrites-lib/reference/standards/anti-patterns.md +50 -0
  173. package/pack/generated/dsh/skills/devrites-lib/reference/standards/architecture-health.md +64 -0
  174. package/pack/generated/dsh/skills/devrites-lib/reference/standards/assumption-checkpoints.md +42 -0
  175. package/pack/generated/dsh/skills/devrites-lib/reference/standards/audit-coverage.md +107 -0
  176. package/pack/generated/dsh/skills/devrites-lib/reference/standards/browser-proof-checklist.md +37 -0
  177. package/pack/generated/dsh/skills/devrites-lib/reference/standards/ci-cd.md +62 -0
  178. package/pack/generated/dsh/skills/devrites-lib/reference/standards/code-index.md +111 -0
  179. package/pack/generated/dsh/skills/devrites-lib/reference/standards/code-navigation.md +69 -0
  180. package/pack/generated/dsh/skills/devrites-lib/reference/standards/code-review.md +178 -0
  181. package/pack/generated/dsh/skills/devrites-lib/reference/standards/coding-style.md +53 -0
  182. package/pack/generated/dsh/skills/devrites-lib/reference/standards/context-hygiene.md +136 -0
  183. package/pack/generated/dsh/skills/devrites-lib/reference/standards/core.md +202 -0
  184. package/pack/generated/dsh/skills/devrites-lib/reference/standards/data-integrity.md +144 -0
  185. package/pack/generated/dsh/skills/devrites-lib/reference/standards/debug-recovery.md +42 -0
  186. package/pack/generated/dsh/skills/devrites-lib/reference/standards/definition-of-done.md +25 -0
  187. package/pack/generated/dsh/skills/devrites-lib/reference/standards/deprecation.md +49 -0
  188. package/pack/generated/dsh/skills/devrites-lib/reference/standards/developer-experience.md +128 -0
  189. package/pack/generated/dsh/skills/devrites-lib/reference/standards/development-workflow.md +31 -0
  190. package/pack/generated/dsh/skills/devrites-lib/reference/standards/documentation.md +55 -0
  191. package/pack/generated/dsh/skills/devrites-lib/reference/standards/duplicate-code.md +129 -0
  192. package/pack/generated/dsh/skills/devrites-lib/reference/standards/edge-case-trace.md +94 -0
  193. package/pack/generated/dsh/skills/devrites-lib/reference/standards/elicitation.md +114 -0
  194. package/pack/generated/dsh/skills/devrites-lib/reference/standards/error-handling.md +49 -0
  195. package/pack/generated/dsh/skills/devrites-lib/reference/standards/gates.md +159 -0
  196. package/pack/generated/dsh/skills/devrites-lib/reference/standards/git-workflow.md +51 -0
  197. package/pack/generated/dsh/skills/devrites-lib/reference/standards/glossary.md +40 -0
  198. package/pack/generated/dsh/skills/devrites-lib/reference/standards/hooks.md +41 -0
  199. package/pack/generated/dsh/skills/devrites-lib/reference/standards/integration-reliability.md +121 -0
  200. package/pack/generated/dsh/skills/devrites-lib/reference/standards/loop-operations.md +123 -0
  201. package/pack/generated/dsh/skills/devrites-lib/reference/standards/observability.md +90 -0
  202. package/pack/generated/dsh/skills/devrites-lib/reference/standards/one-shot-actions.md +105 -0
  203. package/pack/generated/dsh/skills/devrites-lib/reference/standards/patterns.md +70 -0
  204. package/pack/generated/dsh/skills/devrites-lib/reference/standards/performance.md +88 -0
  205. package/pack/generated/dsh/skills/devrites-lib/reference/standards/principles.md +56 -0
  206. package/pack/generated/dsh/skills/devrites-lib/reference/standards/prose-style.md +127 -0
  207. package/pack/generated/dsh/skills/devrites-lib/reference/standards/release/ship-checklist.md +12 -0
  208. package/pack/generated/dsh/skills/devrites-lib/reference/standards/repository-topology.md +82 -0
  209. package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/README.md +28 -0
  210. package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/ci-workflows.md +50 -0
  211. package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/default.md +42 -0
  212. package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/go.md +47 -0
  213. package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/python.md +46 -0
  214. package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/react.md +55 -0
  215. package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/shell.md +40 -0
  216. package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/stack-profile.md +155 -0
  217. package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/ts-js.md +74 -0
  218. package/pack/generated/dsh/skills/devrites-lib/reference/standards/review-checklist.md +14 -0
  219. package/pack/generated/dsh/skills/devrites-lib/reference/standards/security-checklist.md +30 -0
  220. package/pack/generated/dsh/skills/devrites-lib/reference/standards/security.md +283 -0
  221. package/pack/generated/dsh/skills/devrites-lib/reference/standards/skill-authoring.md +269 -0
  222. package/pack/generated/dsh/skills/devrites-lib/reference/standards/spec-grammar.md +214 -0
  223. package/pack/generated/dsh/skills/devrites-lib/reference/standards/test-proof-checklist.md +18 -0
  224. package/pack/generated/dsh/skills/devrites-lib/reference/standards/testing.md +295 -0
  225. package/pack/generated/dsh/skills/devrites-lib/reference/standards/tooling.md +125 -0
  226. package/pack/generated/dsh/skills/devrites-lib/reference/standards/verification-methods.md +143 -0
  227. package/pack/generated/dsh/skills/devrites-lib/reference/standards/windows.md +60 -0
  228. package/pack/generated/dsh/skills/devrites-lib/reference/standards/workflow-artifacts.md +435 -0
  229. package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/code.md +44 -0
  230. package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/comparison.md +42 -0
  231. package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/diagram.md +51 -0
  232. package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/index.md +66 -0
  233. package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/input.md +46 -0
  234. package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/outline-template.md +106 -0
  235. package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/plan.md +48 -0
  236. package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/slides.md +40 -0
  237. package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/table.md +42 -0
  238. package/pack/generated/dsh/skills/devrites-lib/reference/workspace-artifact-schema.md +312 -0
  239. package/pack/generated/dsh/skills/devrites-prose-craft/SKILL.md +81 -0
  240. package/pack/generated/dsh/skills/devrites-prose-craft/reference/banned-phrases.md +132 -0
  241. package/pack/generated/dsh/skills/devrites-prose-craft/reference/examples.md +136 -0
  242. package/pack/generated/dsh/skills/devrites-prose-craft/reference/structures.md +196 -0
  243. package/pack/generated/dsh/skills/devrites-source-driven/SKILL.md +54 -0
  244. package/pack/generated/dsh/skills/devrites-ux-shape/SKILL.md +135 -0
  245. package/pack/generated/dsh/skills/devrites-ux-shape/reference/brief-template.md +108 -0
  246. package/pack/generated/dsh/skills/devrites-ux-shape/reference/visual-direction-probe.md +50 -0
  247. package/pack/generated/dsh/skills/overhaul/SKILL.md +221 -0
  248. package/pack/generated/dsh/skills/overhaul/references/audit-domains.md +390 -0
  249. package/pack/generated/dsh/skills/overhaul/references/lifecycle.md +314 -0
  250. package/pack/generated/dsh/skills/overhaul/references/orchestration.md +291 -0
  251. package/pack/generated/dsh/skills/overhaul/references/records.md +203 -0
  252. package/pack/generated/dsh/skills/overhaul/references/repair-and-measurement.md +310 -0
  253. package/pack/generated/dsh/skills/overhaul/references/review-and-report.md +139 -0
  254. package/pack/generated/dsh/skills/overhaul/references/scope-and-safety.md +233 -0
  255. package/pack/generated/dsh/skills/overhaul/references/scoring.md +261 -0
  256. package/pack/generated/dsh/skills/overhaul/references/stack-profiles.md +316 -0
  257. package/pack/generated/dsh/skills/rite/SKILL.md +157 -0
  258. package/pack/generated/dsh/skills/rite/reference/menu.md +49 -0
  259. package/pack/generated/dsh/skills/rite-adopt/SKILL.md +64 -0
  260. package/pack/generated/dsh/skills/rite-adopt/reference/adoption.md +25 -0
  261. package/pack/generated/dsh/skills/rite-adopt/reference/anti-patterns.md +19 -0
  262. package/pack/generated/dsh/skills/rite-autocomplete/SKILL.md +167 -0
  263. package/pack/generated/dsh/skills/rite-autocomplete/reference/decision-policy.md +44 -0
  264. package/pack/generated/dsh/skills/rite-autocomplete/reference/lookahead.md +50 -0
  265. package/pack/generated/dsh/skills/rite-autocomplete/reference/loop.md +164 -0
  266. package/pack/generated/dsh/skills/rite-autocomplete/reference/stop-conditions.md +118 -0
  267. package/pack/generated/dsh/skills/rite-build/SKILL.md +126 -0
  268. package/pack/generated/dsh/skills/rite-build/reference/afk-discipline.md +153 -0
  269. package/pack/generated/dsh/skills/rite-build/reference/anti-patterns.md +27 -0
  270. package/pack/generated/dsh/skills/rite-build/reference/checkpoint-protocol.md +115 -0
  271. package/pack/generated/dsh/skills/rite-build/reference/checkpoint.md +79 -0
  272. package/pack/generated/dsh/skills/rite-build/reference/frontend-trigger.md +39 -0
  273. package/pack/generated/dsh/skills/rite-build/reference/one-slice-cycle.md +57 -0
  274. package/pack/generated/dsh/skills/rite-build/reference/output.md +29 -0
  275. package/pack/generated/dsh/skills/rite-build/reference/parallel-batch.md +260 -0
  276. package/pack/generated/dsh/skills/rite-build/reference/phase-contract.md +130 -0
  277. package/pack/generated/dsh/skills/rite-build/reference/spec-drift-guard.md +91 -0
  278. package/pack/generated/dsh/skills/rite-build/reference/tdd.md +27 -0
  279. package/pack/generated/dsh/skills/rite-build/reference/wright-dispatch.md +198 -0
  280. package/pack/generated/dsh/skills/rite-clarify/SKILL.md +104 -0
  281. package/pack/generated/dsh/skills/rite-clarify/reference/anti-patterns.md +24 -0
  282. package/pack/generated/dsh/skills/rite-clarify/reference/decision-coverage.md +56 -0
  283. package/pack/generated/dsh/skills/rite-converge/SKILL.md +167 -0
  284. package/pack/generated/dsh/skills/rite-converge/reference/anti-patterns.md +35 -0
  285. package/pack/generated/dsh/skills/rite-converge/reference/convergence-assessment.md +70 -0
  286. package/pack/generated/dsh/skills/rite-customize/SKILL.md +64 -0
  287. package/pack/generated/dsh/skills/rite-define/SKILL.md +203 -0
  288. package/pack/generated/dsh/skills/rite-define/reference/anti-patterns.md +26 -0
  289. package/pack/generated/dsh/skills/rite-define/reference/gates.md +160 -0
  290. package/pack/generated/dsh/skills/rite-define/reference/plan-template.md +153 -0
  291. package/pack/generated/dsh/skills/rite-doctor/SKILL.md +107 -0
  292. package/pack/generated/dsh/skills/rite-dogfood/SKILL.md +57 -0
  293. package/pack/generated/dsh/skills/rite-explain/SKILL.md +154 -0
  294. package/pack/generated/dsh/skills/rite-explain/reference/intake.md +89 -0
  295. package/pack/generated/dsh/skills/rite-fast/SKILL.md +185 -0
  296. package/pack/generated/dsh/skills/rite-fast/reference/artifacts.md +107 -0
  297. package/pack/generated/dsh/skills/rite-fast/reference/check-and-triage.md +51 -0
  298. package/pack/generated/dsh/skills/rite-frame/SKILL.md +119 -0
  299. package/pack/generated/dsh/skills/rite-frame/reference/failure-modes.md +66 -0
  300. package/pack/generated/dsh/skills/rite-handoff/SKILL.md +117 -0
  301. package/pack/generated/dsh/skills/rite-handoff/reference/handoff-template.md +56 -0
  302. package/pack/generated/dsh/skills/rite-harness/SKILL.md +76 -0
  303. package/pack/generated/dsh/skills/rite-harness/reference/feature-map.md +60 -0
  304. package/pack/generated/dsh/skills/rite-learn/SKILL.md +107 -0
  305. package/pack/generated/dsh/skills/rite-plan/SKILL.md +215 -0
  306. package/pack/generated/dsh/skills/rite-plan/reference/anti-patterns.md +34 -0
  307. package/pack/generated/dsh/skills/rite-plan/reference/dependency-graph.md +48 -0
  308. package/pack/generated/dsh/skills/rite-plan/reference/replan-and-repair.md +114 -0
  309. package/pack/generated/dsh/skills/rite-plan/reference/slicing.md +187 -0
  310. package/pack/generated/dsh/skills/rite-plan/reference/task-breakdown.md +50 -0
  311. package/pack/generated/dsh/skills/rite-polish/SKILL.md +128 -0
  312. package/pack/generated/dsh/skills/rite-polish/reference/adr-promotion.md +11 -0
  313. package/pack/generated/dsh/skills/rite-polish/reference/anti-ai-slop.md +210 -0
  314. package/pack/generated/dsh/skills/rite-polish/reference/anti-patterns.md +30 -0
  315. package/pack/generated/dsh/skills/rite-polish/reference/backend-polish.md +80 -0
  316. package/pack/generated/dsh/skills/rite-polish/reference/browser-polish-evidence.md +33 -0
  317. package/pack/generated/dsh/skills/rite-polish/reference/code.md +87 -0
  318. package/pack/generated/dsh/skills/rite-polish/reference/design-memory.md +117 -0
  319. package/pack/generated/dsh/skills/rite-polish/reference/design-system-discovery.md +8 -0
  320. package/pack/generated/dsh/skills/rite-polish/reference/harden-checklist.md +110 -0
  321. package/pack/generated/dsh/skills/rite-polish/reference/ledger.md +67 -0
  322. package/pack/generated/dsh/skills/rite-polish/reference/ui.md +146 -0
  323. package/pack/generated/dsh/skills/rite-pov/SKILL.md +71 -0
  324. package/pack/generated/dsh/skills/rite-pr-feedback/SKILL.md +61 -0
  325. package/pack/generated/dsh/skills/rite-pressure-test/SKILL.md +76 -0
  326. package/pack/generated/dsh/skills/rite-prototype/SKILL.md +106 -0
  327. package/pack/generated/dsh/skills/rite-prove/SKILL.md +151 -0
  328. package/pack/generated/dsh/skills/rite-prove/reference/acceptance-proof.md +88 -0
  329. package/pack/generated/dsh/skills/rite-prove/reference/anti-patterns.md +25 -0
  330. package/pack/generated/dsh/skills/rite-prove/reference/browser-proof.md +51 -0
  331. package/pack/generated/dsh/skills/rite-prove/reference/failure-triage.md +53 -0
  332. package/pack/generated/dsh/skills/rite-prove/reference/proof-ladder.md +39 -0
  333. package/pack/generated/dsh/skills/rite-prove/reference/test-command-discovery.md +36 -0
  334. package/pack/generated/dsh/skills/rite-quick/SKILL.md +97 -0
  335. package/pack/generated/dsh/skills/rite-resolve/SKILL.md +113 -0
  336. package/pack/generated/dsh/skills/rite-resolve/reference/answer-protocol.md +129 -0
  337. package/pack/generated/dsh/skills/rite-review/SKILL.md +190 -0
  338. package/pack/generated/dsh/skills/rite-review/reference/anti-patterns.md +32 -0
  339. package/pack/generated/dsh/skills/rite-review/reference/cognitive-load.md +90 -0
  340. package/pack/generated/dsh/skills/rite-review/reference/feature-scoped-review.md +26 -0
  341. package/pack/generated/dsh/skills/rite-review/reference/five-axis-review.md +66 -0
  342. package/pack/generated/dsh/skills/rite-review/reference/nielsen-heuristics.md +126 -0
  343. package/pack/generated/dsh/skills/rite-review/reference/performance-checklist.md +99 -0
  344. package/pack/generated/dsh/skills/rite-review/reference/performance-review.md +14 -0
  345. package/pack/generated/dsh/skills/rite-review/reference/security-review.md +44 -0
  346. package/pack/generated/dsh/skills/rite-seal/SKILL.md +99 -0
  347. package/pack/generated/dsh/skills/rite-seal/reference/anti-patterns.md +29 -0
  348. package/pack/generated/dsh/skills/rite-seal/reference/final-evidence.md +41 -0
  349. package/pack/generated/dsh/skills/rite-seal/reference/go-no-go.md +32 -0
  350. package/pack/generated/dsh/skills/rite-seal/reference/output.md +5 -0
  351. package/pack/generated/dsh/skills/rite-seal/reference/phase-contract.md +56 -0
  352. package/pack/generated/dsh/skills/rite-seal/reference/risk-and-rollback.md +56 -0
  353. package/pack/generated/dsh/skills/rite-seal/reference/seal-template.md +32 -0
  354. package/pack/generated/dsh/skills/rite-ship/SKILL.md +101 -0
  355. package/pack/generated/dsh/skills/rite-ship/reference/anti-patterns.md +28 -0
  356. package/pack/generated/dsh/skills/rite-ship/reference/close-out.md +69 -0
  357. package/pack/generated/dsh/skills/rite-ship/reference/git-ship.md +128 -0
  358. package/pack/generated/dsh/skills/rite-ship/reference/rollout.md +62 -0
  359. package/pack/generated/dsh/skills/rite-ship/reference/ship-template.md +40 -0
  360. package/pack/generated/dsh/skills/rite-spec/SKILL.md +169 -0
  361. package/pack/generated/dsh/skills/rite-spec/reference/acceptance-criteria.md +31 -0
  362. package/pack/generated/dsh/skills/rite-spec/reference/ai-spec-template.md +40 -0
  363. package/pack/generated/dsh/skills/rite-spec/reference/anti-patterns.md +27 -0
  364. package/pack/generated/dsh/skills/rite-spec/reference/interview-patterns.md +56 -0
  365. package/pack/generated/dsh/skills/rite-spec/reference/investigation.md +83 -0
  366. package/pack/generated/dsh/skills/rite-spec/reference/question-protocol.md +36 -0
  367. package/pack/generated/dsh/skills/rite-spec/reference/references-intake.md +62 -0
  368. package/pack/generated/dsh/skills/rite-spec/reference/spec-checklists.md +89 -0
  369. package/pack/generated/dsh/skills/rite-spec/reference/spec-template.md +160 -0
  370. package/pack/generated/dsh/skills/rite-spec/reference/state-workspace.md +240 -0
  371. package/pack/generated/dsh/skills/rite-status/SKILL.md +74 -0
  372. package/pack/generated/dsh/skills/rite-temper/SKILL.md +137 -0
  373. package/pack/generated/dsh/skills/rite-temper/reference/anti-patterns.md +30 -0
  374. package/pack/generated/dsh/skills/rite-temper/reference/review-dimensions.md +66 -0
  375. package/pack/generated/dsh/skills/rite-temper/reference/scope-modes.md +52 -0
  376. package/pack/generated/dsh/skills/rite-temper/reference/significance.md +55 -0
  377. package/pack/generated/dsh/skills/rite-temper/reference/strategy-template.md +101 -0
  378. package/pack/generated/dsh/skills/rite-upgrade/SKILL.md +142 -0
  379. package/pack/generated/dsh/skills/rite-vet/SKILL.md +242 -0
  380. package/pack/generated/dsh/skills/rite-vet/reference/anti-patterns.md +43 -0
  381. package/pack/generated/dsh/skills/rite-vet/reference/artifacts.md +248 -0
  382. package/pack/generated/dsh/skills/rite-vet/reference/cross-model.md +19 -0
  383. package/pack/generated/dsh/skills/rite-vet/reference/depth.md +59 -0
  384. package/pack/generated/dsh/skills/rite-vet/reference/eng-lenses.md +48 -0
  385. package/pack/generated/dsh/skills/rite-vet/reference/review-axes.md +210 -0
  386. package/pack/generated/dsh/skills/rite-watch-pr/SKILL.md +87 -0
  387. package/pack/generated/dsh/skills/rite-zoom-out/SKILL.md +76 -0
  388. package/pack/generated/omp/agents/devrites-upgrade-planner.md +12 -4
  389. package/pack/generated/omp/skills/devrites-debug-recovery/SKILL.md +21 -4
  390. package/pack/generated/omp/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +10 -3
  391. package/pack/generated/omp/skills/devrites-debug-recovery/reference/regression-test.md +7 -4
  392. package/pack/generated/omp/skills/devrites-lib/reference/reply-contract.md +11 -11
  393. package/pack/generated/omp/skills/devrites-lib/reference/standards/afk-hitl.md +52 -56
  394. package/pack/generated/omp/skills/devrites-lib/reference/standards/agents.md +11 -1
  395. package/pack/generated/omp/skills/devrites-lib/reference/standards/core.md +41 -40
  396. package/pack/generated/omp/skills/rite-autocomplete/SKILL.md +12 -14
  397. package/pack/generated/omp/skills/rite-autocomplete/reference/loop.md +34 -38
  398. package/pack/generated/omp/skills/rite-autocomplete/reference/stop-conditions.md +38 -39
  399. package/pack/generated/omp/skills/rite-define/SKILL.md +28 -27
  400. package/pack/generated/omp/skills/rite-plan/SKILL.md +7 -2
  401. package/pack/generated/omp/skills/rite-plan/reference/replan-and-repair.md +5 -2
  402. package/pack/generated/omp/skills/rite-resolve/SKILL.md +17 -10
  403. package/pack/generated/omp/skills/rite-resolve/reference/answer-protocol.md +18 -6
  404. package/pack/generated/omp/skills/rite-review/SKILL.md +4 -4
  405. package/pack/generated/omp/skills/rite-review/reference/security-review.md +4 -2
  406. package/pack/generated/omp/skills/rite-seal/SKILL.md +28 -33
  407. package/pack/generated/omp/skills/rite-ship/SKILL.md +14 -7
  408. package/pack/generated/omp/skills/rite-temper/SKILL.md +18 -18
  409. package/pack/generated/omp/skills/rite-temper/reference/scope-modes.md +6 -7
  410. package/pack/generated/omp/skills/rite-upgrade/SKILL.md +7 -2
  411. package/pack/generated/omp/skills/rite-vet/SKILL.md +33 -34
  412. package/pack/generated/pi/agents/devrites-upgrade-planner.md +12 -4
  413. package/pack/generated/pi/skills/devrites-debug-recovery/SKILL.md +21 -4
  414. package/pack/generated/pi/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +10 -3
  415. package/pack/generated/pi/skills/devrites-debug-recovery/reference/regression-test.md +7 -4
  416. package/pack/generated/pi/skills/devrites-lib/reference/reply-contract.md +11 -11
  417. package/pack/generated/pi/skills/devrites-lib/reference/standards/afk-hitl.md +52 -56
  418. package/pack/generated/pi/skills/devrites-lib/reference/standards/agents.md +11 -1
  419. package/pack/generated/pi/skills/devrites-lib/reference/standards/core.md +41 -40
  420. package/pack/generated/pi/skills/rite-autocomplete/SKILL.md +12 -14
  421. package/pack/generated/pi/skills/rite-autocomplete/reference/loop.md +34 -38
  422. package/pack/generated/pi/skills/rite-autocomplete/reference/stop-conditions.md +38 -39
  423. package/pack/generated/pi/skills/rite-define/SKILL.md +28 -27
  424. package/pack/generated/pi/skills/rite-plan/SKILL.md +7 -2
  425. package/pack/generated/pi/skills/rite-plan/reference/replan-and-repair.md +5 -2
  426. package/pack/generated/pi/skills/rite-resolve/SKILL.md +17 -10
  427. package/pack/generated/pi/skills/rite-resolve/reference/answer-protocol.md +18 -6
  428. package/pack/generated/pi/skills/rite-review/SKILL.md +4 -4
  429. package/pack/generated/pi/skills/rite-review/reference/security-review.md +4 -2
  430. package/pack/generated/pi/skills/rite-seal/SKILL.md +28 -33
  431. package/pack/generated/pi/skills/rite-ship/SKILL.md +14 -7
  432. package/pack/generated/pi/skills/rite-temper/SKILL.md +18 -18
  433. package/pack/generated/pi/skills/rite-temper/reference/scope-modes.md +6 -7
  434. package/pack/generated/pi/skills/rite-upgrade/SKILL.md +7 -2
  435. package/pack/generated/pi/skills/rite-vet/SKILL.md +33 -34
  436. package/package.json +3 -1
  437. package/scripts/build-host-artifacts.sh +6 -2
  438. package/scripts/dsh-generate.py +135 -0
  439. package/scripts/dsh-specialist.mjs +62 -0
  440. package/scripts/install-lib.sh +3 -1
@@ -0,0 +1,260 @@
1
+ # Parallel batch (`--parallel N`)
2
+
3
+ > Root-only: not inlined in --role bundles.
4
+
5
+ Opt-in only. Default `/rite-build` stays [`one-slice-cycle.md`](one-slice-cycle.md).
6
+
7
+ ## Entry
8
+
9
+ | Input | Behavior |
10
+ | --- | --- |
11
+ | omitted / `--parallel 1` | Serial one-slice |
12
+ | `--parallel N` (**2≤N≤10**) | N is a **cap**, not a quota: run the largest eligible set ≤ N |
13
+ | non-integer / `N≤0` / `N>10` | Hard refuse (no silent clamp) |
14
+ | 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
+ | Autocomplete, no flag | Same path, cap from sentinel `max_parallel` else 10; serial only when ineligible |
16
+
17
+ AFK caps `N`. Charge green siblings once after integrate; abort /
18
+ integrate-failed → **0**. `parallel create` refuses while a lease exists.
19
+ 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
+
21
+ ## Dynamic selection and re-batching
22
+
23
+ Size each batch by what is runnable **now**, never by the requested number:
24
+
25
+ ```text
26
+ N_eff = min(
27
+ cap -- this invocation's --parallel N (wins over leftover sentinel max_parallel)
28
+ | else sentinel max_parallel | else 10 (autocomplete default)
29
+ eligible set -- dependency-satisfied pending slices, pairwise path-disjoint
30
+ AFK headroom -- remaining max_slices, max_agents, max_minutes, review queue
31
+ host capacity -- concurrent worktree writers + the runtime isolation table
32
+ )
33
+ ```
34
+
35
+ Select **greedily in plan order** with
36
+ `devrites-engine parallel select --slug <slug> --cap N --from-plan`: the engine
37
+ reads the ready set (tasks.md dependencies checked `built` in `state.md`, minus
38
+ running-lease slices) and each slice's Writer allowlist (else `Files likely
39
+ touched`), plus its manifest/lockfile when `External dependencies:` is not none;
40
+ `next` prints `eligible_now:`/`batch:`. `n_eff` counts new picks only.
41
+ With a running lease, a single new pick still uses `parallel add`;
42
+ `n_eff=0` with a running lease waits for siblings, not Prove. Without one:
43
+ ≥2 → parallel batch, 1 → serial, none pending → Prove.
44
+ Serial is this round only; a cap need not be filled.
45
+
46
+ **Refill per landing; never wait for the batch.** Each sibling lands alone when
47
+ green ([Lifecycle](#lifecycle) step 6). Re-read state, pending slices, and the
48
+ tree; reselect: unlanded siblings hold
49
+ their slots and paths, landed ones count as built, and only new picks print;
50
+ `parallel add` starts each from the control tip and its wright dispatches at once.
51
+ No lease → plain `select` + `create`. AFK/autocomplete is one run; HITL stops after
52
+ each landing. **Failing case:** three siblings are green, one is repairing, and no
53
+ new slice starts.
54
+
55
+ ## Path-disjoint
56
+
57
+ Exact project-relative source/test paths only. Normalize `\`→`/`. Reject `..`,
58
+ duplicates, absolutes, `.devrites/**`. Empty pairwise intersection required.
59
+
60
+ **SSOT:** `devrites-engine check path-disjoint [--root <dir>] [<json-file>|-]`
61
+ (N≥2 only; pass `--root`). Input is `{"slices":[{"id":"SLICE-002","paths":["src/policy.rs","src/policy/mod.rs"]}]}`
62
+ (or a top-level array) built from each candidate's `Files likely touched`.
63
+ Exit `0` proves path disjointness only; fan-out also requires independent
64
+ validation. A shared interface change and its implementers that must compile
65
+ together form one validation unit, even in different files. Repair the slice
66
+ contract into one bounded slice or sequence compatible steps before dispatch;
67
+ do not label coupled siblings independently green. Else force serial. Inspect-time
68
+ overlap → sibling **gap** (a shared path is a contract defect). **Failing
69
+ case:** two parallel wrights share a path and fan-out proceeds without that
70
+ check.
71
+
72
+ Before `parallel select`, add each slice's hidden write surfaces (list owner:
73
+ [repository-topology.md § Ownership rules](../../devrites-lib/reference/standards/repository-topology.md#ownership-rules))
74
+ — lockfile/manifest, the generated target of an edited source, migration chain,
75
+ snapshot directory, formatter sweep — and compare paths case-folded
76
+ (`src/Api.ts` = `src/api.ts`); `--from-plan` adds the manifest/lockfile itself.
77
+ Slices colliding on either run serially; the rest
78
+ stay eligible. Record `serial: <ids> — <surface>` in `evidence.md`. Under AFK
79
+ with `max_parallel ≥ 2`, `dispatch open` refuses a first-round build wright wave
80
+ narrower than the from-plan batch (printing batch and command) until the wave
81
+ holds that batch or `serial:` names every skipped pick; repair rounds, lease
82
+ siblings, and HITL runs are never refused. **Failing
83
+ case:** two slices each add a dependency, run in parallel, and integrate fails or
84
+ lands a broken lockfile.
85
+
86
+ ## Control vs workers
87
+
88
+ Control owns `.devrites/work/<slug>/` (lease + bookkeeping).
89
+ Workers: `.scratch/parallel-wt/<batch>/<slice>/` on
90
+ `devrites/parallel/<slug>/<batch>/<slice>` @ base `B`. Wrights never write
91
+ `.devrites/**`.
92
+
93
+ Lease: `batch_id`, `created_at`, `base_sha`, `n`,
94
+ `status` (`running|aborted|integrate-failed|complete`), `control_pid_or_session`,
95
+ `slices[]` (`id`, `paths`, `worktree_path`, `branch`, `wright_status`,
96
+ `transfer_commit`).
97
+
98
+ ## Lifecycle
99
+
100
+ 1. Orient/gate; parse the cap; compute `N_eff` and select the eligible set
101
+ ([Dynamic selection and re-batching](#dynamic-selection-and-re-batching)) —
102
+ `parallel select --slug <slug> --cap N --from-plan` (ready set, write paths,
103
+ and pairwise disjointness are inside that verb).
104
+ Preflight each selected slice with `devrites-engine check slice <slug>
105
+ <id>`, plus `check preconditions <slug> --slice <id>` when it has a
106
+ `pre-dispatch <id>` preflight row; a malformed contract or non-zero
107
+ precondition is dropped from the batch and recorded as a gap, not dispatched.
108
+ 2. Write lease; freeze `B=HEAD`; `parallel create` worktrees.
109
+ 3. Dispatch ≤10 wrights in parallel (cwd=worktree; allowlist; prove `HEAD==B`;
110
+ one `--slice` per sibling on the wave). A linked worktree has no `.devrites`:
111
+ tell each wright to run `gates precheck` with `DEVRITES_ROOT=<control>/.devrites`.
112
+ 4. Inspect each returned path list, cumulative diff from `B`, transfer identity,
113
+ and required result fields against the immutable contract. Reject malformed,
114
+ stale, or out-of-scope work. Freeze and probe the sibling in its worktree:
115
+ `candidate freeze <slug> --wave <w> --slice <id> --base <B> --worktree <worktree_path>`,
116
+ `check perturb ... --worktree <worktree_path> --slice <id>`. Apply
117
+ [independent Build review](phase-contract.md#independent-build-review): first
118
+ full inventory, then bounded owning-role rechecks after repairs. Run approved
119
+ proof in the same window as that review. Gap or Critical/Important → `gap`;
120
+ else proof → `green|red|gap`.
121
+
122
+ A recheck round is one dispatch per changed surface, not one per checklist: the
123
+ recheck agent carries every open checklist (code, test, doubt) for that diff and
124
+ answers each by name. Merging cuts dispatches; dropping a checklist does not.
125
+ Reviewer fan-out for a batch is itself batched under
126
+ [`parallel-dispatch.md`](../../devrites-lib/reference/parallel-dispatch.md#scale-limits)
127
+ (≈4 concurrent read-only reviewers, 8 only with disjoint paths), and `max_agents`
128
+ headroom bounds the batch size — one batch never assumes unbounded reviewers.
129
+ 5. Non-green siblings → **repair round** (below) in the same worktrees; lease
130
+ stays `running` — no abort while repair budget remains. A green sibling →
131
+ `parallel record-green`, then step 6 for it alone.
132
+ A recoverable RED blocks integration but does not cancel independent safe running siblings.
133
+ Expected test-first RED is not a terminal gate failure. Cancel only for a shared
134
+ invalid foundation, safety/access failure, resource boundary, or explicit stop;
135
+ preserve completed and in-progress recoverable work and classify each result.
136
+ 6. `parallel integrate --slice <id> --apply-to-control` **only after its steps
137
+ 4–5 are green**: `transfer_commit` descends from the sibling's base and diffs
138
+ path-exact vs it; apply as its own local `WIP(<slug>):` commit
139
+ (imperative summary, never a slice id). Staging branch, then FF; the engine
140
+ refuses (never rewinds) if anything but this lease moved control. Conflict →
141
+ `integrate-failed`; classify under repair rounds (siblings stay in place).
142
+ Never integrate because a wright returned.
143
+ 7. Each landing: FF control (the branch that held `HEAD` when the batch started —
144
+ often `main`/`master`, otherwise whatever the user was on) by one local commit,
145
+ never pushed; union that sibling's paths into `touched-files.md`; update
146
+ state/evidence; AFK +1; optional `check candidate`. Land every green sibling,
147
+ refill ([Dynamic selection](#dynamic-selection-and-re-batching)), then run the
148
+ feature gates once for the train
149
+ ([Proof tiers](phase-contract.md#proof-tiers)); the next train waits, the
150
+ refilled wrights do not.
151
+ 8. Cleanup runs only after the last landing marks the lease `complete` — work
152
+ landed in control, so `parallel cleanup` removes worktrees/branches.
153
+ Blocked/human-stopped batches keep lease, worktrees, branches — nothing is
154
+ removed while the batch may resume. `parallel abort` + `cleanup --force`
155
+ abandons the batch — the explicit human discard path; the single
156
+ orchestrator-emitted use is the automatic re-batch under Repair rounds,
157
+ where it acts as the salvage step only (uncommitted allowlisted changes →
158
+ slice-branch commit; branches past `B` kept; a failed salvage keeps the
159
+ worktree) and prints retained refs for the record. `abort` marks the lease
160
+ only — never rewinds control: a moved HEAD is external work, reported not
161
+ reset. Never integrate a rejected transfer commit.
162
+
163
+ ## Repair rounds
164
+
165
+ Repair rejected work in place; never discard/rebuild while budget remains.
166
+
167
+ - Record each round as `build-parallel-<batch>-repair-<round>.json`: each
168
+ non-green sibling's status, verbatim findings, transfer_commit/null.
169
+ - Use step 4's initial inventory or affected recheck as appropriate; never start
170
+ a correction from an early reviewer result while required accounts are pending.
171
+ - Classify the complete inventory: **implementation defect** (review
172
+ Critical/Important on the diff, red wright/proof) → one repair-all wright in
173
+ the same worktree with the full inventory. **Durable-plan defect**
174
+ (falsified contract assumption, AC unchanged) →
175
+ [`spec-drift-guard.md`](spec-drift-guard.md): batch-sweep contract
176
+ assumptions, one folded `/rite-plan repair` + one `/rite-vet` recheck
177
+ inline, resume repair in the same worktrees under the amended contract;
178
+ never emit `Fix:`. **Frozen-lease scope defect** (correction needs
179
+ out-of-allowlist paths or re-slicing; lease allowlists are immutable) →
180
+ **automatic re-batch, no human gate**: `parallel cleanup --force` salvages
181
+ and records refs; `parallel create` starts from control `HEAD` under the
182
+ corrected decomposition. Give each new wright its salvaged
183
+ `devrites/parallel/<slug>/<old-batch>/<slice>` ref. If the inventory proves the accepted
184
+ approach unsound and no corrected decomposition exists, that is exhaustion
185
+ → blocked, preserve, STOP. **Reviewer stall/cancel or missing
186
+ verdict** → reconcile the old host handle under
187
+ [terminal reconciliation](../../devrites-lib/reference/parallel-dispatch.md#cancellation-and-terminal-reconciliation)
188
+ before re-dispatching the reviewer, not the wright. **Product/policy/
189
+ irreversible** → stops for the human.
190
+ - Dispatch one fresh repair-all `devrites-slice-wright` (cwd=worktree; step 3
191
+ rules) with the original contract + complete inventory +
192
+ "preserve what works; fix every finding; **then attack your own correction** —
193
+ probe the changed hunks for defects the fix itself introduced (adjacent cases of
194
+ the same rule, new observation/ordering windows, alias or boundary escapes) and
195
+ fold them in before returning; return a new `transfer_commit`". A correction whose
196
+ own diff is unexamined is not ready: a green writer gate plus an unexamined fix is
197
+ how the same defect family reappears one case deeper each round. Never reset
198
+ to `B` — that destroys the work under repair. The commit must still descend
199
+ from `B` and diff path-exact vs `B`.
200
+ - Budget and exhaustion follow only
201
+ [the canonical retry contract](../../devrites-lib/reference/standards/afk-hitl.md#retry-cap-no-progress-loops-and-self-resolve).
202
+ Record one failed invariant, mechanism, reproduction, correction, and decisive
203
+ recheck per fingerprint; never use an umbrella like "covering" or "review is red again".
204
+ - A distinct post-repair Critical/Important gets a new fingerprint: refresh the
205
+ inventory and affected owning-role rechecks. It proves neither plan defect nor
206
+ exhaustion. Use plan path only if inventory proves the approach unsound.
207
+ - Stop under the canonical retry/authority/resource conditions, or when evidence
208
+ proves the approach unsound and no in-scope corrected decomposition exists.
209
+ - A spent strategy is not abort: escalate per the canonical retry contract,
210
+ preserving lease/worktrees/branches; a fully escalated fingerprint parks and
211
+ the batch keeps its independent members. Repair resumes in place on
212
+ escalation or reinvocation. Human-owned decisions use the drift-guard
213
+ question and wait.
214
+
215
+ ## Engine verbs
216
+
217
+ ```text
218
+ devrites-engine parallel select --cap <1-10> [--root <dir>] [--slug <slug>] [--from-plan | <json-file>|-]
219
+ devrites-engine parallel create --root <repo> --slug <slug> --batch <id> --base <B> --json <file>|-
220
+ devrites-engine parallel add --root <repo> --slug <slug> --json <file>|-
221
+ devrites-engine parallel record-green --root <repo> --slug <slug> --slice <id> --commit <sha>
222
+ devrites-engine parallel integrate --root <repo> --slug <slug> --slice <id> --apply-to-control
223
+ devrites-engine parallel integrate --root <repo> --slug <slug> --apply-to-control
224
+ devrites-engine parallel status --root <repo> --slug <slug>
225
+ devrites-engine parallel lease-write|lease-read|lease-clear --root <repo> --slug <slug>
226
+ # abandoning the batch is human discard only; a frozen-lease re-batch may emit
227
+ # cleanup --force as its salvage step (see Repair rounds):
228
+ # parallel abort --root <repo> --slug <slug>
229
+ # parallel cleanup --root <repo> --slug <slug> --force (salvages, prints retained refs)
230
+ ```
231
+
232
+ `integrate` without `--apply-to-control` stages commits; lease stays `running`,
233
+ control stays at its expected tip, cleanup refuses. `record-green` and `integrate`
234
+ accept `integrate-failed` for retry. Applied landings advance `control_tip`
235
+ (initially `B`), permitting landings/refill. External control movement or
236
+ uncommitted slice-path edits with `--apply-to-control` cause refusal:
237
+ stop for the human (never stash or commit their work); the batch is untouched.
238
+ Go is SSOT; never ad-hoc git/bash orchestration.
239
+
240
+ ## Runtime isolation
241
+
242
+ Each parallel worktree must own isolated runtime resources. Before fan-out,
243
+ assign per-slice env (document in the lease or worktree README):
244
+
245
+ | Resource | Pattern |
246
+ | --- | --- |
247
+ | HTTP port | `PORT=<base+N>` or `DEVRITES_PARALLEL_PORT_<slice>` |
248
+ | Compose | `COMPOSE_PROJECT_NAME=devrites-<slug>-<batch>-<slice>` |
249
+ | SQLite/DB file | separate path under the worktree or `/tmp` |
250
+ | Dev server | one process per worktree; never share a listener |
251
+
252
+ Reusing the control worktree's running server, DB, or compose stack across
253
+ siblings causes cross-slice pollution and flaky proof. Force serial if
254
+ isolation cannot be established.
255
+
256
+ ## Host
257
+
258
+ Claude: N concurrent Task wrights (`acceptEdits`, cwd=worktree). Codex: require
259
+ host-explicit concurrent worktree writers + native reconcile; else force serial.
260
+ Never two writers in one worktree; never root-emulated concurrency.
@@ -0,0 +1,130 @@
1
+ # rite-build phase contract
2
+
3
+ > Root-only: not inlined in --role bundles.
4
+
5
+ Apply [`one-slice-cycle.md`](one-slice-cycle.md) and
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);
8
+ Spec Drift Guard still applies.
9
+
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
+ Build read-next in
13
+ [`workspace-artifact-schema.md`](../../devrites-lib/reference/workspace-artifact-schema.md#read-next-by-phase):
14
+ the selected slice via `devrites-engine observe slice <slug> <SLICE-ID>`, not whole
15
+ `tasks.md`; over-budget or `bulk_files` artifacts are read by anchor only. Require
16
+ `Implementation readiness: READY`, current `Readiness inputs SHA-256`, exact
17
+ required accounts, ID/meaning traceability and green proof preflight.
18
+ 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
+ 2. **Select.** Pick the lowest pending slice whose `depends_on` are all built, using
22
+ `orient` `task_graph.slices` plus the `state.md` built list — never by scanning
23
+ `tasks.md`; then `observe slice` it. Restate its goal, ACs, exclusions and exact paths. Include
24
+ applicable topology/data/integration invariants and failure/recovery/proof cases.
25
+ Verify relevant assumptions live; falsified acceptance/architecture/scope/proof
26
+ routes through Spec Drift Guard. Resolve human-owned/irreversible gates before
27
+ source work; AFK follows its ceiling. Vet-ready Workflow Artifacts use
28
+ [`workflow-artifacts.md`](../../devrites-lib/reference/standards/workflow-artifacts.md).
29
+ 3. **Dispatch.** Apply [`wright-dispatch.md`](wright-dispatch.md). Put the smallest
30
+ exact project-relative source/test path list directly in the task;
31
+ dispatch the exact `devrites-slice-wright` fresh. Root never writes product
32
+ paths; wright cannot widen scope; missing profile blocks.
33
+ <!-- workflow-artifact-adapter: {"module":"devrites-lib/reference/standards/workflow-artifacts.md","entry":"Build gate enters or resumes transaction","action":"invoke canonical operation table; reconcile exact result","return":"same slice/checkpoint cursor or Plan/Vet route"} -->
34
+ 4. **Inspect.** Wait; run `devrites-engine check diff-scope <slug> --allow
35
+ <contract-paths> --baseline` (after a pre-dispatch `--snapshot`) for the mechanical returned-paths ⊆ contract check **before**
36
+ any reviewer dispatch — a violation returns through the bounded wright without
37
+ spending review. Then compare returned paths and `git diff --name-only` with the
38
+ contract for semantics diff-scope cannot judge (stale/partial/malformed work;
39
+ preserved user work). Restoration uses the bounded wright.
40
+ 5. **Review.** Apply [Independent Build review](#independent-build-review). Run step 6
41
+ proof in the same window on the same frozen candidate; both gate step 7, and a
42
+ repair or source-mutating proof voids both.
43
+ Missing verdicts, principle breaches and open Critical/Important block acceptance.
44
+ 6. **Prove.** Against the frozen pre-slice candidate inspect
45
+ test hunks for deletion, skipping/focus, tautology, or weaker expectations.
46
+ Wait for step 5's exact test-analyst account; missing/adverse criterion verdict is
47
+ Critical. Run only `test-plan.md` repository/CI commands ([tier](#proof-tiers)),
48
+ record output, recheck
49
+ `git diff --name-only`. Missing/weakened/red/source-mutating proof cannot pass.
50
+ Pre-existing/environment-specific claims need a predating same-command,
51
+ same-environment baseline; otherwise unresolved.
52
+
53
+ Technical failure uses `devrites-debug-recovery` and
54
+ [canonical recovery](../../devrites-lib/reference/standards/afk-hitl.md#retry-cap-no-progress-loops-and-self-resolve).
55
+ Reapply host admission before correction; affected proof/evidence follows candidate
56
+ integrity. Human gates remain product/irreversible/access decisions.
57
+ 7. **Record green.** Upsert actual scoped `present`/`deleted` rows in `touched-files.md`;
58
+ update state, evidence and applicable UI/browser proof. Checkpoint per
59
+ [`checkpoint.md`](checkpoint.md) only after steps 5–6 are green and every
60
+ repair wright has been re-reviewed and re-proved; never on wright return.
61
+ Manifest stays mutable until Polish. For a release milestone, after the last slice's rows run
62
+ `devrites-engine state merge-manifest <slug>` to fold the recorded
63
+ predecessor chain into the union manifest before Prove. Record stood
64
+ decisions/dead ends; refresh verified/falsified
65
+ assumptions. Propose reviewed durable project rules in the nearest guidance.
66
+ 8. **Account/reply.** Apply `afk-discipline.md`: charge
67
+ exactly once after each green built slice; never negative, stop at zero,
68
+ malformed budget fails closed. Reply names next pending slice or `/rite-prove`
69
+ only when all built; no decorative renderer/dispatch telemetry.
70
+
71
+ One contract builds one slice: preserve TDD, exact paths and independent judgment.
72
+
73
+ ## Proof tiers
74
+
75
+ With a `test-plan.md` `## Feature gates` section, step 6 runs `Tests/proof` and every
76
+ other row; feature gates run once per landing train, on control, while worktree
77
+ wrights continue: land every green sibling together, run the suite once, and bisect only
78
+ on red. The next train and Prove wait for them; red is a fingerprint against slices
79
+ landed since the last green run. Serial same-worktree mode, and plans
80
+ without the section, run every row each round. Run gate, benchmark and proof commands
81
+ through the host's shell tool, never a code-evaluation subprocess, whose environment
82
+ can lack the owner's exported variables.
83
+
84
+ Wrights run only the tests their changed paths reach, resolved from the merge base
85
+ against the plan's baseline rather than the last commit; Prove and Seal always run the
86
+ full suite. Resolve that narrow set with
87
+ `devrites-engine check affected <changed path...>`, which expands a changed package to its
88
+ dependent packages and widens on its own when a path is a module manifest, a generated
89
+ artifact, CI config, shared testdata, or one it cannot classify. Widen to the full suite
90
+ inside Build the moment a slice touches `go.mod` or a
91
+ lockfile, generated artifacts, CI config, a shared test harness, or whenever no test can
92
+ be named for a changed path. When selection is uncertain, run the full suite: the narrow
93
+ set is an optimisation, never a substitute.
94
+
95
+ ## Independent Build review
96
+
97
+ After inspection, freeze full slice scope and cumulative baseline diff with
98
+ `devrites-engine candidate freeze <slug> --wave <w> --slice <SLICE-ID> --base <baseline>`;
99
+ render each reviewer packet with `devrites-engine packet` (never hand-written; a doubt
100
+ reviewer's `--focus` holds its claim, 1-3 rows `- <DEC-ID> decisions.md:<line> <claim>`). Initial
101
+ inventory: one full-diff `devrites-code-reviewer`, one `devrites-test-analyst`,
102
+ and one exact `devrites-doubt-reviewer` per stood decision that meets
103
+ `devrites-doubt` § When to use (boundary, data model, auth, public API, migration,
104
+ user flow, assumption tests cannot prove); other stood decisions are recorded in
105
+ `decisions.md` without dispatch. Bundles take `--slice <SLICE-ID>`. Dispatch fresh,
106
+ read-only under [`parallel-dispatch.md`](../../devrites-lib/reference/parallel-dispatch.md).
107
+ Wait for every required account to become terminal; missing/gap needs a valid result.
108
+ Fold supported in-scope Critical/Important findings by cause into one inventory; a
109
+ row `check anchors` leaves Unverified or Deferred never enters it.
110
+ Dispatch one repair-all wright instructed to fix every finding, then attack its own
111
+ correction for fix-introduced defects before returning; durable contract defects use Spec
112
+ Drift Guard.
113
+ Suggestion/Nit/FYI cannot prolong recovery.
114
+
115
+ Rechecks use Vet's bounded pattern: each exact responsible reviewer checks
116
+ all open findings owned by that role and affected dependency/regression closure
117
+ in one fresh dispatch. Supply new candidate, inventory, correction diff, tests
118
+ and unchanged-coverage evidence under candidate integrity; include newly triggered
119
+ roles. A changed contract or uncertain impact requires the full inventory.
120
+ A bounded recheck bundle adds `--recheck <inventory-file>` (open `Finding:` rows
121
+ plus correction-diff paths) to its `--slice` bundle, and its `packet` adds `--recheck`: inventory and core inline, every
122
+ other triggered standard by anchor index plus each `<file>.md § <heading>` the
123
+ findings cite. First reviews and full-inventory rechecks keep the plain bundle.
124
+ Collect all required rechecks before another folded correction. Canonical recovery
125
+ owns fingerprints/budget and the
126
+ [late-finding rule](../../devrites-lib/reference/standards/afk-hitl.md#retry-cap-no-progress-loops-and-self-resolve):
127
+ a recheck's `Late:` rows on hunks unchanged since that role's previous pass go to
128
+ `touched-files.md` `## Review trail` for `/rite-review`, not into another slice
129
+ repair, unless Critical with a failure path. Evidenced scope coverage never
130
+ guarantees no later defect; the feature-level Review and Seal gates still run.
@@ -0,0 +1,91 @@
1
+ # Spec Drift Guard (build phase)
2
+
3
+ Canonical Spec Drift Guard, active in `/rite-build` and referenced by other
4
+ phases. Never silently code against a known-wrong plan.
5
+
6
+ ## Drift has occurred when
7
+ - the spec says X but the code makes X impossible/wrong;
8
+ - the plan assumes a file/API/component/route/model/command that doesn't exist;
9
+ - tests show the acceptance criteria are incomplete or wrong;
10
+ - browser evidence shows the intended UX doesn't work as described;
11
+ - an official doc contradicts the planned approach;
12
+ - the design system / existing UX pattern contradicts the planned UI;
13
+ - a missing user decision that affects product behavior surfaces.
14
+
15
+ A timing gate that fails with no code cause is a protocol or environment defect
16
+ ([performance.md § Performance gate protocol](../../devrites-lib/reference/standards/performance.md#performance-gate-protocol)),
17
+ never another wright round.
18
+
19
+ ## Workflow
20
+ ```
21
+ 1. STOP coding.
22
+ 2. Record drift.md (assumed vs observed, when).
23
+ 3. Classify: requirement ambiguity | implementation-plan error | codebase reality
24
+ mismatch | design-system mismatch | test/evidence mismatch | external-doc mismatch
25
+ | user-decision required.
26
+ 4. Local repair that preserves behavior/scope/architecture/data/UX/security/migration?
27
+ YES, active-slice technical/tool failure → log it and use Build's bounded debug
28
+ recovery. Do not ask for retry authorization and do not re-plan unless the
29
+ durable remaining-work instructions are wrong. A Workflow Artifact byte fix
30
+ that keeps every admission row is this case: `OFFLINE_RECOVERY`, then
31
+ `/rite-vet`'s bytes-only recheck — never `/rite-plan repair`.
32
+ YES, durable plan is wrong → run the batch sweep below, log every
33
+ violation, save the caller's return cursor, then invoke `/rite-plan repair` and `/rite-vet` inline
34
+ without a question — ONE folded repair for all open entries, ONE
35
+ recheck for every open fingerprint — and resume.
36
+ NO, product/policy/irreversible-risk decision → ask the user (format below).
37
+ 5. Never continue on a known-wrong durable plan. A repaired active-slice implementation
38
+ may continue only after bounded recovery, returned-diff review, and proof gates pass.
39
+ ```
40
+
41
+ ## Batch sweep (before repair)
42
+
43
+ Repair durable-plan drift as a folded set:
44
+
45
+ 1. Trace the falsified assumption's full dependency/consumer closure and affected
46
+ frontier, including dependent future slices. Verify unchecked paths, symbols/APIs/
47
+ signatures, routes, commands, versions, and artifacts there against live source.
48
+ Reuse the wright inventory and unchanged evidence; deterministic existence checks
49
+ need no dispatch. Do not rescan unrelated slices. Broaden unknown closure or shared
50
+ contract changes until coverage is justified; retain every known gap.
51
+ 2. Record each violation as its own `drift.md` entry/fingerprint; one folded
52
+ repair + one batched recheck resolves the set.
53
+ 3. A recheck-surfaced gap is a new fingerprint with its own budget — loop
54
+ internally, never hand an intermediate command to the human. When
55
+ consecutive folded repairs keep landing on the same clause set, the
56
+ repair packet's `convergence_pressure` marking applies (see `/rite-plan`
57
+ repair): bounded declared residuals may close refinements of
58
+ already-pinned clauses; a newly surfaced failure mode is never
59
+ residual-eligible. A suspect seam's declare-limitation-or-continue choice
60
+ routes to `/rite-clarify` like any human-owned gate — it is not an
61
+ intermediate command.
62
+ 4. Nothing skips or defers silently: every entry ends resolved, human-escalated,
63
+ or fingerprint-exhausted. Execution-only gaps (tests, UX, evidence) get the
64
+ identical path when they surface.
65
+
66
+ ## User question format
67
+ ```
68
+ I hit spec drift:
69
+ - Spec/plan assumed: ...
70
+ - Code/evidence shows: ...
71
+ - Why it matters: ...
72
+
73
+ Which direction should DevRites take?
74
+ 1. Keep the requirement, change architecture by ...
75
+ 2. Adjust the requirement to match existing behavior ...
76
+ 3. Split into a follow-up feature ...
77
+ 4. Custom: describe the intended behavior
78
+ ```
79
+
80
+ Never turn an objective defect, environment repair, tool bug, or proof rerun into a
81
+ human permission question. Re-plan only when the durable plan changed.
82
+
83
+ ## Inline return contract
84
+
85
+ The detecting phase owns backtracking and the batch sweep. Save
86
+ `return_phase`/`return_next_action`; consume nested Plan/Vet `STOP` internally, complete
87
+ vetted acceptance-preserving remediation, then restore the cursor and failed step.
88
+ Never hand the human an intermediate command. The shared three-attempt causal-fingerprint
89
+ cap still applies: a spent strategy escalates and a fully escalated fingerprint parks
90
+ under the [retry contract](../../devrites-lib/reference/standards/afk-hitl.md#retry-cap-no-progress-loops-and-self-resolve),
91
+ while a genuinely human-owned decision uses the question format below.
@@ -0,0 +1,27 @@
1
+ # TDD / Prove-It pattern
2
+
3
+ When a slice changes behavior, prove the change with a test that fails first, so you
4
+ know the test can fail, and that your code is what makes it pass.
5
+
6
+ ## Red → Green → Refactor
7
+ 1. **Red:** write the smallest test that expresses the new behavior. Run it; watch it
8
+ fail for the *expected* reason (not a typo/import error).
9
+ 2. **Green:** write the minimum code to pass. Resist gold-plating.
10
+ 3. **Refactor:** clean up with the test as a safety net. Re-run; stay green.
11
+
12
+ ## Prove-It (when strict TDD doesn't fit)
13
+ For code where a test-first flow is awkward (exploratory glue, config, some UI), still
14
+ produce evidence:
15
+ - Capture the current (wrong/absent) behavior: a failing assertion, a screenshot, a
16
+ log line.
17
+ - Make the change.
18
+ - Capture the new behavior the same way. The before/after pair *is* the proof.
19
+
20
+ ## Rules
21
+ - Use the project's existing test framework and commands (per the discovery contract
22
+ [`test-command-discovery.md`](../../rite-prove/reference/test-command-discovery.md)). Don't introduce a new test runner
23
+ to prove a slice.
24
+ - One behavior per test; name it for the behavior, not the function.
25
+ - A green test you never saw fail proves nothing: always see red first.
26
+ - Don't delete or weaken a failing test to "pass". If it's wrong, that may be drift.
27
+ - Record the test command + result in `evidence.md`.