devrites 7.1.2 → 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 (296) hide show
  1. package/CHANGELOG.md +6 -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/generated/README.md +3 -1
  13. package/pack/generated/dsh/AGENTS.md +20 -0
  14. package/pack/generated/dsh/agents/devrites-code-reviewer.md +180 -0
  15. package/pack/generated/dsh/agents/devrites-devex-reviewer.md +137 -0
  16. package/pack/generated/dsh/agents/devrites-doubt-reviewer.md +100 -0
  17. package/pack/generated/dsh/agents/devrites-evidence-scout.md +93 -0
  18. package/pack/generated/dsh/agents/devrites-frontend-reviewer.md +139 -0
  19. package/pack/generated/dsh/agents/devrites-performance-reviewer.md +142 -0
  20. package/pack/generated/dsh/agents/devrites-plan-drafter.md +113 -0
  21. package/pack/generated/dsh/agents/devrites-plan-reviewer.md +167 -0
  22. package/pack/generated/dsh/agents/devrites-proof-runner.md +101 -0
  23. package/pack/generated/dsh/agents/devrites-retrospector.md +82 -0
  24. package/pack/generated/dsh/agents/devrites-security-auditor.md +146 -0
  25. package/pack/generated/dsh/agents/devrites-simplifier-reviewer.md +113 -0
  26. package/pack/generated/dsh/agents/devrites-slice-wright.md +240 -0
  27. package/pack/generated/dsh/agents/devrites-spec-reviewer.md +105 -0
  28. package/pack/generated/dsh/agents/devrites-strategy-reviewer.md +109 -0
  29. package/pack/generated/dsh/agents/devrites-test-analyst.md +110 -0
  30. package/pack/generated/dsh/agents/devrites-upgrade-planner.md +107 -0
  31. package/pack/generated/dsh/agents/fast-builder.md +92 -0
  32. package/pack/generated/dsh/agents/fast-checker.md +61 -0
  33. package/pack/generated/dsh/agents/fast-critic.md +71 -0
  34. package/pack/generated/dsh/agents/fast-planner.md +95 -0
  35. package/pack/generated/dsh/agents/overhaul-backend-engineer.md +70 -0
  36. package/pack/generated/dsh/agents/overhaul-boundary.md +64 -0
  37. package/pack/generated/dsh/agents/overhaul-craft.md +85 -0
  38. package/pack/generated/dsh/agents/overhaul-frontend-engineer.md +73 -0
  39. package/pack/generated/dsh/agents/overhaul-implementer.md +72 -0
  40. package/pack/generated/dsh/agents/overhaul-recon.md +77 -0
  41. package/pack/generated/dsh/agents/overhaul-specialist.md +67 -0
  42. package/pack/generated/dsh/agents/overhaul-verifier.md +73 -0
  43. package/pack/generated/dsh/runtime/cordis.patch.yml +1450 -0
  44. package/pack/generated/dsh/runtime/specialist.mjs +62 -0
  45. package/pack/generated/dsh/skills/devrites-api-interface/SKILL.md +65 -0
  46. package/pack/generated/dsh/skills/devrites-audit/SKILL.md +60 -0
  47. package/pack/generated/dsh/skills/devrites-browser-proof/SKILL.md +109 -0
  48. package/pack/generated/dsh/skills/devrites-browser-proof/reference/browser-performance.md +19 -0
  49. package/pack/generated/dsh/skills/devrites-browser-proof/reference/visual-verdict.md +38 -0
  50. package/pack/generated/dsh/skills/devrites-debug-recovery/SKILL.md +119 -0
  51. package/pack/generated/dsh/skills/devrites-debug-recovery/reference/build-the-loop.md +58 -0
  52. package/pack/generated/dsh/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +41 -0
  53. package/pack/generated/dsh/skills/devrites-debug-recovery/reference/hypotheses.md +23 -0
  54. package/pack/generated/dsh/skills/devrites-debug-recovery/reference/instrumentation.md +21 -0
  55. package/pack/generated/dsh/skills/devrites-debug-recovery/reference/regression-test.md +33 -0
  56. package/pack/generated/dsh/skills/devrites-debug-recovery/reference/trace.md +25 -0
  57. package/pack/generated/dsh/skills/devrites-doubt/SKILL.md +83 -0
  58. package/pack/generated/dsh/skills/devrites-frontend-craft/SKILL.md +89 -0
  59. package/pack/generated/dsh/skills/devrites-frontend-craft/reference/craft.md +63 -0
  60. package/pack/generated/dsh/skills/devrites-frontend-craft/reference/design-references.md +120 -0
  61. package/pack/generated/dsh/skills/devrites-frontend-craft/reference/fullstack.md +46 -0
  62. package/pack/generated/dsh/skills/devrites-frontend-craft/reference/quality-standards.md +286 -0
  63. package/pack/generated/dsh/skills/devrites-frontend-craft/reference/reuse-first.md +53 -0
  64. package/pack/generated/dsh/skills/devrites-frontend-craft/reference/shape.md +61 -0
  65. package/pack/generated/dsh/skills/devrites-interview/SKILL.md +107 -0
  66. package/pack/generated/dsh/skills/devrites-lib/SKILL.md +98 -0
  67. package/pack/generated/dsh/skills/devrites-lib/reference/candidate-integrity.md +59 -0
  68. package/pack/generated/dsh/skills/devrites-lib/reference/intent-map.md +86 -0
  69. package/pack/generated/dsh/skills/devrites-lib/reference/orchestration-profiles.md +48 -0
  70. package/pack/generated/dsh/skills/devrites-lib/reference/parallel-dispatch.md +184 -0
  71. package/pack/generated/dsh/skills/devrites-lib/reference/reply-contract.md +123 -0
  72. package/pack/generated/dsh/skills/devrites-lib/reference/standards/README.md +70 -0
  73. package/pack/generated/dsh/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md +32 -0
  74. package/pack/generated/dsh/skills/devrites-lib/reference/standards/afk-hitl.md +467 -0
  75. package/pack/generated/dsh/skills/devrites-lib/reference/standards/agents.md +231 -0
  76. package/pack/generated/dsh/skills/devrites-lib/reference/standards/anti-patterns.md +50 -0
  77. package/pack/generated/dsh/skills/devrites-lib/reference/standards/architecture-health.md +64 -0
  78. package/pack/generated/dsh/skills/devrites-lib/reference/standards/assumption-checkpoints.md +42 -0
  79. package/pack/generated/dsh/skills/devrites-lib/reference/standards/audit-coverage.md +107 -0
  80. package/pack/generated/dsh/skills/devrites-lib/reference/standards/browser-proof-checklist.md +37 -0
  81. package/pack/generated/dsh/skills/devrites-lib/reference/standards/ci-cd.md +62 -0
  82. package/pack/generated/dsh/skills/devrites-lib/reference/standards/code-index.md +111 -0
  83. package/pack/generated/dsh/skills/devrites-lib/reference/standards/code-navigation.md +69 -0
  84. package/pack/generated/dsh/skills/devrites-lib/reference/standards/code-review.md +178 -0
  85. package/pack/generated/dsh/skills/devrites-lib/reference/standards/coding-style.md +53 -0
  86. package/pack/generated/dsh/skills/devrites-lib/reference/standards/context-hygiene.md +136 -0
  87. package/pack/generated/dsh/skills/devrites-lib/reference/standards/core.md +202 -0
  88. package/pack/generated/dsh/skills/devrites-lib/reference/standards/data-integrity.md +144 -0
  89. package/pack/generated/dsh/skills/devrites-lib/reference/standards/debug-recovery.md +42 -0
  90. package/pack/generated/dsh/skills/devrites-lib/reference/standards/definition-of-done.md +25 -0
  91. package/pack/generated/dsh/skills/devrites-lib/reference/standards/deprecation.md +49 -0
  92. package/pack/generated/dsh/skills/devrites-lib/reference/standards/developer-experience.md +128 -0
  93. package/pack/generated/dsh/skills/devrites-lib/reference/standards/development-workflow.md +31 -0
  94. package/pack/generated/dsh/skills/devrites-lib/reference/standards/documentation.md +55 -0
  95. package/pack/generated/dsh/skills/devrites-lib/reference/standards/duplicate-code.md +129 -0
  96. package/pack/generated/dsh/skills/devrites-lib/reference/standards/edge-case-trace.md +94 -0
  97. package/pack/generated/dsh/skills/devrites-lib/reference/standards/elicitation.md +114 -0
  98. package/pack/generated/dsh/skills/devrites-lib/reference/standards/error-handling.md +49 -0
  99. package/pack/generated/dsh/skills/devrites-lib/reference/standards/gates.md +159 -0
  100. package/pack/generated/dsh/skills/devrites-lib/reference/standards/git-workflow.md +51 -0
  101. package/pack/generated/dsh/skills/devrites-lib/reference/standards/glossary.md +40 -0
  102. package/pack/generated/dsh/skills/devrites-lib/reference/standards/hooks.md +41 -0
  103. package/pack/generated/dsh/skills/devrites-lib/reference/standards/integration-reliability.md +121 -0
  104. package/pack/generated/dsh/skills/devrites-lib/reference/standards/loop-operations.md +123 -0
  105. package/pack/generated/dsh/skills/devrites-lib/reference/standards/observability.md +90 -0
  106. package/pack/generated/dsh/skills/devrites-lib/reference/standards/one-shot-actions.md +105 -0
  107. package/pack/generated/dsh/skills/devrites-lib/reference/standards/patterns.md +70 -0
  108. package/pack/generated/dsh/skills/devrites-lib/reference/standards/performance.md +88 -0
  109. package/pack/generated/dsh/skills/devrites-lib/reference/standards/principles.md +56 -0
  110. package/pack/generated/dsh/skills/devrites-lib/reference/standards/prose-style.md +127 -0
  111. package/pack/generated/dsh/skills/devrites-lib/reference/standards/release/ship-checklist.md +12 -0
  112. package/pack/generated/dsh/skills/devrites-lib/reference/standards/repository-topology.md +82 -0
  113. package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/README.md +28 -0
  114. package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/ci-workflows.md +50 -0
  115. package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/default.md +42 -0
  116. package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/go.md +47 -0
  117. package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/python.md +46 -0
  118. package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/react.md +55 -0
  119. package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/shell.md +40 -0
  120. package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/stack-profile.md +155 -0
  121. package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/ts-js.md +74 -0
  122. package/pack/generated/dsh/skills/devrites-lib/reference/standards/review-checklist.md +14 -0
  123. package/pack/generated/dsh/skills/devrites-lib/reference/standards/security-checklist.md +30 -0
  124. package/pack/generated/dsh/skills/devrites-lib/reference/standards/security.md +283 -0
  125. package/pack/generated/dsh/skills/devrites-lib/reference/standards/skill-authoring.md +269 -0
  126. package/pack/generated/dsh/skills/devrites-lib/reference/standards/spec-grammar.md +214 -0
  127. package/pack/generated/dsh/skills/devrites-lib/reference/standards/test-proof-checklist.md +18 -0
  128. package/pack/generated/dsh/skills/devrites-lib/reference/standards/testing.md +295 -0
  129. package/pack/generated/dsh/skills/devrites-lib/reference/standards/tooling.md +125 -0
  130. package/pack/generated/dsh/skills/devrites-lib/reference/standards/verification-methods.md +143 -0
  131. package/pack/generated/dsh/skills/devrites-lib/reference/standards/windows.md +60 -0
  132. package/pack/generated/dsh/skills/devrites-lib/reference/standards/workflow-artifacts.md +435 -0
  133. package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/code.md +44 -0
  134. package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/comparison.md +42 -0
  135. package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/diagram.md +51 -0
  136. package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/index.md +66 -0
  137. package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/input.md +46 -0
  138. package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/outline-template.md +106 -0
  139. package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/plan.md +48 -0
  140. package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/slides.md +40 -0
  141. package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/table.md +42 -0
  142. package/pack/generated/dsh/skills/devrites-lib/reference/workspace-artifact-schema.md +312 -0
  143. package/pack/generated/dsh/skills/devrites-prose-craft/SKILL.md +81 -0
  144. package/pack/generated/dsh/skills/devrites-prose-craft/reference/banned-phrases.md +132 -0
  145. package/pack/generated/dsh/skills/devrites-prose-craft/reference/examples.md +136 -0
  146. package/pack/generated/dsh/skills/devrites-prose-craft/reference/structures.md +196 -0
  147. package/pack/generated/dsh/skills/devrites-source-driven/SKILL.md +54 -0
  148. package/pack/generated/dsh/skills/devrites-ux-shape/SKILL.md +135 -0
  149. package/pack/generated/dsh/skills/devrites-ux-shape/reference/brief-template.md +108 -0
  150. package/pack/generated/dsh/skills/devrites-ux-shape/reference/visual-direction-probe.md +50 -0
  151. package/pack/generated/dsh/skills/overhaul/SKILL.md +221 -0
  152. package/pack/generated/dsh/skills/overhaul/references/audit-domains.md +390 -0
  153. package/pack/generated/dsh/skills/overhaul/references/lifecycle.md +314 -0
  154. package/pack/generated/dsh/skills/overhaul/references/orchestration.md +291 -0
  155. package/pack/generated/dsh/skills/overhaul/references/records.md +203 -0
  156. package/pack/generated/dsh/skills/overhaul/references/repair-and-measurement.md +310 -0
  157. package/pack/generated/dsh/skills/overhaul/references/review-and-report.md +139 -0
  158. package/pack/generated/dsh/skills/overhaul/references/scope-and-safety.md +233 -0
  159. package/pack/generated/dsh/skills/overhaul/references/scoring.md +261 -0
  160. package/pack/generated/dsh/skills/overhaul/references/stack-profiles.md +316 -0
  161. package/pack/generated/dsh/skills/rite/SKILL.md +157 -0
  162. package/pack/generated/dsh/skills/rite/reference/menu.md +49 -0
  163. package/pack/generated/dsh/skills/rite-adopt/SKILL.md +64 -0
  164. package/pack/generated/dsh/skills/rite-adopt/reference/adoption.md +25 -0
  165. package/pack/generated/dsh/skills/rite-adopt/reference/anti-patterns.md +19 -0
  166. package/pack/generated/dsh/skills/rite-autocomplete/SKILL.md +167 -0
  167. package/pack/generated/dsh/skills/rite-autocomplete/reference/decision-policy.md +44 -0
  168. package/pack/generated/dsh/skills/rite-autocomplete/reference/lookahead.md +50 -0
  169. package/pack/generated/dsh/skills/rite-autocomplete/reference/loop.md +164 -0
  170. package/pack/generated/dsh/skills/rite-autocomplete/reference/stop-conditions.md +118 -0
  171. package/pack/generated/dsh/skills/rite-build/SKILL.md +126 -0
  172. package/pack/generated/dsh/skills/rite-build/reference/afk-discipline.md +153 -0
  173. package/pack/generated/dsh/skills/rite-build/reference/anti-patterns.md +27 -0
  174. package/pack/generated/dsh/skills/rite-build/reference/checkpoint-protocol.md +115 -0
  175. package/pack/generated/dsh/skills/rite-build/reference/checkpoint.md +79 -0
  176. package/pack/generated/dsh/skills/rite-build/reference/frontend-trigger.md +39 -0
  177. package/pack/generated/dsh/skills/rite-build/reference/one-slice-cycle.md +57 -0
  178. package/pack/generated/dsh/skills/rite-build/reference/output.md +29 -0
  179. package/pack/generated/dsh/skills/rite-build/reference/parallel-batch.md +260 -0
  180. package/pack/generated/dsh/skills/rite-build/reference/phase-contract.md +130 -0
  181. package/pack/generated/dsh/skills/rite-build/reference/spec-drift-guard.md +91 -0
  182. package/pack/generated/dsh/skills/rite-build/reference/tdd.md +27 -0
  183. package/pack/generated/dsh/skills/rite-build/reference/wright-dispatch.md +198 -0
  184. package/pack/generated/dsh/skills/rite-clarify/SKILL.md +104 -0
  185. package/pack/generated/dsh/skills/rite-clarify/reference/anti-patterns.md +24 -0
  186. package/pack/generated/dsh/skills/rite-clarify/reference/decision-coverage.md +56 -0
  187. package/pack/generated/dsh/skills/rite-converge/SKILL.md +167 -0
  188. package/pack/generated/dsh/skills/rite-converge/reference/anti-patterns.md +35 -0
  189. package/pack/generated/dsh/skills/rite-converge/reference/convergence-assessment.md +70 -0
  190. package/pack/generated/dsh/skills/rite-customize/SKILL.md +64 -0
  191. package/pack/generated/dsh/skills/rite-define/SKILL.md +203 -0
  192. package/pack/generated/dsh/skills/rite-define/reference/anti-patterns.md +26 -0
  193. package/pack/generated/dsh/skills/rite-define/reference/gates.md +160 -0
  194. package/pack/generated/dsh/skills/rite-define/reference/plan-template.md +153 -0
  195. package/pack/generated/dsh/skills/rite-doctor/SKILL.md +107 -0
  196. package/pack/generated/dsh/skills/rite-dogfood/SKILL.md +57 -0
  197. package/pack/generated/dsh/skills/rite-explain/SKILL.md +154 -0
  198. package/pack/generated/dsh/skills/rite-explain/reference/intake.md +89 -0
  199. package/pack/generated/dsh/skills/rite-fast/SKILL.md +185 -0
  200. package/pack/generated/dsh/skills/rite-fast/reference/artifacts.md +107 -0
  201. package/pack/generated/dsh/skills/rite-fast/reference/check-and-triage.md +51 -0
  202. package/pack/generated/dsh/skills/rite-frame/SKILL.md +119 -0
  203. package/pack/generated/dsh/skills/rite-frame/reference/failure-modes.md +66 -0
  204. package/pack/generated/dsh/skills/rite-handoff/SKILL.md +117 -0
  205. package/pack/generated/dsh/skills/rite-handoff/reference/handoff-template.md +56 -0
  206. package/pack/generated/dsh/skills/rite-harness/SKILL.md +76 -0
  207. package/pack/generated/dsh/skills/rite-harness/reference/feature-map.md +60 -0
  208. package/pack/generated/dsh/skills/rite-learn/SKILL.md +107 -0
  209. package/pack/generated/dsh/skills/rite-plan/SKILL.md +215 -0
  210. package/pack/generated/dsh/skills/rite-plan/reference/anti-patterns.md +34 -0
  211. package/pack/generated/dsh/skills/rite-plan/reference/dependency-graph.md +48 -0
  212. package/pack/generated/dsh/skills/rite-plan/reference/replan-and-repair.md +114 -0
  213. package/pack/generated/dsh/skills/rite-plan/reference/slicing.md +187 -0
  214. package/pack/generated/dsh/skills/rite-plan/reference/task-breakdown.md +50 -0
  215. package/pack/generated/dsh/skills/rite-polish/SKILL.md +128 -0
  216. package/pack/generated/dsh/skills/rite-polish/reference/adr-promotion.md +11 -0
  217. package/pack/generated/dsh/skills/rite-polish/reference/anti-ai-slop.md +210 -0
  218. package/pack/generated/dsh/skills/rite-polish/reference/anti-patterns.md +30 -0
  219. package/pack/generated/dsh/skills/rite-polish/reference/backend-polish.md +80 -0
  220. package/pack/generated/dsh/skills/rite-polish/reference/browser-polish-evidence.md +33 -0
  221. package/pack/generated/dsh/skills/rite-polish/reference/code.md +87 -0
  222. package/pack/generated/dsh/skills/rite-polish/reference/design-memory.md +117 -0
  223. package/pack/generated/dsh/skills/rite-polish/reference/design-system-discovery.md +8 -0
  224. package/pack/generated/dsh/skills/rite-polish/reference/harden-checklist.md +110 -0
  225. package/pack/generated/dsh/skills/rite-polish/reference/ledger.md +67 -0
  226. package/pack/generated/dsh/skills/rite-polish/reference/ui.md +146 -0
  227. package/pack/generated/dsh/skills/rite-pov/SKILL.md +71 -0
  228. package/pack/generated/dsh/skills/rite-pr-feedback/SKILL.md +61 -0
  229. package/pack/generated/dsh/skills/rite-pressure-test/SKILL.md +76 -0
  230. package/pack/generated/dsh/skills/rite-prototype/SKILL.md +106 -0
  231. package/pack/generated/dsh/skills/rite-prove/SKILL.md +151 -0
  232. package/pack/generated/dsh/skills/rite-prove/reference/acceptance-proof.md +88 -0
  233. package/pack/generated/dsh/skills/rite-prove/reference/anti-patterns.md +25 -0
  234. package/pack/generated/dsh/skills/rite-prove/reference/browser-proof.md +51 -0
  235. package/pack/generated/dsh/skills/rite-prove/reference/failure-triage.md +53 -0
  236. package/pack/generated/dsh/skills/rite-prove/reference/proof-ladder.md +39 -0
  237. package/pack/generated/dsh/skills/rite-prove/reference/test-command-discovery.md +36 -0
  238. package/pack/generated/dsh/skills/rite-quick/SKILL.md +97 -0
  239. package/pack/generated/dsh/skills/rite-resolve/SKILL.md +113 -0
  240. package/pack/generated/dsh/skills/rite-resolve/reference/answer-protocol.md +129 -0
  241. package/pack/generated/dsh/skills/rite-review/SKILL.md +190 -0
  242. package/pack/generated/dsh/skills/rite-review/reference/anti-patterns.md +32 -0
  243. package/pack/generated/dsh/skills/rite-review/reference/cognitive-load.md +90 -0
  244. package/pack/generated/dsh/skills/rite-review/reference/feature-scoped-review.md +26 -0
  245. package/pack/generated/dsh/skills/rite-review/reference/five-axis-review.md +66 -0
  246. package/pack/generated/dsh/skills/rite-review/reference/nielsen-heuristics.md +126 -0
  247. package/pack/generated/dsh/skills/rite-review/reference/performance-checklist.md +99 -0
  248. package/pack/generated/dsh/skills/rite-review/reference/performance-review.md +14 -0
  249. package/pack/generated/dsh/skills/rite-review/reference/security-review.md +44 -0
  250. package/pack/generated/dsh/skills/rite-seal/SKILL.md +99 -0
  251. package/pack/generated/dsh/skills/rite-seal/reference/anti-patterns.md +29 -0
  252. package/pack/generated/dsh/skills/rite-seal/reference/final-evidence.md +41 -0
  253. package/pack/generated/dsh/skills/rite-seal/reference/go-no-go.md +32 -0
  254. package/pack/generated/dsh/skills/rite-seal/reference/output.md +5 -0
  255. package/pack/generated/dsh/skills/rite-seal/reference/phase-contract.md +56 -0
  256. package/pack/generated/dsh/skills/rite-seal/reference/risk-and-rollback.md +56 -0
  257. package/pack/generated/dsh/skills/rite-seal/reference/seal-template.md +32 -0
  258. package/pack/generated/dsh/skills/rite-ship/SKILL.md +101 -0
  259. package/pack/generated/dsh/skills/rite-ship/reference/anti-patterns.md +28 -0
  260. package/pack/generated/dsh/skills/rite-ship/reference/close-out.md +69 -0
  261. package/pack/generated/dsh/skills/rite-ship/reference/git-ship.md +128 -0
  262. package/pack/generated/dsh/skills/rite-ship/reference/rollout.md +62 -0
  263. package/pack/generated/dsh/skills/rite-ship/reference/ship-template.md +40 -0
  264. package/pack/generated/dsh/skills/rite-spec/SKILL.md +169 -0
  265. package/pack/generated/dsh/skills/rite-spec/reference/acceptance-criteria.md +31 -0
  266. package/pack/generated/dsh/skills/rite-spec/reference/ai-spec-template.md +40 -0
  267. package/pack/generated/dsh/skills/rite-spec/reference/anti-patterns.md +27 -0
  268. package/pack/generated/dsh/skills/rite-spec/reference/interview-patterns.md +56 -0
  269. package/pack/generated/dsh/skills/rite-spec/reference/investigation.md +83 -0
  270. package/pack/generated/dsh/skills/rite-spec/reference/question-protocol.md +36 -0
  271. package/pack/generated/dsh/skills/rite-spec/reference/references-intake.md +62 -0
  272. package/pack/generated/dsh/skills/rite-spec/reference/spec-checklists.md +89 -0
  273. package/pack/generated/dsh/skills/rite-spec/reference/spec-template.md +160 -0
  274. package/pack/generated/dsh/skills/rite-spec/reference/state-workspace.md +240 -0
  275. package/pack/generated/dsh/skills/rite-status/SKILL.md +74 -0
  276. package/pack/generated/dsh/skills/rite-temper/SKILL.md +137 -0
  277. package/pack/generated/dsh/skills/rite-temper/reference/anti-patterns.md +30 -0
  278. package/pack/generated/dsh/skills/rite-temper/reference/review-dimensions.md +66 -0
  279. package/pack/generated/dsh/skills/rite-temper/reference/scope-modes.md +52 -0
  280. package/pack/generated/dsh/skills/rite-temper/reference/significance.md +55 -0
  281. package/pack/generated/dsh/skills/rite-temper/reference/strategy-template.md +101 -0
  282. package/pack/generated/dsh/skills/rite-upgrade/SKILL.md +142 -0
  283. package/pack/generated/dsh/skills/rite-vet/SKILL.md +242 -0
  284. package/pack/generated/dsh/skills/rite-vet/reference/anti-patterns.md +43 -0
  285. package/pack/generated/dsh/skills/rite-vet/reference/artifacts.md +248 -0
  286. package/pack/generated/dsh/skills/rite-vet/reference/cross-model.md +19 -0
  287. package/pack/generated/dsh/skills/rite-vet/reference/depth.md +59 -0
  288. package/pack/generated/dsh/skills/rite-vet/reference/eng-lenses.md +48 -0
  289. package/pack/generated/dsh/skills/rite-vet/reference/review-axes.md +210 -0
  290. package/pack/generated/dsh/skills/rite-watch-pr/SKILL.md +87 -0
  291. package/pack/generated/dsh/skills/rite-zoom-out/SKILL.md +76 -0
  292. package/package.json +3 -1
  293. package/scripts/build-host-artifacts.sh +6 -2
  294. package/scripts/dsh-generate.py +135 -0
  295. package/scripts/dsh-specialist.mjs +62 -0
  296. package/scripts/install-lib.sh +3 -1
@@ -0,0 +1,467 @@
1
+ # AFK & HITL: the pause/resume contract
2
+
3
+ > Root-only: not inlined in --role bundles.
4
+
5
+ > Applies when: any rite/devrites skill that can pause for a human or run unattended; irreversible-risk list, budgets, recovery accounting.
6
+
7
+ Two pause modes for `rite-*`/`devrites-*`, chiefly `/rite-build`, `/rite-status`,
8
+ `/rite-resolve`, `devrites-doubt`: one sentinel, queue, resume verb.
9
+
10
+ ## Contents
11
+
12
+ - [Run modes](#run-modes)
13
+ - [The sentinel: `.devrites/AFK`](#the-sentinel-devritesafk)
14
+ - [Unattended resource envelope](#unattended-resource-envelope)
15
+ - [The four gates](#the-four-gates)
16
+ - [Option set: how every gap is presented](#option-set-how-every-gap-is-presented)
17
+ - [Decision ownership: search before asking](#decision-ownership-search-before-asking)
18
+ - [Irreversible-risk list (always pause)](#irreversible-risk-list-always-pause)
19
+ - [`questions.md` schema](#questionsmd-schema)
20
+ - [`state.md` `Awaiting human` block](#statemd-awaiting-human-block)
21
+ - [The resume verb: `/rite-resolve`](#the-resume-verb-riteresolve)
22
+ - [AFK exception for discretionary pauses](#afk-exception-for-discretionary-pauses)
23
+ - [Retry cap, no-progress loops, and self-resolve](#retry-cap-no-progress-loops-and-self-resolve)
24
+ - [What the rule does NOT cover](#what-the-rule-does-not-cover)
25
+ - [Cross-reference](#cross-reference)
26
+
27
+ ## Run modes
28
+
29
+ - **HITL (default):** human is present. At a gap/checkpoint the skill **asks inline** via
30
+ the harness `ask_user_question` tool: a ranked **option set** (recommended first, each with
31
+ dimension-tagged rationale; see [Option set](#option-set-how-every-gap-is-presented)). The
32
+ human picks; the skill records the pick to `questions.md` (`answered`) + `decisions.md` and
33
+ **continues in place: no `/rite-resolve` round-trip**. `/rite-resolve` is only for answering
34
+ **async** (a pause that already stopped the session) or in **batch**.
35
+ **If the current surface has no interactive question tool** (Codex outside Plan mode:
36
+ `request_user_input` is Plan-mode-only.) Render the same option set as a plain numbered
37
+ list in chat and **end the turn**. The human's reply is the selection. Auto-picking an option
38
+ is **AFK's contract, gated by the `.devrites/AFK` sentinel**: a missing tool never
39
+ converts a HITL gap into a self-answered one.
40
+ - **AFK:** `.devrites/AFK` is present. For any gate AFK may auto-handle (severity in
41
+ `allow_gates`), the skill **auto-picks the recommended option** (option 1 of the set), records
42
+ it (`gate: advisory` + a `decisions.md` ADR), and continues unattended. Gates above the
43
+ ceiling (and every irreversible-risk item) pause and queue a `questions.md` entry for
44
+ `/rite-resolve`.
45
+
46
+ `.devrites/AFK` presence owns run mode; gate-deciding skills re-read it at decision
47
+ time. No `state.md` run-mode field can drift out of sync.
48
+
49
+ ## The sentinel: `.devrites/AFK`
50
+
51
+ Presence = AFK active. The file body is optional YAML:
52
+
53
+ ```yaml
54
+ max_slices: 10 # whole-workspace writer budget; seeds state.md remaining count
55
+ max_agents: 32 # native agent dispatches in one host activation
56
+ max_minutes: 120 # min; /rite-autocomplete: not a ceiling
57
+ max_review_queue: 8 # unresolved review/gate items admitted before fan-out stops
58
+ # max_tokens: 200000 # optional stricter host-observed token cap
59
+ # max_cost_usd: 10 # optional stricter host-observed cost cap
60
+ notify: 'curl -fsS -m 10 -d "$DEVRITES_QID: $DEVRITES_QUESTION" ntfy.sh/my-topic' # shell command; examples: .dsh/skills/rite-build/reference/afk-discipline.md
61
+ allow_gates: [advisory, validating] # gate severities AFK auto-handles (auto-picks the recommended option)
62
+ continue_sequence: true # after Seal GO, open the next recorded continuation
63
+ max_workspaces: 5 # workspaces one armed sequence may open
64
+ max_parallel: 10 # unattended default cap; `--parallel N` on this invocation wins and may rewrite only this field
65
+ ```
66
+
67
+ The file is **read-only config**: never rewritten in place, except `/rite-autocomplete --parallel N` writes or replaces only `max_parallel: N`.
68
+
69
+ Outside active `/rite-autocomplete`, the following slice-budget rules apply:
70
+ `max_slices` seeds root-owned `state.md` cursor `afk_slices_remaining`
71
+ (released bullet alias: `AFK slices remaining: <n>`). Accept either spelling;
72
+ preserve table/bullet presentation. Before dispatch, require configured
73
+ `max_slices` and existing remaining values to be decimal nonnegative integers;
74
+ malformed or negative values fail closed. The pending → built state transition spends
75
+ exactly one slice: on the first green slice write `max_slices - 1`, otherwise
76
+ write `remaining - 1`, never below zero. Re-reading an already built slice does
77
+ not spend again. At zero, stop before the next dispatch.
78
+
79
+ A stricter post-planning budget may pre-seed `afk_slices_remaining` before first
80
+ dispatch, not rewrite the sentinel: use the minimum of pending work and all
81
+ configured/explicit caps. An existing counter may be lowered but never increased or reinitialized.
82
+ It remains effective even if the sentinel omits `max_slices`. Under active `/rite-autocomplete`, skip these slice-cap checks,
83
+ charges, zero stops, and minimum-cap seeding; use its
84
+ [post-Vet budget](../../../rite-autocomplete/reference/loop.md#derive-the-mutable-post-vet-budget).
85
+
86
+ ### Sequence continuation (`continue_sequence`, `max_workspaces`)
87
+
88
+ `continue_sequence: true` opens the next **recorded** continuation after Seal GO.
89
+ Under `/rite-autocomplete`, absent means on, even in existing sentinels; `false` opts out.
90
+ `max_workspaces` (default 5): nonnegative decimal sequence budget, fail closed;
91
+ charge new workspaces only, never resumes. `max_slices`/`afk_slices_remaining` stay **per workspace** outside active
92
+ `/rite-autocomplete`, which uses its post-Vet pending count.
93
+
94
+ The chain lives in root-owned `state.md` cursor fields, not in chat:
95
+ `sequence_parent` (the immediately preceding workspace slug), `sequence_position`
96
+ (1-based ordinal), `sequence_workspaces_remaining` (slots the chain may still
97
+ open after this workspace), and — on the release milestone only —
98
+ `sequence_role: release`. Seed exactly once from the recorded parent and its counter at creation.
99
+ On resume, re-derive missing continuation fields from its `brief.md` parent/position
100
+ and parent counter — same values, never a second charge. No recorded parent/position means no sequence membership. Counter only decreases;
101
+ malformed values fail closed; `0` opens nothing.
102
+ `sequence_role: release` makes `check candidate` and `check seal` require the
103
+ candidate manifest to cover the whole recorded chain — run
104
+ `devrites-engine state merge-manifest <slug>` before Prove.
105
+
106
+ - Only continuations recorded in the parent's `decisions.md` sequence
107
+ ([slicing.md § Continuation workspaces](../../../rite-plan/reference/slicing.md#continuation-workspaces))
108
+ qualify; no next entry or exhausted `max_workspaces` stops with that reason. The review-queue bound applies only outside active
109
+ `/rite-autocomplete`.
110
+ - Milestones are **not** shipped: they stay sealed and unarchived in `.devrites/work/`
111
+ with `Next step: /rite-ship` preserved. Local `WIP(<slug>):` checkpoints still
112
+ land ([checkpoint.md](../../../rite-build/reference/checkpoint.md)), so the tree
113
+ stays clean and crash-safe.
114
+ - Git stays human-gated. The release ship is one disclosed plan, one literal `GO`, and
115
+ one native approval; it collapses the sequence's `WIP` commits into the single
116
+ release commit and may archive the sealed predecessors.
117
+ - Human-owned, safety, access, and exhaustion stops remain. Active
118
+ `/rite-autocomplete` recovers agent-owned Seal `NO-GO` per
119
+ [stop-conditions.md](../../../rite-autocomplete/reference/stop-conditions.md), not a handoff.
120
+
121
+ `max_parallel` is the unattended default batch cap only when this invocation does
122
+ not contain `--parallel N`; `1` forces the serial cycle only in that default
123
+ case. An exact `--parallel N` on `/rite-autocomplete` or `/rite-build` is the
124
+ batch cap for this run: do not consult leftover sentinel `max_parallel`, and do
125
+ not treat `max_parallel: 1` as serial. `/rite-autocomplete --parallel N` writes
126
+ or replaces only that field so later ticks keep the cap; `/rite-build --parallel N`
127
+ wins for that invocation without rewriting the sentinel. Never write `max_slices`
128
+ from `--max-slices`. **Failing case:** `/rite-autocomplete --parallel 5` honors a
129
+ leftover `max_parallel: 1` and stays serial.
130
+ Unattended runs take the largest eligible set ≤ that cap and recompute after
131
+ every completed round (serial slice or parallel integrate)
132
+ ([parallel-batch.md § Dynamic selection and re-batching](../../../rite-build/reference/parallel-batch.md#dynamic-selection-and-re-batching)).
133
+
134
+ ## Unattended resource envelope
135
+
136
+ Outside `/rite-autocomplete`, AFK writer admission needs a bounded input queue,
137
+ effective slice cap, and valid `max_agents`, `max_minutes`, and `max_review_queue`.
138
+ Existing sentinels that declare writer admission but miss/malform these fail closed
139
+ (Autocomplete's sentinel omits them as unlimited; see below); cold resume keeps the
140
+ state-owned slice counter. A leftover `expires_at` is ignored and never rewritten.
141
+ Read-only watchers use equivalent native caps from [`loop-operations.md`](loop-operations.md).
142
+
143
+ Outside active `/rite-autocomplete`, the following dispatch/queue limits apply:
144
+ `max_agents` counts every leaf in the native activation, including failures and
145
+ parallel branches; do not add dispatch telemetry to `.devrites/`. `max_review_queue`
146
+ counts open validating questions plus unresolved admitted Critical/Important findings.
147
+ Above it stop; at it run only reconciliation that reduces the queue.
148
+
149
+ Optional `max_tokens`/`max_cost_usd` lower native caps in all unattended modes; if declared but unobservable, stop.
150
+ `/rite-autocomplete` deliberately ignores `max_slices`, `max_agents`, `max_minutes` and
151
+ `max_review_queue` ([stop-conditions.md](../../../rite-autocomplete/reference/stop-conditions.md));
152
+ not ceilings there.
153
+
154
+ Numeric limits are nonnegative decimals. Before costly checks, fan-out, or writing,
155
+ run cheap readiness and reject overlap. Outside active `/rite-autocomplete`, count
156
+ queue and confirm agent/time headroom; under Autocomplete those ignored limits
157
+ never block admission. In both cases confirm declared token/cost and native safety
158
+ headroom; re-check after every result. Never start a call that can exceed an
159
+ applicable remaining limit. Agent/time/token/cost counters are per native activation and start fresh only
160
+ for a new activation. Slice/recovery state and review queue remain durable/recomputed across wakes.
161
+ Persist stops/checkpoints before notification.
162
+
163
+ New sentinels omit `expires_at` and notification/token/cost caps. Post-Vet pending
164
+ count may lower standalone slices. Never add missing defaults to existing files.
165
+
166
+ Delete the file to restore HITL on the next invocation.
167
+
168
+ ## The four gates
169
+
170
+ Every `Mode: HITL` slice declares a `Gate:` and an `SLA:`. See
171
+ [`.dsh/skills/rite-define/reference/gates.md`](../../../rite-define/reference/gates.md)
172
+ for the full taxonomy. Summary:
173
+
174
+ | Gate | Stakes | Pause? | SLA | AFK auto-handle when in `allow_gates`? |
175
+ |---|---|---|---|---|
176
+ | advisory | low | no | none | yes (log + proceed) |
177
+ | validating | medium | async | 4h | yes (build + queue, no merge until resolved) |
178
+ | blocking | high | sync | 15m | **no** (always pauses) |
179
+ | escalating | novel pattern | sync to specialist | 24h | **no** (always pauses) |
180
+
181
+ `blocking` and `escalating` always pause for HITL and for AFK `/rite-build`,
182
+ regardless of `allow_gates`.
183
+
184
+ **Autocomplete exception.** While `/rite-autocomplete` is the controlling
185
+ caller, an open `gate: blocking` question that already carries a ranked
186
+ recommended option (`proposed:` or option 1 labelled `(Recommended)`) is not a
187
+ user handoff: the orchestrator auto-picks that option through
188
+ `devrites-engine state resolve` and continues, including internal Spec Drift
189
+ Guard when the answer changes ownership or acceptance. Escalating,
190
+ irreversible-risk, access, and blocking questions with no recommended option
191
+ still pause. Putting `blocking` in `allow_gates` does not replace this resolve
192
+ step: an unanswered blocking question still fails Seal.
193
+
194
+ An open `gate: validating` entry is **merge-blocking by definition**: at `/rite-seal` any
195
+ `questions.md` entry with `gate: validating` and `status: open` is a NO-GO, regardless of
196
+ its behavior impact. A slice marked `built (pending review)` is **not done** until that
197
+ validating gate resolves.
198
+
199
+ ## Option set: how every gap is presented
200
+
201
+ Wherever a gap, checkpoint, or non-trivial decision surfaces (`/rite-spec`, `/rite-clarify`, `/rite-define`,
202
+ `/rite-build`, `/rite-temper`, `/rite-vet`, `devrites-doubt`, `devrites-interview`), present a
203
+ **ranked option set**, never a single bare guess:
204
+
205
+ - **2-4 concrete options**, the **recommended one first**, labelled `(Recommended)`.
206
+ - Each option has a **one-line, dimension-tagged rationale**: `logic · infra · business ·
207
+ architecture` (add `security` / `UX` / `risk` in scope) and trade-off.
208
+ - Always include an escape hatch (`Something else — describe it`).
209
+ - With more than four materially distinct choices, first ask a discriminating question or use
210
+ sequential packets, then obtain final confirmation. Materially distinct options MUST NOT
211
+ be silently dropped, merged, or preselected to fit the UI.
212
+ - Recommend for project conventions, stack, scale, and domain, not a generic default.
213
+ - **One visit per decision chain.** Ask the follow-ups an answer predictably triggers (a
214
+ dependency's lock lines, a rerun after a failed measurement) in the same entry or one
215
+ `--batch`; each link asked alone costs one human wait.
216
+
217
+ **HITL** renders the set via `ask_user_question`; the human's pick resolves the gate **in place**.
218
+ **AFK** auto-picks option 1 for gates it may auto-handle. Record the chosen option verbatim and
219
+ keep the **rejected options in `questions.md`**.
220
+
221
+ ## Decision ownership: search before asking
222
+
223
+ First search live code, project/decision docs, and authoritative dependency sources;
224
+ make and record reversible implementation/test choices. Ask only human-owned
225
+ product, scope, acceptance, architecture-policy, irreversible-risk, or access/action choices.
226
+
227
+ Objective test/build/tool failure runs bounded `devrites-debug-recovery`; fix it, or escalate and
228
+ park it under the [retry contract](#retry-cap-no-progress-loops-and-self-resolve). Never ask
229
+ permission for another attempt, test, parser repair, or probe.
230
+ Close decisions at the earliest informed phase: product in spec, coverage in clarify,
231
+ scope/risk in temper, architecture/dependencies in define, and proof/toolchain in vet. Build
232
+ keeps only unavailable-pre-code or mandatory action-time checkpoints.
233
+
234
+ ## Irreversible-risk list (always pause)
235
+
236
+ The following always invoke the checkpoint protocol, regardless of `Mode`, `Gate`, or
237
+ `allow_gates`:
238
+
239
+ - Destructive data migration (drop column, drop table, irreversible backfill).
240
+ - Auth / authz boundary change.
241
+ - Public API break (response shape, removed endpoint, changed status code semantics).
242
+ - External-service contract change.
243
+ - Filesystem destruction outside the workspace.
244
+
245
+ When a pause clears and you proceed with a destructive migration, a removal, or a
246
+ public-API break, take the **safe path** the gate stopped you for: expand→contract,
247
+ prove the old path unused before removing it, and a rollback for every destructive step
248
+ ([`deprecation.md`](deprecation.md)). The gate requires the safe path; it does not
249
+ cancel the work.
250
+
251
+ A writer's overwrite or removal of a path outside the workspace that it created itself in
252
+ the same wave is not destruction. The root proves it with each path's birth time
253
+ (`stat -c %W`) at or after the wave's `started` time and the writer's ownership, records
254
+ that evidence, and continues without a question. Any path it cannot prove pauses as above.
255
+
256
+ By default, AFK widens what's *automatic*; it never widens what's *irreversible*.
257
+
258
+ Red checks remain hard non-advance build gates, but are not inherently irreversible or
259
+ human-owned; bounded recovery owns them.
260
+
261
+ ## `questions.md` schema
262
+
263
+ Append-only. One entry per qid. Format:
264
+
265
+ ```markdown
266
+ ## q-YYYY-MM-DD-NNN
267
+ status: open | answered | dropped
268
+ slice: <slice id, e.g. 03-list-endpoint, or "spec" / "plan">
269
+ gate: advisory | validating | blocking | escalating
270
+ question: <one crisp sentence>
271
+ options: | # ranked option set; recommended FIRST (see "Option set")
272
+ 1. <recommended> (Recommended) — logic: … · infra: … · business: … · architecture: …
273
+ 2. <alternative> — <dimension-tagged rationale + trade-off>
274
+ 3. Something else — describe it
275
+ proposed: <the recommended option restated — the HITL default + the AFK auto-pick; omit with no (Recommended)>
276
+ raised_at: <full RFC 3339 timestamp, e.g. 2026-10-19T08:17:08Z>
277
+ answered_at: <iso, when status flips off "open">
278
+ answer: <chosen option (or human's verbatim reply / drop reason)>
279
+ answered_by: human # only when a human resolved it (`state resolve --human`)
280
+ ```
281
+
282
+ Rules:
283
+ - `NNN` is sequential per date: the next-available 3-digit integer.
284
+ - `state append` refuses a new open entry that breaks this schema (2-4 options plus the escape
285
+ hatch, `(Recommended)` only on option 1); length is advisory.
286
+ - `status: open` is the only state `/rite-resolve` can mutate; `answered` and `dropped`
287
+ are terminal.
288
+ - `answered_by: human` is written only by `state resolve --human`. HITL live picks and `/rite-resolve`
289
+ pass `--human`; an AFK or autocomplete run never does, and the writer removes any `answered_by:` line
290
+ (any indentation or case) from a qid it resolves without the flag. Only an unindented lowercase
291
+ `answered_by: human` line counts as human resolution.
292
+ - The file is the audit trail. Don't edit answered/dropped entries: open a new qid that
293
+ references the old one (`supersedes: q-...-OLD`) and resolve it.
294
+
295
+ AFK never authorizes destructive Git. The native host permission/sandbox
296
+ boundary owns any such request and requires explicit user approval.
297
+
298
+ ## `state.md` `Awaiting human` block
299
+
300
+ When a HITL gate fires, `/rite-build` sets cursor `status` to `awaiting_human` and
301
+ `next_action` to `/rite-resolve <qid> "<answer>"` via `devrites-engine state set` (under AFK
302
+ it names questions the sentinel auto-picks: resolve those unless irreversible-risk), then writes the `Awaiting human` table
303
+ (`question_id`, `gate`, `blocking_slices`) owned by
304
+ [`state-workspace.md`](../../../rite-spec/reference/state-workspace.md#statemd-template) § state.md template.
305
+ The question text, `proposed` answer, and `raised_at` live in the `questions.md` entry.
306
+ Legacy `- Status:`/`- Next step:`/`- qid:` bullet keys are engine-accepted aliases, not
307
+ the authoring format.
308
+
309
+ `/rite-resolve` removes the block on success and sets cursor `status` to `running`.
310
+
311
+ ## The resume verb: `/rite-resolve`
312
+
313
+ Three shapes:
314
+
315
+ ```
316
+ /rite-resolve <qid> "<answer>"
317
+ /rite-resolve --drop <qid> ["<reason>"]
318
+ /rite-resolve --batch <plain-text-file>
319
+ ```
320
+
321
+ `/rite-resolve` is the canonical writer for **async** resume: a gate that already paused and
322
+ stopped the session (an AFK blocking/escalating/irreversible queue, or a HITL pause the human
323
+ walked away from), plus `--batch`. In an **interactive HITL** session the skill resolves the
324
+ `ask_user_question` pick **in place** (the same `questions.md` `answered` write + `state.md`
325
+ clear), so you don't type `/rite-resolve` for gaps you answer live. Both paths flip
326
+ `status: open → answered` and clear `Awaiting human` through the **same `devrites-engine state resolve` writer**:
327
+ one source of truth, two entry points (live pick vs typed verb). Use the writer;
328
+ manual edits are never destructive-operation authority.
329
+
330
+ When `/rite-resolve` does resume a stopped session, the skill does **not** auto-run the next
331
+ `/rite-build`. The user types the next command explicitly so:
332
+ - A `/rite-plan repair` can land first if the answer changes scope.
333
+ - The user sees the workspace state before resuming.
334
+ - Each verb has one mutation; chaining is a hidden side-effect.
335
+
336
+ ## AFK exception for discretionary pauses
337
+
338
+ With `.devrites/AFK`, apply decision ownership first. Accepted in-scope technical
339
+ corrections return to the caller for repair/verification; severity blocks acceptance,
340
+ not authorized repair. Never silently accept a defect or broaden existing approval.
341
+
342
+ Discretionary ceilings apply only to
343
+ human-owned trade-off/risk decisions; accepted technical corrections do not enter
344
+ these branches. Compare Suggestion/Nit/FYI→advisory, Important→validating,
345
+ Critical→blocking against advisory < validating < blocking < escalating:
346
+
347
+ - Within the slice's `Gate:` and `.devrites/AFK` `allow_gates`: record advisory in
348
+ `questions.md`, trade-off in `decisions.md`, proceed.
349
+ - Above ceiling, missing authority, or unapproved irreversible risk: record blocking
350
+ question, `Status: awaiting_human`, fire `notify:`, STOP.
351
+
352
+ Recovery uses only the [retry contract](#retry-cap-no-progress-loops-and-self-resolve).
353
+
354
+ ## Retry cap, no-progress loops, and self-resolve
355
+
356
+ Owns all phase recovery, including Doubt/Vet/serial/parallel Build. Resource,
357
+ access, safety and irreversible-action boundaries independently stop work.
358
+
359
+ - **Fingerprint the failed invariant, not the review round.** Identify owning
360
+ invariant + defect mechanism + minimal reproduction/decisive failure signal.
361
+ DEC/DRIFT IDs, line numbers, wording and splitting one cause create no new budget.
362
+ - **Cap no-progress retries:** three no-progress attempts per exact causal fingerprint
363
+ and strategy across wright/recovery. Only a correction whose narrow recheck leaves that cause
364
+ open or reproduces its failure consumes an attempt.
365
+ Closing a prior finding with discriminating evidence is progress: resolve it,
366
+ do not charge. A new Critical or Important finding gets its own budget only for
367
+ a distinct evidenced cause. The same invariant with a different evidenced mechanism qualifies;
368
+ renaming/splitting an unchanged cause does not. Suggestion/Nit/FYI cannot extend
369
+ recovery. Initial discovery and expected test-first RED are not corrections;
370
+ total rounds, re-batches and distinct-finding counts never exhaust recovery.
371
+ Every 5 Build wright rounds on one slice, the next first needs a reslice review
372
+ ([`wright-dispatch.md`](../../../rite-build/reference/wright-dispatch.md#run)).
373
+ - **Rechecks are scoped; late findings never reopen the round.** *Late* applies only
374
+ from a phase's **second** review pass (Vet 1b, Build's recheck after the first repair,
375
+ Review step 7); an initial pass has no late findings and every supported finding is
376
+ folded normally. A recheck packet
377
+ names the open fingerprints, the correction diff, and the dependents of each
378
+ changed clause/hunk; the owning reviewer's verdict covers exactly that. A finding
379
+ on text/code unchanged since that role's previous pass is *late*: Critical with a
380
+ concrete failure path → new fingerprint under this budget; otherwise recorded
381
+ (Plan/Vet: `eng-review.md` `## Deferred findings`; Build: `touched-files.md`
382
+ `## Review trail`) with severity · site · role · kind · round, and consumed by the
383
+ next full-inventory gate (Vet `mechanism` → one `test-plan.md` proof row; Build →
384
+ the `/rite-review` roster) — never by another repair round in this phase. Review
385
+ closes every deferred row with a labeled verdict; Seal blocks on any without one.
386
+ A Vet write-set closure row (plan-reviewer dimension 6) is never late: it names
387
+ an unbuilt slice's missing path and folds in this phase's one Plan repair, since
388
+ deferring it only reopens Plan at that slice's Build entry.
389
+ **Failing case:** round 4 finds three Important items on clauses untouched since
390
+ round 1 and dispatches another repair.
391
+ - **Recovery findings need a discriminator; recovery scope stays frozen.** While a
392
+ fingerprint is in recovery, a new Important finding keeps it open or opens another
393
+ only with an executed reproduction or a quoted AC/INV/PROH/accepted-DEC line whose
394
+ observable outcome fails; root turns it into a control the next wright must pass.
395
+ A static counterexample against plan-invented hardening goes to the Review trail or
396
+ `## Deferred findings` (Review gives it a verdict; Seal blocks without one). A
397
+ Critical with a concrete failure path always opens a fingerprint. A correction adds
398
+ no proof site or mechanism its fingerprint's closure does not need. No reviewer is skipped.
399
+ - **Separate consumptive authority from recovery.** Spent one-shot authorization
400
+ blocks another execution, not offline recovery. Retained evidence starts caller-owned
401
+ diagnosis/correction immediately; the next consumptive execution needs fresh authority.
402
+ - **Persist existing records.** Put fingerprint, reproduction, correction,
403
+ `progress: resolved|no-progress` and decisive result in `drift.md` and `evidence.md`.
404
+ Cold resume derives counts there; no new counter file/command.
405
+ - **Reconcile terminal cursors.** Retained distinct Critical/Important evidence below
406
+ cap resumes despite stale `Next step: none`; age/spent action authority is not exhaustion.
407
+ <!-- workflow-artifact-adapter: {"module":"devrites-lib/reference/standards/workflow-artifacts.md","entry":"unattended root reaches current admitted Workflow Artifact work","action":"invoke classifier; execute returned route without wright/slice charge","return":"saved lifecycle phase/action; no intermediate reply"} -->
408
+ - **Escalate a spent strategy; never stop on it.** Three no-progress attempts spend
409
+ the fingerprint's current *strategy*, not the work. Record that strategy and its
410
+ attempts under `## Dead ends`, then the controlling caller escalates inline in the
411
+ same invocation: re-diagnose from the reproduction and dead ends, take the first
412
+ class below that still has an untried strategy, and resume with a fresh
413
+ three-attempt budget. Re-plan only when the strategy must change a planning
414
+ input (writer allowlist, interface or contract, slice topology, or a
415
+ `test-plan.md` proof row): run `/rite-plan repair` plus narrow Vet for it. A
416
+ strategy that fits the vetted plan, with `devrites-engine check readiness <slug>`
417
+ still passing, goes straight to the wright with the dead ends in its contract;
418
+ Build's review and proof still gate it. Classes, in order, cheapest evidence
419
+ before costliest change: (1) **shared root cause**: fix the owner every failing
420
+ path routes through and enforce it across all callers instead of another local
421
+ guard; (2) **diagnostic amplification**: add discriminating probes or fixtures,
422
+ then correct from that evidence (last for a consumptive action, whose attempt
423
+ needs fresh authorization); (3) **boundary redesign**: acceptance-preserving
424
+ reslice or redesign of the failing seam, built on that evidence. A recorded strategy, or a rewording of one, never
425
+ repeats. Escalation never weakens tests, validators or acceptance. Each
426
+ fingerprint gets at most three escalations per activation; record each in
427
+ `drift.md` with its class and strategy.
428
+ - **Park, finish the rest, then stop once.** Human-owned contract/risk/access gaps
429
+ open their gate. Otherwise, with every escalation spent, mark the fingerprint
430
+ `parked` in `drift.md`, keep its reproduction and dead ends, and continue every
431
+ step that does not depend on it. Only when nothing runnable remains, set
432
+ `Status: blocked` and
433
+ `Next step: <invoking command> — technical recovery parked; reinvoke to reopen with fresh escalation`.
434
+ Emit no retry-permission question or `/rite-resolve`. A genuinely new
435
+ user-issued activation appends `reopened: <date>` to each parked fingerprint and
436
+ grants it three fresh escalations, counted from that line; wakes, compaction and
437
+ nested re-entry of the same run never reset counts.
438
+ - **Resolve agent-owned questions first** from code/docs/decisions. Human communication
439
+ is for blocked environment, handover, inaccessible critical information or missing
440
+ credentials/permission—not writing, testing or review. Blocking/escalating/
441
+ irreversible gates remain.
442
+
443
+ ## What the rule does NOT cover
444
+
445
+ This contract is about **human pauses**. It does not weaken or replace:
446
+
447
+ - `/rite-prove`, `/rite-review`, `/rite-seal`: feature-scoped gates that always run.
448
+ - Spec Drift Guard: answer that changes acceptance criteria routes through
449
+ `/rite-plan repair`, not silently into the slice.
450
+ - `evidence.md` writes: every AFK iteration still records evidence; un-recorded passes
451
+ are unproven at `/rite-prove`.
452
+ - `/clear` / `/compact` advice: context-hygiene rules are unchanged.
453
+
454
+ AFK changes which decisions are automatic. It changes nothing else.
455
+
456
+ ## Cross-reference
457
+
458
+ - Skill: `/rite-resolve` (`.dsh/skills/rite-resolve/SKILL.md`).
459
+ - Workflow integration: `/rite-build` (`.dsh/skills/rite-build/SKILL.md`),
460
+ the readiness / HITL pre-flight stages before dispatch, and the DOUBT → PROVE
461
+ (fail-on-red) → RECORD stages on the wright's return
462
+ ([`one-slice-cycle.md`](../../../rite-build/reference/one-slice-cycle.md)).
463
+ - Render contract: `.dsh/skills/rite-build/reference/checkpoint-protocol.md`.
464
+ - Loop discipline: `.dsh/skills/rite-build/reference/afk-discipline.md`.
465
+ - Gate taxonomy: `.dsh/skills/rite-define/reference/gates.md`.
466
+ - Schema: `.dsh/skills/rite-spec/reference/state-workspace.md`.
467
+ - Doubt's AFK exception: `.dsh/skills/devrites-doubt/SKILL.md` (AFK exception section).