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
package/CHANGELOG.md CHANGED
@@ -2,6 +2,19 @@
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.2.0](https://github.com/ViktorsBaikers/DevRites/compare/v7.1.2...v7.2.0) (2026-10-28)
6
+
7
+ ### Added
8
+
9
+ * **installer:** add DSH specialist integration ([#184](https://github.com/ViktorsBaikers/DevRites/issues/184)) ([0fe9f07](https://github.com/ViktorsBaikers/DevRites/commit/0fe9f07be170eef1c581b9401b565a8688dc64b4))
10
+
11
+ ## [7.1.2](https://github.com/ViktorsBaikers/DevRites/compare/v7.1.1...v7.1.2) (2026-10-28)
12
+
13
+ ### Fixed
14
+
15
+ * **no-release:** align autocomplete lifecycle continuation ([#181](https://github.com/ViktorsBaikers/DevRites/issues/181)) ([ed1c0fa](https://github.com/ViktorsBaikers/DevRites/commit/ed1c0fae38ea774b7ce2376589e501c2281deb62))
16
+ * **skills:** bring cross-phase workflow fixes to main ([#183](https://github.com/ViktorsBaikers/DevRites/issues/183)) ([18b9fb0](https://github.com/ViktorsBaikers/DevRites/commit/18b9fb095a80c4b9cc41c99cfe1c04e02015990f)), references [#182](https://github.com/ViktorsBaikers/DevRites/issues/182)
17
+
5
18
  ## [7.1.1](https://github.com/ViktorsBaikers/DevRites/compare/v7.1.0...v7.1.1) (2026-10-28)
6
19
 
7
20
  ### Fixed
package/README.md CHANGED
@@ -24,14 +24,14 @@
24
24
  DevRites is a repository-local workflow for AI coding agents. It turns a
25
25
  feature request into a spec, a sliced plan, working code, recorded proof, a
26
26
  release decision, and an explicit ship step. It runs inside Claude Code, Codex,
27
- omp, pi, and Devin CLI.
27
+ omp, pi, Devin CLI, and DSH.
28
28
 
29
29
  DevRites keeps that work in `.devrites/` inside your repository, where chat
30
30
  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.1.1`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v7.1.1): see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
34
+ **Status:** [`v7.2.0`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v7.2.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
 
@@ -64,8 +64,7 @@ root, then run /rite-doctor ($rite-doctor in Codex) and report any FAIL line
64
64
  with its fix.
65
65
  ```
66
66
 
67
- The installer adds project-local support for Claude Code, Codex, omp, pi, and
68
- Devin CLI. It does not write skills, agents, or hooks to `~/.claude`,
67
+ The installer adds project-local support for Claude Code, Codex, omp, pi, Devin CLI, and DSH. It does not write skills, agents, or hooks to `~/.claude`,
69
68
  `~/.codex`, `~/.pi`, or `~/.config/devin`.
70
69
 
71
70
  **2. Pick the smallest route** that still protects the work.
@@ -306,6 +305,7 @@ Run `npx devrites@latest --help` for common flags and
306
305
  | `--no-omp` | Skip `.omp` skills, agents, and command stubs. |
307
306
  | `--no-pi` | Skip `.pi` skills, agents, prompt commands, and the pi `AGENTS.md` block. |
308
307
  | `--no-devin` | Skip `.devin` skills, agents, and the Devin `AGENTS.md` block. |
308
+ | `--no-dsh` | Skip `.dsh` skills, named presets, permission guard, and the DSH `AGENTS.md` block. |
309
309
  | `--no-agents` | Skip hook-free native specialist profiles. |
310
310
  | `--no-skills` | Skip skills and their bundled standards. |
311
311
  | `--no-binary` | Do not keep the shared `devrites-engine` binary in a user or system bin directory. On `uninstall`, keep the existing binary. |
@@ -424,6 +424,10 @@ that the intended publishing step produced it. See
424
424
 
425
425
  ## Hosts
426
426
 
427
+ For DSH, launch `npx @deepseek-ai/dsh web --patch .dsh/cordis.patch.yml`
428
+ and select the **DevRites** agent preset before starting a workflow. See the
429
+ [DSH integration guide](docs/dsh.md) for permissions, dispatch, and result collection.
430
+
427
431
  | Host | Skills | Agents | Also installs | Invoke |
428
432
  | --- | --- | --- | --- | --- |
429
433
  | **Claude Code** | `.claude/skills/` | `.claude/agents/` | Native root permissions merged into `.claude/settings.json` | `/rite-spec` |
@@ -431,6 +435,7 @@ that the intended publishing step produced it. See
431
435
  | **omp** | `.omp/skills/` | `.omp/agents/` | Command stubs in `.omp/commands/`; `.omp/config.yml` hiding duplicate DevRites skills (only if absent) | `/rite-spec` or `/skill:rite-spec` |
432
436
  | **pi** | `.pi/skills/` | `.pi/agents/` | Prompt commands in `.pi/prompts/`, marked block in `AGENTS.md`; with Codex, `.pi/settings.json` skipping the `.agents/skills` copies (only if absent) | `/rite-spec` or `/skill:rite-spec` |
433
437
  | **Devin CLI** | `.devin/skills/` | `.devin/agents/` | Marked block in `AGENTS.md` | `/rite-spec` |
438
+ | **DSH** | `.dsh/skills/` | Named native agent presets; profiles in `.dsh/agents/` | `.dsh/cordis.patch.yml`, role permission guard, marked block in `AGENTS.md` | `/rite-spec` in the DevRites preset |
434
439
 
435
440
  On every host, among the lifecycle `devrites-*` specialists only
436
441
  `devrites-slice-wright` is writable and the rest are read-only and hook-free;
package/docs/dsh.md ADDED
@@ -0,0 +1,46 @@
1
+ # DSH integration
2
+
3
+ The standard DevRites installer ships project-local DSH skills and named native
4
+ agent presets. To launch from the installed project's root:
5
+
6
+ ```sh
7
+ npx @deepseek-ai/dsh web --patch .dsh/cordis.patch.yml
8
+ ```
9
+
10
+ Choose **DevRites** (`devrites-orchestrator`) in the agent preset selector for a
11
+ new conversation, then use `/rite` or `/rite-spec`. The overlay loads alongside
12
+ your DSH profile; the installer does not edit your global DSH configuration.
13
+ Use `--no-dsh` with DevRites install/update to omit this host. Updates and
14
+ uninstall manage the same files through the existing hashed manifest.
15
+
16
+ Skills live under `.dsh/skills`, with native invocation flags preserved. The
17
+ `.dsh/agents` files retain the expanded canonical specialist instructions.
18
+ `.dsh/cordis.patch.yml` and `.dsh/specialist.mjs` register those exact identities
19
+ as native DSH presets and enforce their tool and permission boundaries.
20
+
21
+ The orchestrator calls `subagent` with an exact `agent_preset`, a self-contained
22
+ `prompt`, and a short `description`. Its configured backend is `spawn`, which creates a fresh
23
+ Session without the parent conversation. An omitted or unknown role is denied;
24
+ generic dispatch and fork are not substitutes. Specialists cannot delegate.
25
+ The root may use `list_agents`, `send_message`, and `interrupt_agent` to manage
26
+ its native children.
27
+
28
+ DSH delivers each child's final text and terminal status to the parent in a
29
+ settlement notice. A returned child id means dispatch was admitted; `inactive`
30
+ activity alone does not prove successful completion. The orchestrator collects
31
+ and reconciles every terminal result, including failures, before dependent work.
32
+
33
+ Read-only roles retain only their mapped tools and run shell commands under the
34
+ read-only sandbox. Shell-capable roles also receive native job tools to collect
35
+ background command output and stop their jobs. Writers have a workspace-write ceiling. The guard narrows
36
+ DSH's inherited parent override before each allowed call, preserves an existing
37
+ read-only parent boundary, and denies explicit sandbox escalation. Confining
38
+ shell and filesystem providers are required; an unconfined composition fails
39
+ closed. Tool access derives from canonical agent frontmatter; unsupported
40
+ Claude-specific tools and MCP grants are omitted. The writer's exact file list
41
+ remains a task contract checked by the orchestrator, as on the other hosts.
42
+
43
+ The adapter targets the published DSH `0.2.1-rc.2` plugin interfaces, checked
44
+ against [DeepSeek Harness source](https://github.com/deepseek-ai/deepseek-harness)
45
+ at `f3803c96974ad4a94195fb97e5c637e9c2a3afe3`. DSH is a developer preview;
46
+ changes to its preset, tools, or sandbox interfaces require revalidation.
@@ -18,12 +18,14 @@ const (
18
18
  OmpSkillsTarget = ".omp/skills"
19
19
  PiSkillsTarget = ".pi/skills"
20
20
  DevinSkillsTarget = ".devin/skills"
21
+ DshSkillsTarget = ".dsh/skills"
21
22
  ClaudeAgentsTarget = ".claude/agents"
22
23
  CodexAgentsTarget = ".codex/agents"
23
24
  OmpAgentsTarget = ".omp/agents"
24
25
  OmpCommandsTarget = ".omp/commands"
25
26
  PiAgentsTarget = ".pi/agents"
26
27
  DevinAgentsTarget = ".devin/agents"
28
+ DshAgentsTarget = ".dsh/agents"
27
29
  PiPromptsTarget = ".pi/prompts"
28
30
  ClaudeWorkflowsTarget = ".claude/workflows"
29
31
 
@@ -19,12 +19,14 @@ const (
19
19
  OmpSkillsTarget = devritespaths.OmpSkillsTarget
20
20
  PiSkillsTarget = devritespaths.PiSkillsTarget
21
21
  DevinSkillsTarget = devritespaths.DevinSkillsTarget
22
+ DshSkillsTarget = devritespaths.DshSkillsTarget
22
23
  ClaudeAgentsTarget = devritespaths.ClaudeAgentsTarget
23
24
  CodexAgentsTarget = devritespaths.CodexAgentsTarget
24
25
  OmpAgentsTarget = devritespaths.OmpAgentsTarget
25
26
  OmpCommandsTarget = devritespaths.OmpCommandsTarget
26
27
  PiAgentsTarget = devritespaths.PiAgentsTarget
27
28
  DevinAgentsTarget = devritespaths.DevinAgentsTarget
29
+ DshAgentsTarget = devritespaths.DshAgentsTarget
28
30
  PiPromptsTarget = devritespaths.PiPromptsTarget
29
31
  ClaudeWorkflowsTarget = devritespaths.ClaudeWorkflowsTarget
30
32
  )
@@ -111,6 +113,15 @@ var DevinAgentsMerge = MarkerMerge{
111
113
  MarkerText: "AGENTS.md contains a DevRites managed block between BEGIN/END DEVRITES DEVIN markers.",
112
114
  }
113
115
 
116
+ var DshAgentsMerge = MarkerMerge{
117
+ TargetRel: "AGENTS.md",
118
+ PayloadRel: "dsh/AGENTS.md",
119
+ Begin: "<!-- BEGIN DEVRITES DSH -->",
120
+ End: "<!-- END DEVRITES DSH -->",
121
+ MarkerRel: ".claude/devrites.dsh-agents-merge",
122
+ MarkerText: "AGENTS.md contains a DevRites managed block between BEGIN/END DEVRITES DSH markers.\n",
123
+ }
124
+
114
125
  var CodexConfigMerge = MarkerMerge{
115
126
  TargetRel: ".codex/config.toml",
116
127
  PayloadRel: "codex/config.toml",
@@ -166,6 +177,7 @@ var LegacyCodexHooksMerge = ManagedMerge{
166
177
  }
167
178
 
168
179
  var managedMerges = []ManagedMerge{
180
+ {MarkerRel: DshAgentsMerge.MarkerRel, TargetRel: DshAgentsMerge.TargetRel, Begin: DshAgentsMerge.Begin, End: DshAgentsMerge.End, DryRun: "AGENTS.md DevRites DSH block"},
169
181
  {
170
182
  MarkerRel: CodexAgentsMerge.MarkerRel,
171
183
  TargetRel: CodexAgentsMerge.TargetRel,
@@ -202,7 +214,7 @@ var managedMerges = []ManagedMerge{
202
214
  LegacyCodexHooksMerge,
203
215
  }
204
216
 
205
- func RequiredPayload(withCodex, withOmp, withPi, withDevin bool) []string {
217
+ func RequiredPayload(withCodex, withOmp, withPi, withDevin, withDsh bool) []string {
206
218
  required := []string{
207
219
  "claude/skills",
208
220
  "claude/agents",
@@ -240,11 +252,14 @@ func RequiredPayload(withCodex, withOmp, withPi, withDevin bool) []string {
240
252
  "devin/AGENTS.md",
241
253
  )
242
254
  }
255
+ if withDsh {
256
+ required = append(required, "dsh/skills", "dsh/agents", "dsh/runtime/cordis.patch.yml", "dsh/runtime/specialist.mjs", "dsh/AGENTS.md")
257
+ }
243
258
  return required
244
259
  }
245
260
 
246
- func ValidatePayload(payload fs.FS, withCodex, withOmp, withPi, withDevin bool) error {
247
- for _, rel := range RequiredPayload(withCodex, withOmp, withPi, withDevin) {
261
+ func ValidatePayload(payload fs.FS, withCodex, withOmp, withPi, withDevin, withDsh bool) error {
262
+ for _, rel := range RequiredPayload(withCodex, withOmp, withPi, withDevin, withDsh) {
248
263
  if _, err := fs.Stat(payload, rel); err != nil {
249
264
  return fmt.Errorf("missing %s", rel)
250
265
  }
@@ -252,7 +267,7 @@ func ValidatePayload(payload fs.FS, withCodex, withOmp, withPi, withDevin bool)
252
267
  return nil
253
268
  }
254
269
 
255
- func InstallTrees(withSkills, withAgents, withCodex, withOmp, withPi, withDevin bool) []Tree {
270
+ func InstallTrees(withSkills, withAgents, withCodex, withOmp, withPi, withDevin, withDsh bool) []Tree {
256
271
  var trees []Tree
257
272
  if withSkills {
258
273
  trees = append(trees, Tree{PayloadPrefix: "claude/skills", TargetPrefix: ClaudeSkillsTarget})
@@ -274,6 +289,9 @@ func InstallTrees(withSkills, withAgents, withCodex, withOmp, withPi, withDevin
274
289
  if withDevin {
275
290
  trees = append(trees, Tree{PayloadPrefix: "devin/skills", TargetPrefix: DevinSkillsTarget})
276
291
  }
292
+ if withDsh {
293
+ trees = append(trees, Tree{PayloadPrefix: "dsh/skills", TargetPrefix: DshSkillsTarget})
294
+ }
277
295
  }
278
296
  if withAgents {
279
297
  trees = append(trees, Tree{PayloadPrefix: "claude/agents", TargetPrefix: ClaudeAgentsTarget})
@@ -290,13 +308,16 @@ func InstallTrees(withSkills, withAgents, withCodex, withOmp, withPi, withDevin
290
308
  trees = append(trees, Tree{PayloadPrefix: "devin/agents", TargetPrefix: DevinAgentsTarget})
291
309
  }
292
310
  }
311
+ if withAgents && withDsh {
312
+ trees = append(trees, Tree{PayloadPrefix: "dsh/agents", TargetPrefix: DshAgentsTarget}, Tree{PayloadPrefix: "dsh/runtime", TargetPrefix: ".dsh"})
313
+ }
293
314
  if withSkills && withAgents {
294
315
  trees = append(trees, Tree{PayloadPrefix: "claude/workflows", TargetPrefix: ClaudeWorkflowsTarget})
295
316
  }
296
317
  return trees
297
318
  }
298
319
 
299
- func AliasTargets(alias Alias, withCodex, withOmp, withPi, withDevin bool) []string {
320
+ func AliasTargets(alias Alias, withCodex, withOmp, withPi, withDevin, withDsh bool) []string {
300
321
  targets := []string{filepath.ToSlash(filepath.Join(ClaudeSkillsTarget, alias.Name, "SKILL.md"))}
301
322
  if withCodex {
302
323
  targets = append(targets, filepath.ToSlash(filepath.Join(CodexSkillsTarget, alias.Name, "SKILL.md")))
@@ -310,6 +331,9 @@ func AliasTargets(alias Alias, withCodex, withOmp, withPi, withDevin bool) []str
310
331
  if withDevin {
311
332
  targets = append(targets, filepath.ToSlash(filepath.Join(DevinSkillsTarget, alias.Name, "SKILL.md")))
312
333
  }
334
+ if withDsh {
335
+ targets = append(targets, filepath.ToSlash(filepath.Join(DshSkillsTarget, alias.Name, "SKILL.md")))
336
+ }
313
337
  return targets
314
338
  }
315
339
 
@@ -26,6 +26,7 @@ func (r *runner) install() error {
26
26
  fmt.Fprintf(r.opts.Stdout, " omp : %s\n", yesno(r.opts.WithOmp))
27
27
  fmt.Fprintf(r.opts.Stdout, " pi : %s\n", yesno(r.opts.WithPi))
28
28
  fmt.Fprintf(r.opts.Stdout, " devin : %s\n", yesno(r.opts.WithDevin))
29
+ fmt.Fprintf(r.opts.Stdout, " dsh : %s\n", yesno(r.opts.WithDsh))
29
30
  fmt.Fprintf(r.opts.Stdout, " aliases: %s\n", r.opts.AliasMode)
30
31
  if r.opts.DryRun {
31
32
  fmt.Fprintln(r.opts.Stdout, " (dry run - no changes will be made)")
@@ -43,7 +44,7 @@ func (r *runner) install() error {
43
44
  return err
44
45
  }
45
46
 
46
- for _, tree := range hostpack.InstallTrees(r.opts.WithSkills, r.opts.WithAgents, r.opts.WithCodex, r.opts.WithOmp, r.opts.WithPi, r.opts.WithDevin) {
47
+ for _, tree := range hostpack.InstallTrees(r.opts.WithSkills, r.opts.WithAgents, r.opts.WithCodex, r.opts.WithOmp, r.opts.WithPi, r.opts.WithDevin, r.opts.WithDsh) {
47
48
  if err := r.installTree(tree.PayloadPrefix, tree.TargetPrefix); err != nil {
48
49
  return fmt.Errorf("install tree %s: %w", tree.TargetPrefix, err)
49
50
  }
@@ -54,7 +55,7 @@ func (r *runner) install() error {
54
55
  if err != nil {
55
56
  return fmt.Errorf("render alias skill %s: %w", alias.Name, err)
56
57
  }
57
- for _, rel := range hostpack.AliasTargets(alias, r.opts.WithCodex, r.opts.WithOmp, r.opts.WithPi, r.opts.WithDevin) {
58
+ for _, rel := range hostpack.AliasTargets(alias, r.opts.WithCodex, r.opts.WithOmp, r.opts.WithPi, r.opts.WithDevin, r.opts.WithDsh) {
58
59
  if err := r.installData(data, rel); err != nil {
59
60
  return fmt.Errorf("install alias: %w", err)
60
61
  }
@@ -79,6 +80,11 @@ func (r *runner) install() error {
79
80
  return fmt.Errorf("merge %s: %w", hostpack.DevinAgentsMerge.TargetRel, err)
80
81
  }
81
82
  }
83
+ if r.opts.WithSkills && r.opts.WithDsh {
84
+ if err := r.mergeMarkerFile(hostpack.DshAgentsMerge); err != nil {
85
+ return fmt.Errorf("merge %s: %w", hostpack.DshAgentsMerge.TargetRel, err)
86
+ }
87
+ }
82
88
  if r.opts.WithSkills {
83
89
  if err := r.seedClaudeSettings(); err != nil {
84
90
  return fmt.Errorf("seed claude settings: %w", err)
@@ -112,6 +118,9 @@ func (r *runner) install() error {
112
118
  }
113
119
  fmt.Fprintf(r.opts.Stdout, " installed: %d overwritten: %d skipped(conflict): %d pruned: %d\n", r.stats.installed, r.stats.overwrote, r.stats.skipped, r.stats.pruned)
114
120
  if !r.opts.DryRun && r.opts.WithSkills {
121
+ if r.opts.WithDsh && r.opts.WithAgents {
122
+ fmt.Fprintln(r.opts.Stdout, "DSH: run npx @deepseek-ai/dsh web --patch .dsh/cordis.patch.yml, then select the DevRites preset.")
123
+ }
115
124
  claudeHosts := "Claude"
116
125
  if r.opts.WithDevin {
117
126
  claudeHosts = "Claude/Devin"
@@ -445,6 +454,9 @@ func (r *runner) flagsString() string {
445
454
  if !r.opts.WithDevin {
446
455
  flags = append(flags, "--no-devin")
447
456
  }
457
+ if !r.opts.WithDsh {
458
+ flags = append(flags, "--no-dsh")
459
+ }
448
460
  if !r.opts.WithBinary {
449
461
  flags = append(flags, "--no-binary")
450
462
  }
@@ -37,6 +37,7 @@ type Options struct {
37
37
  WithOmp bool
38
38
  WithPi bool
39
39
  WithDevin bool
40
+ WithDsh bool
40
41
  WithBinary bool
41
42
  KeepBinary bool
42
43
  AliasMode string
@@ -91,6 +92,7 @@ func DefaultOptions(mode Mode) Options {
91
92
  WithOmp: true,
92
93
  WithPi: true,
93
94
  WithDevin: true,
95
+ WithDsh: true,
94
96
  WithBinary: true,
95
97
  AliasMode: "safe",
96
98
  Stdout: io.Discard,
@@ -145,6 +147,7 @@ func parseArgs(args []string, opts *Options) error {
145
147
  noOmp := flags.Bool("no-omp", !opts.WithOmp, "")
146
148
  noPi := flags.Bool("no-pi", !opts.WithPi, "")
147
149
  noDevin := flags.Bool("no-devin", !opts.WithDevin, "")
150
+ noDsh := flags.Bool("no-dsh", !opts.WithDsh, "")
148
151
  noAgents := flags.Bool("no-agents", !opts.WithAgents, "")
149
152
  noSkills := flags.Bool("no-skills", !opts.WithSkills, "")
150
153
  noBinary := flags.Bool("no-binary", !opts.WithBinary, "")
@@ -174,6 +177,7 @@ func parseArgs(args []string, opts *Options) error {
174
177
  opts.WithOmp = !*noOmp
175
178
  opts.WithPi = !*noPi
176
179
  opts.WithDevin = !*noDevin
180
+ opts.WithDsh = !*noDsh
177
181
  opts.WithAgents = !*noAgents
178
182
  opts.WithSkills = !*noSkills
179
183
  opts.WithBinary = !*noBinary
@@ -220,7 +224,7 @@ func usage(mode Mode) string {
220
224
  case ModeUpdate:
221
225
  return "usage: devrites-engine update [--target DIR] [--dry-run] [--force] [--check] [install flags] [--source-dir DIR --payload-dir DIR]\n"
222
226
  default:
223
- return "usage: devrites-engine install [--target DIR] [--dry-run] [--force] [--no-codex] [--no-omp] [--no-pi] [--no-devin] [--no-agents] [--no-skills] [--no-binary] [--short-aliases=all]\n"
227
+ return "usage: devrites-engine install [--target DIR] [--dry-run] [--force] [--no-codex] [--no-omp] [--no-pi] [--no-devin] [--no-dsh] [--no-agents] [--no-skills] [--no-binary] [--short-aliases=all]\n"
224
228
  }
225
229
  }
226
230
 
@@ -351,7 +355,7 @@ func (r *runner) validatePayload() error {
351
355
  if r.payload == "" {
352
356
  return fmt.Errorf("generated install payload not found; pass --payload-dir or run scripts/build-host-artifacts.sh")
353
357
  }
354
- if err := hostpack.ValidatePayload(r.payloadFS, r.opts.WithCodex, r.opts.WithOmp, r.opts.WithPi, r.opts.WithDevin); err != nil {
358
+ if err := hostpack.ValidatePayload(r.payloadFS, r.opts.WithCodex, r.opts.WithOmp, r.opts.WithPi, r.opts.WithDevin, r.opts.WithDsh); err != nil {
355
359
  return fmt.Errorf("generated install payload under %s: %w", r.payload, err)
356
360
  }
357
361
  return nil
@@ -370,7 +374,7 @@ func isGlobalTarget(target string) bool {
370
374
  if target == h {
371
375
  return true
372
376
  }
373
- for _, rel := range []string{".claude", ".codex", ".omp", ".pi", ".devin", filepath.Join(".config", "devin"), ".agents"} {
377
+ for _, rel := range []string{".claude", ".codex", ".omp", ".pi", ".devin", ".dsh", filepath.Join(".config", "devin"), ".agents"} {
374
378
  global := filepath.Join(h, rel)
375
379
  globals := []string{global}
376
380
  if resolved, err := filepath.EvalSymlinks(global); err == nil {
@@ -176,6 +176,7 @@ func (r *runner) sharedMarkerMerges(merge hostpack.MarkerMerge) []hostpack.Marke
176
176
  {r.opts.WithCodex, hostpack.CodexAgentsMerge},
177
177
  {r.opts.WithPi, hostpack.PiAgentsMerge},
178
178
  {r.opts.WithDevin, hostpack.DevinAgentsMerge},
179
+ {r.opts.WithDsh, hostpack.DshAgentsMerge},
179
180
  } {
180
181
  if other.enabled && other.merge.TargetRel == merge.TargetRel && other.merge.Begin != merge.Begin {
181
182
  merges = append(merges, other.merge)
@@ -90,6 +90,7 @@ func (r *runner) preflightMerges() error {
90
90
  {r.opts.WithCodex, hostpack.CodexAgentsMerge},
91
91
  {r.opts.WithPi, hostpack.PiAgentsMerge},
92
92
  {r.opts.WithDevin, hostpack.DevinAgentsMerge},
93
+ {r.opts.WithDsh, hostpack.DshAgentsMerge},
93
94
  } {
94
95
  if !m.enabled {
95
96
  continue
@@ -160,7 +161,7 @@ func (r *runner) isPinnedAlias(rel string) bool {
160
161
 
161
162
  func (r *runner) desiredInstallPaths() (map[string]bool, error) {
162
163
  out := map[string]bool{".devrites/README.md": true}
163
- for _, tree := range hostpack.InstallTrees(r.opts.WithSkills, r.opts.WithAgents, r.opts.WithCodex, r.opts.WithOmp, r.opts.WithPi, r.opts.WithDevin) {
164
+ for _, tree := range hostpack.InstallTrees(r.opts.WithSkills, r.opts.WithAgents, r.opts.WithCodex, r.opts.WithOmp, r.opts.WithPi, r.opts.WithDevin, r.opts.WithDsh) {
164
165
  err := fs.WalkDir(r.payloadFS, tree.PayloadPrefix, func(path string, d fs.DirEntry, err error) error {
165
166
  if err != nil {
166
167
  return err
@@ -181,7 +182,7 @@ func (r *runner) desiredInstallPaths() (map[string]bool, error) {
181
182
  }
182
183
  if r.opts.WithSkills && r.opts.AliasMode == "all" {
183
184
  for _, alias := range hostpack.Aliases {
184
- for _, rel := range hostpack.AliasTargets(alias, r.opts.WithCodex, r.opts.WithOmp, r.opts.WithPi, r.opts.WithDevin) {
185
+ for _, rel := range hostpack.AliasTargets(alias, r.opts.WithCodex, r.opts.WithOmp, r.opts.WithPi, r.opts.WithDevin, r.opts.WithDsh) {
185
186
  out[rel] = true
186
187
  }
187
188
  }
@@ -196,6 +197,9 @@ func (r *runner) desiredInstallPaths() (map[string]bool, error) {
196
197
  if r.opts.WithSkills && r.opts.WithDevin {
197
198
  out[hostpack.DevinAgentsMerge.MarkerRel] = true
198
199
  }
200
+ if r.opts.WithSkills && r.opts.WithDsh {
201
+ out[hostpack.DshAgentsMerge.MarkerRel] = true
202
+ }
199
203
  if r.opts.WithSkills {
200
204
  out[hostpack.ClaudeSettingsMerge.MarkerRel] = true
201
205
  }
@@ -218,6 +222,9 @@ func (r *runner) installMergeTargets() []string {
218
222
  if r.opts.WithDevin {
219
223
  out = append(out, hostpack.DevinAgentsMerge.TargetRel)
220
224
  }
225
+ if r.opts.WithDsh {
226
+ out = append(out, hostpack.DshAgentsMerge.TargetRel)
227
+ }
221
228
  }
222
229
  return out
223
230
  }
@@ -65,7 +65,7 @@ func runUpdate(opts Options) error {
65
65
  if err != nil {
66
66
  return fmt.Errorf("resolve payload %s: %w", opts.PayloadDir, err)
67
67
  }
68
- if err := hostpack.ValidatePayload(os.DirFS(payload), true, true, true, true); err != nil {
68
+ if err := hostpack.ValidatePayload(os.DirFS(payload), true, true, true, true, true); err != nil {
69
69
  return fmt.Errorf("local update payload under %s is invalid: %w", payload, err)
70
70
  }
71
71
  installFlags := manifestHeader(mf, "devrites-flags")
@@ -68,7 +68,7 @@ func lintKnownRoles(root, phase string, roles []string) error {
68
68
  skillsRoots = append(skillsRoots, dir)
69
69
  }
70
70
  }
71
- for _, rel := range []string{".omp/skills", ".agents/skills", ".pi/skills", ".devin/skills"} {
71
+ for _, rel := range []string{".omp/skills", ".agents/skills", ".pi/skills", ".devin/skills", ".dsh/skills"} {
72
72
  dir := filepath.Join(project, filepath.FromSlash(rel))
73
73
  if info, err := os.Stat(filepath.Join(dir, "devrites-lib")); err == nil && info.IsDir() {
74
74
  skillsRoots = append(skillsRoots, dir)
@@ -33,7 +33,10 @@ rules cannot fail.
33
33
  - `repairable`: each defect is neutral, preservation-safe, and owned by Clarify,
34
34
  Plan repair, Converge, Vet, Prove, Polish, Review, or Seal.
35
35
  - `unsupported`: cursor/topology is unofficial; propose no rewrite.
36
- - `gap`: evidence/contracts are insufficient. Missing input or unverifiable current rules produce `gap`, never `current` or `repairable`.
36
+ - `gap`: evidence/contracts are insufficient or the required delta has no admitted
37
+ preservation-safe route. Missing input or unverifiable current rules produce `gap`,
38
+ never `current` or `repairable`. Required candidate-affecting rollup writes also
39
+ produce `gap`.
37
40
 
38
41
  ## Rules
39
42
 
@@ -47,9 +50,14 @@ rules cannot fail.
47
50
  slices beyond the feature ceiling to Plan course-correct (`MVP cut` + named
48
51
  continuation sequence); built slices and their evidence stay.
49
52
  - For released post-Build work, route a strict-manifest, evidence/browser-binding, or
50
- candidate-check defect to Prove; an old Ship-era candidate rollup to Polish; a
51
- review-binding defect to Review; and a seal-binding or Seal-gate defect to Seal.
52
- Include only applicable owners, ordered Prove, Polish, Review, Seal. Never infer scope
53
+ candidate-check defect to Prove; a workspace-only Polish refresh to Polish only
54
+ within Upgrade's admitted gate artifacts; a review-binding defect to Review; and a
55
+ seal-binding or Seal-gate defect to Seal. Required candidate-affecting capability-ledger,
56
+ `DESIGN.md`, or ADR rollups are outside admission: return `gap` with an explicit
57
+ `/rite-polish` handoff for separate user authorization, no writable paths and no admitted route.
58
+ Never recommend invoking those writes inside Upgrade. After authorization
59
+ outside Upgrade, normal affected Prove → Review → Seal applies.
60
+ Include only applicable admitted owners, ordered Prove, Polish, Review, Seal. Never infer scope
53
61
  or treat an old pass as current proof. A Prove repair is admissible only when legacy
54
62
  scope inputs are present and agree unambiguously; ambiguous candidate scope produces
55
63
  `gap` with no route.
@@ -53,6 +53,21 @@ has no clear next move. Optional slug selects the active workspace; defaults to
53
53
  gone, hypothesis recorded. Classify the failure.
54
54
  See [cleanup-and-classify.md](reference/cleanup-and-classify.md).
55
55
 
56
+ ## Caller-owned records and routing
57
+
58
+ The controlling root accepts and persists all recovery records in `decisions.md`,
59
+ `evidence.md`, and `## Dead ends` before the next admission/attempt. This rule governs
60
+ all loaded recovery steps, including cleanup and regression instructions. A leaf
61
+ returns the complete class/rationale, proposed routing, hypothesis/probe, baseline,
62
+ exact failure/evidence, causal fingerprint, attempt number and failed idea/dead ends,
63
+ and human predicate in its existing result fields (`gates`, `dead_ends`,
64
+ `follow_ups`, or `Escalation` as applicable); no new result schema is required.
65
+ A leaf never writes `.devrites/**`, changes phase, invokes agents, or commits through
66
+ recovery. Only the controlling root routes to owning rites and supplies later attempts
67
+ with accepted records. Product/test edits remain inside the caller's exact allowed
68
+ paths; recovery never widens them. Commit/PR wording is a returned proposal for the
69
+ authorized owner, not authority to commit.
70
+
56
71
  ## Hard rules
57
72
 
58
73
  - Quote exact signal-bearing error text with typed redactions (not paraphrase); apply
@@ -79,8 +94,9 @@ has no clear next move. Optional slug selects the active workspace; defaults to
79
94
  <!-- workflow-artifact-adapter: {"module":"devrites-lib/reference/standards/workflow-artifacts.md","entry":"durable active failure or ambiguous admitted state","action":"OFFLINE_RECOVERY; correct offline, re-preflight, narrow Vet, retry only under cap","return":"saved caller or exact Plan/Vet route"} -->
80
95
  - **Classify before routing** with
81
96
  [cleanup-and-classify.md](reference/cleanup-and-classify.md).
82
- - **Durably record class and rationale** in `decisions.md` and the applicable
83
- `evidence.md` or `## Dead ends` entry.
97
+ - **Durably record class and rationale** through [Caller-owned records and routing](#caller-owned-records-and-routing):
98
+ root persists `decisions.md` and the applicable `evidence.md` or `## Dead ends`
99
+ entry; leaves return the full payload for root acceptance.
84
100
  - **One causal fingerprint, counted by the caller.** Normalize the root cause as
85
101
  `<affected boundary>: <failed invariant/failure mechanism>` and bind its minimal
86
102
  reproduction plus decisive signal rather than hashing symptom text.
@@ -98,5 +114,6 @@ has no clear next move. Optional slug selects the active workspace; defaults to
98
114
  human-only access becomes a human gate; otherwise return the spent strategy and
99
115
  reproduction to the caller, which escalates or parks per the
100
116
  [retry contract](../devrites-lib/reference/standards/afk-hitl.md#retry-cap-no-progress-loops-and-self-resolve);
101
- never request attempt four of the same strategy. While budget remains, coupled failure requiring behavior change routes
102
- `/rite-plan repair` inline; behavior-neutral rerouting uses `unblock` inline.
117
+ never request attempt four of the same strategy. While budget remains, the controlling
118
+ root routes coupled failure requiring behavior change to `/rite-plan repair` inline;
119
+ behavior-neutral rerouting uses `unblock` inline. Leaves return proposed routes only.
@@ -1,5 +1,10 @@
1
1
  # Cleanup + classify
2
2
 
3
+ All recording and routing below follows
4
+ [`SKILL.md` § Caller-owned records and routing](../SKILL.md#caller-owned-records-and-routing):
5
+ root accepts/persists the full payload and owns transitions; leaves return proposals
6
+ and evidence only, never workspace writes, agent launches, or commits.
7
+
3
8
  ## Classify one causal fingerprint
4
9
 
5
10
  Fingerprint the diagnosis, not its symptom. Reuse it until evidence disproves it; then
@@ -19,8 +24,9 @@ required before the next consumptive execution pause. Fresh authorization never
19
24
  pauses offline diagnosis or correction from retained evidence; never ask for a
20
25
  blind retry.
21
26
 
22
- Record class/routing in `decisions.md` and each failed attempt in `evidence.md`
23
- or `## Dead ends`. Apply the causal-fingerprint and three-attempt rules in
27
+ Root records class/routing in `decisions.md` and each failed attempt in `evidence.md`
28
+ or `## Dead ends`; leaves return the complete record for root acceptance/persistence
29
+ before the next admission. Apply the causal-fingerprint and three-attempt rules in
24
30
  [`SKILL.md`](../SKILL.md) Hard rules; record baseline, exact failure,
25
31
  hypothesis/probe, attempt number, and any human predicate.
26
32
 
@@ -31,4 +37,5 @@ hypothesis/probe, attempt number, and any human predicate.
31
37
  - [ ] Regression test passes (or absence of seam is documented).
32
38
  - [ ] All `[DEBUG-...]` instrumentation removed (`grep` the prefix).
33
39
  - [ ] Throwaway harnesses deleted (or moved to a clearly marked debug location).
34
- - [ ] The correct hypothesis is stated in `evidence.md` + the commit/PR message: next debugger learns.
40
+ - [ ] Root persists the correct hypothesis in `evidence.md`; leaves return it plus
41
+ proposed commit/PR wording for the authorized owner, without committing.
@@ -10,10 +10,13 @@ confidence.
10
10
 
11
11
  ## No correct seam? That itself is the finding
12
12
 
13
- Note it in `evidence.md` and append a follow-up in the active feature's
14
- `decisions.md` (or run `/rite-plan repair` if the spec is affected): the
15
- codebase architecture is preventing this class of failure from being locked
16
- down. Frame it as a *deepening opportunity* ("this module needs a seam at <X>
13
+ Follow [`SKILL.md` § Caller-owned records and routing](../SKILL.md#caller-owned-records-and-routing):
14
+ root notes it in `evidence.md` and appends a follow-up in the active feature's
15
+ `decisions.md` (or routes `/rite-plan repair` if the spec is affected). A leaf
16
+ returns the complete finding, evidence, and proposed route for root acceptance and
17
+ persistence; it never writes the workspace or invokes the rite. The codebase
18
+ architecture is preventing this class of failure from being locked down. Frame it as
19
+ a *deepening opportunity* ("this module needs a seam at <X>
17
20
  so this failure can be regression-tested") so the next `/rite-plan` repair or
18
21
  architecture cleanup pass has a concrete target.
19
22
 
@@ -1,8 +1,7 @@
1
1
  # DevRites completion reply contract
2
2
 
3
- Use the host's normal response. Do not run a progress renderer, emit session
4
- telemetry, assign a health score, or repeat state already visible in the durable
5
- artifact.
3
+ Use normal host responses. No progress renderer, session telemetry, health score,
4
+ or repetition of durable artifact state.
6
5
 
7
6
  Keep the reply compact and evidence-backed:
8
7
 
@@ -21,16 +20,17 @@ Next: <one recommended action>
21
20
  Record: <primary durable artifact path>
22
21
  ```
23
22
 
24
- `Changed:` is the complete write set, not a highlight reel: every file written
25
- or edited this turn — workspace artifact and project source alike — appears
26
- there or inside one named grouped entry, so a reviewer can `git diff` exactly
27
- those paths. `Record:` then names the single durable artifact a later session
28
- reads first.
23
+ `Changed:` lists every file written/edited this turn (workspace and source),
24
+ individually or in one named group, so reviewers can `git diff` those paths.
25
+ `Record:` names the single durable artifact the next session reads first.
29
26
 
30
- Mid-flight replies — the turns between completion states — obey the same economy:
27
+ Active `/rite-autocomplete` consumes green checkpoints/`next_action` internally.
28
+ Continue execution or tool progress; never end with a text-only final reply between green phases.
31
29
 
32
- - **Restate position.** The reader cannot hold "step 3 of 5" between turns; name it
33
- (`step N of M` / `state: <where things stand>`) rather than asking them to remember.
30
+ Standalone HITL mid-flight replies follow the same economy:
31
+
32
+ - **Restate position** (`step N of M` / `state: <where things stand>`); do not rely
33
+ on the reader remembering it between turns.
34
34
  - **One next action, doable now.** `Next:` names one concrete action completable in
35
35
  under two minutes — a command, a file to open, a yes/no decision. "Want me to
36
36
  continue?" is a stall, not an action.