devrites 5.5.0 → 5.7.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 (309) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +8 -6
  3. package/engine/internal/devritespaths/paths.go +3 -0
  4. package/engine/internal/hostpack/hostpack.go +45 -6
  5. package/engine/internal/hostpack/hostpack_test.go +29 -13
  6. package/engine/internal/install/apply.go +14 -5
  7. package/engine/internal/install/install.go +8 -2
  8. package/engine/internal/install/install_test.go +12 -5
  9. package/engine/internal/install/merge.go +5 -0
  10. package/engine/internal/install/preflight.go +20 -2
  11. package/engine/internal/install/uninstall.go +5 -0
  12. package/engine/internal/install/update.go +1 -1
  13. package/install.sh +107 -38
  14. package/pack/.claude/skills/rite-define/SKILL.md +1 -1
  15. package/pack/.claude/skills/rite-handoff/SKILL.md +1 -1
  16. package/pack/.claude/skills/rite-plan/SKILL.md +1 -1
  17. package/pack/.claude/skills/rite-pressure-test/SKILL.md +1 -1
  18. package/pack/.claude/skills/rite-quick/SKILL.md +1 -1
  19. package/pack/.claude/skills/rite-status/SKILL.md +1 -1
  20. package/pack/.claude/skills/rite-zoom-out/SKILL.md +1 -1
  21. package/pack/generated/README.md +5 -1
  22. package/pack/generated/claude/skills/rite-define/SKILL.md +1 -1
  23. package/pack/generated/claude/skills/rite-handoff/SKILL.md +1 -1
  24. package/pack/generated/claude/skills/rite-plan/SKILL.md +1 -1
  25. package/pack/generated/claude/skills/rite-pressure-test/SKILL.md +1 -1
  26. package/pack/generated/claude/skills/rite-quick/SKILL.md +1 -1
  27. package/pack/generated/claude/skills/rite-status/SKILL.md +1 -1
  28. package/pack/generated/claude/skills/rite-zoom-out/SKILL.md +1 -1
  29. package/pack/generated/codex/skills/rite-define/SKILL.md +1 -1
  30. package/pack/generated/codex/skills/rite-handoff/SKILL.md +1 -1
  31. package/pack/generated/codex/skills/rite-plan/SKILL.md +1 -1
  32. package/pack/generated/codex/skills/rite-pressure-test/SKILL.md +1 -1
  33. package/pack/generated/codex/skills/rite-quick/SKILL.md +1 -1
  34. package/pack/generated/codex/skills/rite-status/SKILL.md +1 -1
  35. package/pack/generated/codex/skills/rite-zoom-out/SKILL.md +1 -1
  36. package/pack/generated/omp/skills/rite-define/SKILL.md +1 -1
  37. package/pack/generated/omp/skills/rite-handoff/SKILL.md +1 -1
  38. package/pack/generated/omp/skills/rite-plan/SKILL.md +1 -1
  39. package/pack/generated/omp/skills/rite-pressure-test/SKILL.md +1 -1
  40. package/pack/generated/omp/skills/rite-quick/SKILL.md +1 -1
  41. package/pack/generated/omp/skills/rite-status/SKILL.md +1 -1
  42. package/pack/generated/omp/skills/rite-zoom-out/SKILL.md +1 -1
  43. package/pack/generated/pi/AGENTS.md +22 -0
  44. package/pack/generated/pi/agents/devrites-code-reviewer.md +142 -0
  45. package/pack/generated/pi/agents/devrites-devex-reviewer.md +124 -0
  46. package/pack/generated/pi/agents/devrites-doubt-reviewer.md +88 -0
  47. package/pack/generated/pi/agents/devrites-evidence-scout.md +72 -0
  48. package/pack/generated/pi/agents/devrites-frontend-reviewer.md +116 -0
  49. package/pack/generated/pi/agents/devrites-performance-reviewer.md +115 -0
  50. package/pack/generated/pi/agents/devrites-plan-drafter.md +99 -0
  51. package/pack/generated/pi/agents/devrites-plan-reviewer.md +142 -0
  52. package/pack/generated/pi/agents/devrites-proof-runner.md +74 -0
  53. package/pack/generated/pi/agents/devrites-retrospector.md +61 -0
  54. package/pack/generated/pi/agents/devrites-security-auditor.md +109 -0
  55. package/pack/generated/pi/agents/devrites-simplifier-reviewer.md +94 -0
  56. package/pack/generated/pi/agents/devrites-slice-wright.md +204 -0
  57. package/pack/generated/pi/agents/devrites-spec-reviewer.md +96 -0
  58. package/pack/generated/pi/agents/devrites-strategy-reviewer.md +100 -0
  59. package/pack/generated/pi/agents/devrites-test-analyst.md +94 -0
  60. package/pack/generated/pi/agents/devrites-upgrade-planner.md +89 -0
  61. package/pack/generated/pi/prompts/rite-adopt.md +5 -0
  62. package/pack/generated/pi/prompts/rite-autocomplete.md +5 -0
  63. package/pack/generated/pi/prompts/rite-build.md +5 -0
  64. package/pack/generated/pi/prompts/rite-clarify.md +5 -0
  65. package/pack/generated/pi/prompts/rite-converge.md +5 -0
  66. package/pack/generated/pi/prompts/rite-customize.md +5 -0
  67. package/pack/generated/pi/prompts/rite-define.md +5 -0
  68. package/pack/generated/pi/prompts/rite-doctor.md +5 -0
  69. package/pack/generated/pi/prompts/rite-dogfood.md +5 -0
  70. package/pack/generated/pi/prompts/rite-explain.md +5 -0
  71. package/pack/generated/pi/prompts/rite-frame.md +5 -0
  72. package/pack/generated/pi/prompts/rite-handoff.md +5 -0
  73. package/pack/generated/pi/prompts/rite-learn.md +5 -0
  74. package/pack/generated/pi/prompts/rite-plan.md +5 -0
  75. package/pack/generated/pi/prompts/rite-polish.md +5 -0
  76. package/pack/generated/pi/prompts/rite-pov.md +5 -0
  77. package/pack/generated/pi/prompts/rite-pr-feedback.md +5 -0
  78. package/pack/generated/pi/prompts/rite-pressure-test.md +5 -0
  79. package/pack/generated/pi/prompts/rite-prototype.md +5 -0
  80. package/pack/generated/pi/prompts/rite-prove.md +5 -0
  81. package/pack/generated/pi/prompts/rite-quick.md +5 -0
  82. package/pack/generated/pi/prompts/rite-resolve.md +5 -0
  83. package/pack/generated/pi/prompts/rite-review.md +5 -0
  84. package/pack/generated/pi/prompts/rite-seal.md +5 -0
  85. package/pack/generated/pi/prompts/rite-ship.md +5 -0
  86. package/pack/generated/pi/prompts/rite-spec.md +5 -0
  87. package/pack/generated/pi/prompts/rite-status.md +5 -0
  88. package/pack/generated/pi/prompts/rite-temper.md +5 -0
  89. package/pack/generated/pi/prompts/rite-upgrade.md +5 -0
  90. package/pack/generated/pi/prompts/rite-vet.md +5 -0
  91. package/pack/generated/pi/prompts/rite-watch-pr.md +5 -0
  92. package/pack/generated/pi/prompts/rite-zoom-out.md +5 -0
  93. package/pack/generated/pi/prompts/rite.md +5 -0
  94. package/pack/generated/pi/skills/devrites-api-interface/SKILL.md +63 -0
  95. package/pack/generated/pi/skills/devrites-audit/SKILL.md +50 -0
  96. package/pack/generated/pi/skills/devrites-browser-proof/SKILL.md +76 -0
  97. package/pack/generated/pi/skills/devrites-browser-proof/reference/browser-performance.md +15 -0
  98. package/pack/generated/pi/skills/devrites-browser-proof/reference/visual-verdict.md +34 -0
  99. package/pack/generated/pi/skills/devrites-debug-recovery/SKILL.md +96 -0
  100. package/pack/generated/pi/skills/devrites-debug-recovery/reference/build-the-loop.md +58 -0
  101. package/pack/generated/pi/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +34 -0
  102. package/pack/generated/pi/skills/devrites-debug-recovery/reference/hypotheses.md +17 -0
  103. package/pack/generated/pi/skills/devrites-debug-recovery/reference/instrumentation.md +21 -0
  104. package/pack/generated/pi/skills/devrites-debug-recovery/reference/regression-test.md +30 -0
  105. package/pack/generated/pi/skills/devrites-debug-recovery/reference/trace.md +25 -0
  106. package/pack/generated/pi/skills/devrites-doubt/SKILL.md +79 -0
  107. package/pack/generated/pi/skills/devrites-frontend-craft/SKILL.md +86 -0
  108. package/pack/generated/pi/skills/devrites-frontend-craft/reference/craft.md +63 -0
  109. package/pack/generated/pi/skills/devrites-frontend-craft/reference/design-references.md +116 -0
  110. package/pack/generated/pi/skills/devrites-frontend-craft/reference/fullstack.md +46 -0
  111. package/pack/generated/pi/skills/devrites-frontend-craft/reference/quality-standards.md +294 -0
  112. package/pack/generated/pi/skills/devrites-frontend-craft/reference/reuse-first.md +53 -0
  113. package/pack/generated/pi/skills/devrites-frontend-craft/reference/shape.md +56 -0
  114. package/pack/generated/pi/skills/devrites-interview/SKILL.md +102 -0
  115. package/pack/generated/pi/skills/devrites-lib/SKILL.md +58 -0
  116. package/pack/generated/pi/skills/devrites-lib/reference/candidate-integrity.md +42 -0
  117. package/pack/generated/pi/skills/devrites-lib/reference/intent-map.md +64 -0
  118. package/pack/generated/pi/skills/devrites-lib/reference/orchestration-profiles.md +27 -0
  119. package/pack/generated/pi/skills/devrites-lib/reference/parallel-dispatch.md +73 -0
  120. package/pack/generated/pi/skills/devrites-lib/reference/reply-contract.md +88 -0
  121. package/pack/generated/pi/skills/devrites-lib/reference/standards/README.md +60 -0
  122. package/pack/generated/pi/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md +30 -0
  123. package/pack/generated/pi/skills/devrites-lib/reference/standards/afk-hitl.md +398 -0
  124. package/pack/generated/pi/skills/devrites-lib/reference/standards/agents.md +99 -0
  125. package/pack/generated/pi/skills/devrites-lib/reference/standards/anti-patterns.md +48 -0
  126. package/pack/generated/pi/skills/devrites-lib/reference/standards/browser-proof-checklist.md +24 -0
  127. package/pack/generated/pi/skills/devrites-lib/reference/standards/ci-cd.md +50 -0
  128. package/pack/generated/pi/skills/devrites-lib/reference/standards/code-navigation.md +43 -0
  129. package/pack/generated/pi/skills/devrites-lib/reference/standards/code-review.md +108 -0
  130. package/pack/generated/pi/skills/devrites-lib/reference/standards/coding-style.md +48 -0
  131. package/pack/generated/pi/skills/devrites-lib/reference/standards/context-hygiene.md +109 -0
  132. package/pack/generated/pi/skills/devrites-lib/reference/standards/core.md +167 -0
  133. package/pack/generated/pi/skills/devrites-lib/reference/standards/data-integrity.md +118 -0
  134. package/pack/generated/pi/skills/devrites-lib/reference/standards/debug-recovery.md +28 -0
  135. package/pack/generated/pi/skills/devrites-lib/reference/standards/definition-of-done.md +19 -0
  136. package/pack/generated/pi/skills/devrites-lib/reference/standards/deprecation.md +31 -0
  137. package/pack/generated/pi/skills/devrites-lib/reference/standards/developer-experience.md +119 -0
  138. package/pack/generated/pi/skills/devrites-lib/reference/standards/development-workflow.md +29 -0
  139. package/pack/generated/pi/skills/devrites-lib/reference/standards/documentation.md +43 -0
  140. package/pack/generated/pi/skills/devrites-lib/reference/standards/edge-case-trace.md +92 -0
  141. package/pack/generated/pi/skills/devrites-lib/reference/standards/elicitation.md +85 -0
  142. package/pack/generated/pi/skills/devrites-lib/reference/standards/error-handling.md +47 -0
  143. package/pack/generated/pi/skills/devrites-lib/reference/standards/git-workflow.md +49 -0
  144. package/pack/generated/pi/skills/devrites-lib/reference/standards/hooks.md +25 -0
  145. package/pack/generated/pi/skills/devrites-lib/reference/standards/integration-reliability.md +102 -0
  146. package/pack/generated/pi/skills/devrites-lib/reference/standards/loop-operations.md +85 -0
  147. package/pack/generated/pi/skills/devrites-lib/reference/standards/observability.md +88 -0
  148. package/pack/generated/pi/skills/devrites-lib/reference/standards/one-shot-actions.md +97 -0
  149. package/pack/generated/pi/skills/devrites-lib/reference/standards/patterns.md +68 -0
  150. package/pack/generated/pi/skills/devrites-lib/reference/standards/performance.md +51 -0
  151. package/pack/generated/pi/skills/devrites-lib/reference/standards/principles.md +42 -0
  152. package/pack/generated/pi/skills/devrites-lib/reference/standards/prose-style.md +123 -0
  153. package/pack/generated/pi/skills/devrites-lib/reference/standards/release/ship-checklist.md +8 -0
  154. package/pack/generated/pi/skills/devrites-lib/reference/standards/repository-topology.md +80 -0
  155. package/pack/generated/pi/skills/devrites-lib/reference/standards/review-checklist.md +12 -0
  156. package/pack/generated/pi/skills/devrites-lib/reference/standards/security-checklist.md +25 -0
  157. package/pack/generated/pi/skills/devrites-lib/reference/standards/security.md +202 -0
  158. package/pack/generated/pi/skills/devrites-lib/reference/standards/skill-authoring.md +209 -0
  159. package/pack/generated/pi/skills/devrites-lib/reference/standards/spec-grammar.md +197 -0
  160. package/pack/generated/pi/skills/devrites-lib/reference/standards/test-proof-checklist.md +13 -0
  161. package/pack/generated/pi/skills/devrites-lib/reference/standards/testing.md +212 -0
  162. package/pack/generated/pi/skills/devrites-lib/reference/standards/tooling.md +92 -0
  163. package/pack/generated/pi/skills/devrites-lib/reference/standards/workflow-artifacts.md +427 -0
  164. package/pack/generated/pi/skills/devrites-lib/reference/visual-playbooks/code.md +44 -0
  165. package/pack/generated/pi/skills/devrites-lib/reference/visual-playbooks/comparison.md +42 -0
  166. package/pack/generated/pi/skills/devrites-lib/reference/visual-playbooks/diagram.md +51 -0
  167. package/pack/generated/pi/skills/devrites-lib/reference/visual-playbooks/index.md +66 -0
  168. package/pack/generated/pi/skills/devrites-lib/reference/visual-playbooks/input.md +46 -0
  169. package/pack/generated/pi/skills/devrites-lib/reference/visual-playbooks/outline-template.md +106 -0
  170. package/pack/generated/pi/skills/devrites-lib/reference/visual-playbooks/plan.md +48 -0
  171. package/pack/generated/pi/skills/devrites-lib/reference/visual-playbooks/slides.md +40 -0
  172. package/pack/generated/pi/skills/devrites-lib/reference/visual-playbooks/table.md +42 -0
  173. package/pack/generated/pi/skills/devrites-lib/reference/workspace-artifact-schema.md +267 -0
  174. package/pack/generated/pi/skills/devrites-prose-craft/SKILL.md +73 -0
  175. package/pack/generated/pi/skills/devrites-prose-craft/reference/banned-phrases.md +132 -0
  176. package/pack/generated/pi/skills/devrites-prose-craft/reference/examples.md +131 -0
  177. package/pack/generated/pi/skills/devrites-prose-craft/reference/structures.md +196 -0
  178. package/pack/generated/pi/skills/devrites-source-driven/SKILL.md +52 -0
  179. package/pack/generated/pi/skills/devrites-ux-shape/SKILL.md +134 -0
  180. package/pack/generated/pi/skills/devrites-ux-shape/reference/brief-template.md +108 -0
  181. package/pack/generated/pi/skills/devrites-ux-shape/reference/visual-direction-probe.md +48 -0
  182. package/pack/generated/pi/skills/rite/SKILL.md +148 -0
  183. package/pack/generated/pi/skills/rite/reference/menu.md +48 -0
  184. package/pack/generated/pi/skills/rite-adopt/SKILL.md +52 -0
  185. package/pack/generated/pi/skills/rite-adopt/reference/adoption.md +19 -0
  186. package/pack/generated/pi/skills/rite-adopt/reference/anti-patterns.md +19 -0
  187. package/pack/generated/pi/skills/rite-autocomplete/SKILL.md +132 -0
  188. package/pack/generated/pi/skills/rite-autocomplete/reference/decision-policy.md +41 -0
  189. package/pack/generated/pi/skills/rite-autocomplete/reference/loop.md +148 -0
  190. package/pack/generated/pi/skills/rite-autocomplete/reference/stop-conditions.md +92 -0
  191. package/pack/generated/pi/skills/rite-build/SKILL.md +96 -0
  192. package/pack/generated/pi/skills/rite-build/reference/afk-discipline.md +145 -0
  193. package/pack/generated/pi/skills/rite-build/reference/anti-patterns.md +23 -0
  194. package/pack/generated/pi/skills/rite-build/reference/checkpoint-protocol.md +120 -0
  195. package/pack/generated/pi/skills/rite-build/reference/checkpoint.md +44 -0
  196. package/pack/generated/pi/skills/rite-build/reference/frontend-trigger.md +39 -0
  197. package/pack/generated/pi/skills/rite-build/reference/one-slice-cycle.md +50 -0
  198. package/pack/generated/pi/skills/rite-build/reference/output.md +33 -0
  199. package/pack/generated/pi/skills/rite-build/reference/parallel-batch.md +205 -0
  200. package/pack/generated/pi/skills/rite-build/reference/phase-contract.md +87 -0
  201. package/pack/generated/pi/skills/rite-build/reference/spec-drift-guard.md +84 -0
  202. package/pack/generated/pi/skills/rite-build/reference/tdd.md +27 -0
  203. package/pack/generated/pi/skills/rite-build/reference/wright-dispatch.md +89 -0
  204. package/pack/generated/pi/skills/rite-clarify/SKILL.md +99 -0
  205. package/pack/generated/pi/skills/rite-clarify/reference/anti-patterns.md +24 -0
  206. package/pack/generated/pi/skills/rite-clarify/reference/decision-coverage.md +55 -0
  207. package/pack/generated/pi/skills/rite-converge/SKILL.md +145 -0
  208. package/pack/generated/pi/skills/rite-converge/reference/anti-patterns.md +35 -0
  209. package/pack/generated/pi/skills/rite-converge/reference/convergence-assessment.md +65 -0
  210. package/pack/generated/pi/skills/rite-customize/SKILL.md +60 -0
  211. package/pack/generated/pi/skills/rite-define/SKILL.md +169 -0
  212. package/pack/generated/pi/skills/rite-define/reference/anti-patterns.md +26 -0
  213. package/pack/generated/pi/skills/rite-define/reference/gates.md +154 -0
  214. package/pack/generated/pi/skills/rite-define/reference/plan-template.md +149 -0
  215. package/pack/generated/pi/skills/rite-doctor/SKILL.md +69 -0
  216. package/pack/generated/pi/skills/rite-dogfood/SKILL.md +55 -0
  217. package/pack/generated/pi/skills/rite-explain/SKILL.md +152 -0
  218. package/pack/generated/pi/skills/rite-explain/reference/intake.md +89 -0
  219. package/pack/generated/pi/skills/rite-frame/SKILL.md +115 -0
  220. package/pack/generated/pi/skills/rite-frame/reference/failure-modes.md +66 -0
  221. package/pack/generated/pi/skills/rite-handoff/SKILL.md +97 -0
  222. package/pack/generated/pi/skills/rite-handoff/reference/handoff-template.md +44 -0
  223. package/pack/generated/pi/skills/rite-learn/SKILL.md +72 -0
  224. package/pack/generated/pi/skills/rite-plan/SKILL.md +186 -0
  225. package/pack/generated/pi/skills/rite-plan/reference/anti-patterns.md +34 -0
  226. package/pack/generated/pi/skills/rite-plan/reference/dependency-graph.md +48 -0
  227. package/pack/generated/pi/skills/rite-plan/reference/replan-and-repair.md +105 -0
  228. package/pack/generated/pi/skills/rite-plan/reference/slicing.md +167 -0
  229. package/pack/generated/pi/skills/rite-plan/reference/task-breakdown.md +42 -0
  230. package/pack/generated/pi/skills/rite-polish/SKILL.md +104 -0
  231. package/pack/generated/pi/skills/rite-polish/reference/adr-promotion.md +11 -0
  232. package/pack/generated/pi/skills/rite-polish/reference/anti-ai-slop.md +187 -0
  233. package/pack/generated/pi/skills/rite-polish/reference/anti-patterns.md +30 -0
  234. package/pack/generated/pi/skills/rite-polish/reference/backend-polish.md +80 -0
  235. package/pack/generated/pi/skills/rite-polish/reference/browser-polish-evidence.md +33 -0
  236. package/pack/generated/pi/skills/rite-polish/reference/code.md +82 -0
  237. package/pack/generated/pi/skills/rite-polish/reference/design-memory.md +117 -0
  238. package/pack/generated/pi/skills/rite-polish/reference/design-system-discovery.md +8 -0
  239. package/pack/generated/pi/skills/rite-polish/reference/harden-checklist.md +109 -0
  240. package/pack/generated/pi/skills/rite-polish/reference/ledger.md +65 -0
  241. package/pack/generated/pi/skills/rite-polish/reference/ui.md +137 -0
  242. package/pack/generated/pi/skills/rite-pov/SKILL.md +58 -0
  243. package/pack/generated/pi/skills/rite-pr-feedback/SKILL.md +54 -0
  244. package/pack/generated/pi/skills/rite-pressure-test/SKILL.md +67 -0
  245. package/pack/generated/pi/skills/rite-prototype/SKILL.md +104 -0
  246. package/pack/generated/pi/skills/rite-prove/SKILL.md +120 -0
  247. package/pack/generated/pi/skills/rite-prove/reference/acceptance-proof.md +88 -0
  248. package/pack/generated/pi/skills/rite-prove/reference/anti-patterns.md +25 -0
  249. package/pack/generated/pi/skills/rite-prove/reference/browser-proof.md +51 -0
  250. package/pack/generated/pi/skills/rite-prove/reference/failure-triage.md +43 -0
  251. package/pack/generated/pi/skills/rite-prove/reference/proof-ladder.md +28 -0
  252. package/pack/generated/pi/skills/rite-prove/reference/test-command-discovery.md +30 -0
  253. package/pack/generated/pi/skills/rite-quick/SKILL.md +82 -0
  254. package/pack/generated/pi/skills/rite-resolve/SKILL.md +95 -0
  255. package/pack/generated/pi/skills/rite-resolve/reference/answer-protocol.md +118 -0
  256. package/pack/generated/pi/skills/rite-review/SKILL.md +170 -0
  257. package/pack/generated/pi/skills/rite-review/reference/anti-patterns.md +32 -0
  258. package/pack/generated/pi/skills/rite-review/reference/cognitive-load.md +90 -0
  259. package/pack/generated/pi/skills/rite-review/reference/feature-scoped-review.md +26 -0
  260. package/pack/generated/pi/skills/rite-review/reference/five-axis-review.md +66 -0
  261. package/pack/generated/pi/skills/rite-review/reference/nielsen-heuristics.md +126 -0
  262. package/pack/generated/pi/skills/rite-review/reference/performance-checklist.md +80 -0
  263. package/pack/generated/pi/skills/rite-review/reference/performance-review.md +14 -0
  264. package/pack/generated/pi/skills/rite-review/reference/security-review.md +42 -0
  265. package/pack/generated/pi/skills/rite-seal/SKILL.md +75 -0
  266. package/pack/generated/pi/skills/rite-seal/reference/anti-patterns.md +29 -0
  267. package/pack/generated/pi/skills/rite-seal/reference/final-evidence.md +41 -0
  268. package/pack/generated/pi/skills/rite-seal/reference/go-no-go.md +29 -0
  269. package/pack/generated/pi/skills/rite-seal/reference/output.md +5 -0
  270. package/pack/generated/pi/skills/rite-seal/reference/phase-contract.md +47 -0
  271. package/pack/generated/pi/skills/rite-seal/reference/risk-and-rollback.md +56 -0
  272. package/pack/generated/pi/skills/rite-seal/reference/seal-template.md +27 -0
  273. package/pack/generated/pi/skills/rite-ship/SKILL.md +88 -0
  274. package/pack/generated/pi/skills/rite-ship/reference/anti-patterns.md +28 -0
  275. package/pack/generated/pi/skills/rite-ship/reference/close-out.md +68 -0
  276. package/pack/generated/pi/skills/rite-ship/reference/git-ship.md +120 -0
  277. package/pack/generated/pi/skills/rite-ship/reference/rollout.md +62 -0
  278. package/pack/generated/pi/skills/rite-ship/reference/ship-template.md +39 -0
  279. package/pack/generated/pi/skills/rite-spec/SKILL.md +150 -0
  280. package/pack/generated/pi/skills/rite-spec/reference/acceptance-criteria.md +31 -0
  281. package/pack/generated/pi/skills/rite-spec/reference/ai-spec-template.md +40 -0
  282. package/pack/generated/pi/skills/rite-spec/reference/anti-patterns.md +27 -0
  283. package/pack/generated/pi/skills/rite-spec/reference/interview-patterns.md +56 -0
  284. package/pack/generated/pi/skills/rite-spec/reference/investigation.md +83 -0
  285. package/pack/generated/pi/skills/rite-spec/reference/question-protocol.md +36 -0
  286. package/pack/generated/pi/skills/rite-spec/reference/references-intake.md +62 -0
  287. package/pack/generated/pi/skills/rite-spec/reference/spec-checklists.md +89 -0
  288. package/pack/generated/pi/skills/rite-spec/reference/spec-template.md +154 -0
  289. package/pack/generated/pi/skills/rite-spec/reference/state-workspace.md +227 -0
  290. package/pack/generated/pi/skills/rite-status/SKILL.md +57 -0
  291. package/pack/generated/pi/skills/rite-temper/SKILL.md +130 -0
  292. package/pack/generated/pi/skills/rite-temper/reference/anti-patterns.md +30 -0
  293. package/pack/generated/pi/skills/rite-temper/reference/review-dimensions.md +66 -0
  294. package/pack/generated/pi/skills/rite-temper/reference/scope-modes.md +53 -0
  295. package/pack/generated/pi/skills/rite-temper/reference/significance.md +46 -0
  296. package/pack/generated/pi/skills/rite-temper/reference/strategy-template.md +90 -0
  297. package/pack/generated/pi/skills/rite-upgrade/SKILL.md +121 -0
  298. package/pack/generated/pi/skills/rite-vet/SKILL.md +193 -0
  299. package/pack/generated/pi/skills/rite-vet/reference/anti-patterns.md +43 -0
  300. package/pack/generated/pi/skills/rite-vet/reference/artifacts.md +202 -0
  301. package/pack/generated/pi/skills/rite-vet/reference/cross-model.md +19 -0
  302. package/pack/generated/pi/skills/rite-vet/reference/depth.md +59 -0
  303. package/pack/generated/pi/skills/rite-vet/reference/eng-lenses.md +48 -0
  304. package/pack/generated/pi/skills/rite-vet/reference/review-axes.md +201 -0
  305. package/pack/generated/pi/skills/rite-watch-pr/SKILL.md +85 -0
  306. package/pack/generated/pi/skills/rite-zoom-out/SKILL.md +69 -0
  307. package/package.json +3 -2
  308. package/scripts/build-host-artifacts.sh +100 -37
  309. package/scripts/pi-generate.sh +198 -0
@@ -0,0 +1,148 @@
1
+ # The autocomplete loop: arm AFK, drive every phase
2
+
3
+ Autocomplete sequences existing `/rite-*` workflows without pausing between
4
+ routine phases. Acceptance-preserving Reslice authority is
5
+ `.pi/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md`.
6
+
7
+ <!-- BEGIN RESLICE ROUTE-TO-ACTION -->
8
+ - `FOLD` → keep Plan repair/affected Vet internal; no stop solely for topology/count.
9
+ - `GUARD_AND_REPAIR` → enter Spec Drift Guard/Clarify; pause only at an existing human-owned gate; resume Plan/Vet internally.
10
+ - `BLOCKED_INPUT` → no planning writes; stop internal branch; exact diagnostic; recover authority; reclassify.
11
+ <!-- END RESLICE ROUTE-TO-ACTION -->
12
+
13
+ ## Arm AFK once
14
+
15
+ ```yaml
16
+ allow_gates: [advisory]
17
+ max_slices: 10
18
+ max_agents: 32
19
+ max_minutes: 120
20
+ max_review_queue: 8
21
+ expires_at: "<now + 4 hours>"
22
+ # continue_sequence: true # opt-in: chain recorded continuations after Seal GO
23
+ # max_workspaces: 5 # sequence budget when chaining
24
+ # max_parallel: 10 # Build batch cap; 1 = serial (default: eligible, cap 10)
25
+ # max_tokens: <N>
26
+ # max_cost_usd: <amount>
27
+ # notify: "<cmd>"
28
+ ```
29
+
30
+ Read an existing sentinel first. Preserve it byte-for-byte when valid; stop if
31
+ its gate ceiling exceeds advisory, required envelope is malformed/expired, or
32
+ `max_slices` conflicts with the invocation. If absent, write it once after
33
+ clarity, replacing the safe slice default only for explicit `--max-slices N`
34
+ and resolving one absolute UTC expiry. It is read-only: never rewrite it after
35
+ Vet or reset it on resume.
36
+
37
+ ### Derive the mutable post-vet budget
38
+
39
+ After Vet, count pending slices and take the minimum of that count, explicit
40
+ flag, and sentinel cap. Before first Build, seed absent state-owned
41
+ `afk_slices_remaining`; retain the lower valid existing value and never increase
42
+ or reinitialize it. AFK configuration itself stays unchanged.
43
+
44
+ ### Admit each unattended cycle
45
+
46
+ Before every phase, review fan-out, recovery, or writer dispatch, apply
47
+ `afk-hitl.md#unattended-resource-envelope`: cheapest current-state/readiness
48
+ check first; reject overlap; count unresolved review; check expiry and native
49
+ agent/token/cost/time headroom. Count every leaf result. At the review cap, only
50
+ reconciliation that reduces the queue may run. Any reached or unobservable
51
+ bound stops before more work and persists the winning reason. A new activation
52
+ gets fresh activation-local counters but retains durable slice/recovery state,
53
+ expiry, and recomputed queue.
54
+
55
+ `allow_gates: [advisory]` means validating gates pause now rather than becoming
56
+ Seal NO-GO. Only explicit human configuration outside Autocomplete may widen it.
57
+
58
+ ## Phase arc
59
+
60
+ Workspace files carry state; chat does not. Read and execute each phase skill:
61
+
62
+ | Step | Phase | Completion / edge |
63
+ | --- | --- | --- |
64
+ | 1 | `/rite-spec` | investigate and write testable intent |
65
+ | 2 | `/rite-clarify` | topology-first scan; require `Decision coverage: CLEAR`, then arm AFK |
66
+ | 3 | `/rite-temper` | harden or reduce; expansion and irreversible risk pause |
67
+ | 4 | `/rite-define` | approved plan/tasks/traceability |
68
+ | 5 | `/rite-vet` | every plan; derive mutable budget after READY |
69
+ | 6 | `/rite-build` batch loop | largest eligible path-disjoint set (cap 10; serial when <2 eligible); recompute after each integrate; charge once per green built slice |
70
+ | 7 | `/rite-prove` | all slices built; approved proof; recovery on red |
71
+ | 8 | `/rite-polish` | re-prove after code edits |
72
+ | 9 | `/rite-review` | in-scope correction then fresh proof |
73
+ | 10 | `/rite-seal` | GO/NO-GO; no Git |
74
+ | 11 | `/rite-ship` | only after GO; `--ship` never authorizes Git; stop at literal-GO/native approval |
75
+
76
+ Before advancing, check resource admission and
77
+ [stop-conditions.md](stop-conditions.md). After source edits, discard stale pass
78
+ evidence. Re-read the active workspace before each phase.
79
+
80
+ ## Sequence continuation
81
+
82
+ With `continue_sequence: true` and sequence budget remaining
83
+ ([sentinel](../../devrites-lib/reference/standards/afk-hitl.md#sequence-continuation-continue_sequence-max_workspaces)),
84
+ step 10 does not end the run: leave the sealed workspace unshipped with its
85
+ `Next step: /rite-ship`, then invoke the next recorded continuation
86
+ (`/rite-spec <parent>-<n> "<objective>"` from the parent's `decisions.md` sequence)
87
+ and re-enter step 1. Spend one workspace per opened continuation.
88
+
89
+ Spend accounting is durable in `state.md` cursors, not chat. Before invoking the
90
+ continuation, ensure the current workspace's `sequence_workspaces_remaining` is
91
+ set — absent, write `max_workspaces - 1` and `sequence_position: 1` first — and
92
+ `> 0`. `/rite-spec` seeds the child's sequence cursor at creation per the
93
+ [continuation contract](../../rite-plan/reference/slicing.md#continuation-workspaces);
94
+ after the child's `state.md` exists, verify it — `sequence_parent` = the current
95
+ slug, `sequence_position` = parent position + 1,
96
+ `sequence_workspaces_remaining` = parent remaining − 1, and — when the recorded
97
+ entry is the sequence's release milestone — `sequence_role: release` (gates then
98
+ require the union manifest). On resume, a child whose
99
+ fields are missing is re-seeded from its `brief.md` parent/position and the
100
+ parent's counter (same values, never a second charge); a child with no recorded
101
+ parent/position is not a sequence member and the chain stops.
102
+
103
+ Stop instead when: no recorded next entry; the cap, expiry, or review-queue bound is
104
+ reached; a human-owned, safety, access, or exhaustion condition fires; or Seal returns
105
+ `NO-GO`. On stop, report the sequence position, the sealed-but-unshipped workspaces, and
106
+ the single release command (`/rite-autocomplete <release milestone> --ship`, or
107
+ `/rite-ship` for the current sealed workspace when the sequence is complete).
108
+
109
+ ## Backtrack without handing off
110
+
111
+ The active Autocomplete root remains caller whenever a later phase exposes an
112
+ agent-owned earlier-phase gap:
113
+
114
+ 1. Save the originating phase/action unless a valid native return cursor exists.
115
+ 2. On cold resume, reconcile the terminal cursor against durable fingerprint
116
+ accounting. Restore `return_next_action` only from the approved
117
+ `test-plan.md`/evidence action; ambiguity returns to Vet and never licenses
118
+ execution.
119
+ 3. Invoke required Plan repair, affected Vet, remediation, and proof inline.
120
+ Recovery Vet is a narrow Vet recheck of prior findings, changed paths/criteria,
121
+ and affected evidence; it never restarts unaffected axes. A nested `STOP`
122
+ ends that phase only; do not hand the intermediate command to the user.
123
+ 4. Re-read state after each nested phase. Reconcile exact causal fingerprints
124
+ from `drift.md`/`evidence.md`. A closed reproduction is progress. A different
125
+ Critical/Important invariant gets a separate budget; Suggestion/Nit/FYI does
126
+ not prolong the chain. Only a no-progress result charges the same fingerprint.
127
+ 5. For failed consumptive action, spent authorization blocks only another real
128
+ execution. Use retained evidence for offline diagnosis, repair, and narrow
129
+ Vet; after READY, pause for fresh authorization.
130
+ 6. Restore and consume the original cursor when prerequisites are green.
131
+
132
+ <!-- workflow-artifact-adapter: {"module":"devrites-lib/reference/standards/workflow-artifacts.md","entry":"loop tick sees Workflow Artifact trigger/state","action":"invoke classifier once under owner lock; no actor-history migration","return":"same loop cursor; no budget charge for verify/rerun"} -->
133
+ Ask only for a human-owned decision or mandatory safety/access action. Three
134
+ no-progress corrections of one exact fingerprint exhaust; preserve its
135
+ reproduction and dead ends without another Plan/Vet command.
136
+
137
+ ## Continuous caller obligation
138
+
139
+ No user-facing reply is permitted while durable state contains agent-owned
140
+ `NEEDS_REPLAN`, an intermediate Plan/Vet action, or a distinct retained
141
+ Critical/Important fingerprint below its cap. Invoke the next internal repair
142
+ immediately. A narrow reviewer closing one finding and exposing another
143
+ Critical/Important invariant is progress, not exhaustion.
144
+
145
+ The number of completed repair/Vet cycles is not a stop condition. Context
146
+ pressure, compaction, session duration, and nested completion do not convert an
147
+ internal checkpoint into a handoff. Persist it and resume until the requested
148
+ rest point or a shared human/safety/access/exhaustion condition.
@@ -0,0 +1,92 @@
1
+ # Stop conditions: when autocomplete pauses
2
+
3
+ On a real stop, write `state.md` as `awaiting_human` or `blocked`, persist the
4
+ reason, and include one resume command only when an actual human/safety/access
5
+ action can change it. Exhausted agent-owned recovery records terminal
6
+ `Next step: none` and no runnable recovery command. `--ship` never bypasses a
7
+ stop.
8
+
9
+ Authority: `.pi/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md`.
10
+
11
+ <!-- BEGIN RESLICE ROUTE-TO-ACTION -->
12
+ - `FOLD` → keep Plan repair/affected Vet internal; no stop solely for topology/count.
13
+ - `GUARD_AND_REPAIR` → enter Spec Drift Guard/Clarify; pause only at an existing human-owned gate; resume Plan/Vet internally.
14
+ - `BLOCKED_INPUT` → no planning writes; stop internal branch; exact diagnostic; recover authority; reclassify.
15
+ <!-- END RESLICE ROUTE-TO-ACTION -->
16
+
17
+ ## Always stop
18
+
19
+ Regardless of flags or AFK ceiling:
20
+
21
+ - destructive data migration;
22
+ - auth/authz boundary change;
23
+ - public API break;
24
+ - external-service contract change; or
25
+ - filesystem destruction outside the workspace.
26
+
27
+ Red proof cannot advance. Run bounded Debug Recovery; stop after proven
28
+ exhaustion unless the remaining owner is human.
29
+
30
+ ## Not stops: internal technical routing
31
+
32
+ `NEEDS_REPLAN` is not a stop condition under active Autocomplete. It blocks
33
+ forward work, persists the return cursor, and invokes Plan repair plus Recovery
34
+ Vet inline. The same applies to nested `STOP`/`Next step` when its decision is
35
+ agent-owned.
36
+
37
+ Agent-owned backtracking is not a stop condition while the exact causal
38
+ fingerprint has budget. Invoke the earlier phase, affected Vet, remediation, and
39
+ proof; then resume the origin. Stop only after three no-progress corrections of
40
+ that exact fingerprint or a real human/safety/access gate. Preserve reproduction,
41
+ attempts, and dead ends; never offer `/rite-plan unblock` or another routine
42
+ phase command. Reinvocation with unchanged evidence does not reset the cap.
43
+ `unchanged` means the same fingerprint already has three recorded no-progress
44
+ corrections. Closure is progress; a separately evidenced Critical/Important
45
+ invariant starts its own cap and cannot extend the closed one.
46
+
47
+ Spent consumptive-action authorization is not technical-recovery exhaustion.
48
+ It blocks another execution; retained new Critical/Important evidence still
49
+ enters offline recovery. After affected Vet is READY, pause for fresh action
50
+ authorization and never reuse old GO.
51
+
52
+ Past evidence being irretrievable is not by itself terminal. If an in-scope
53
+ trusted seam can uniquely discriminate the next failure, run diagnostic-
54
+ amplification Plan repair and narrow Vet inline, then pause for fresh GO before
55
+ one evidence-acquisition attempt. Use terminal none only when no safe in-scope
56
+ seam exists, a real human/risk/scope gate owns it, or bounded recovery is
57
+ exhausted.
58
+
59
+ <!-- workflow-artifact-adapter: {"module":"devrites-lib/reference/standards/workflow-artifacts.md","entry":"classifier returns owner-busy, exhausted, or existing hard gate","action":"stop on exact WAIT_ACTIVE_OWNER, BLOCKED_EXHAUSTED, or BLOCKED_GATE result","return":"unchanged cursor plus fixed route-owned output"} -->
60
+ ## Other stop classes
61
+
62
+ - **Gate severity:** blocking or escalating gate; any open validating question.
63
+ - **Temper:** any `expand` or added acceptance criterion. `hold-rigor`,
64
+ `reduce-to-MVP`, and a justified skip do not pause.
65
+ - **Clarify:** material Partial/Missing/unowned decision coverage or a
66
+ low-confidence high-consequence assumption. Continue the initial interview;
67
+ never arm AFK early.
68
+ - **Seal:** NO-GO, with every blocker and fix direction. Never round up to GO.
69
+ - **Reslice:** execute its marked action before deciding continue/stop.
70
+ - **Slice budget:** any validated root-owned remaining value of zero stops before the next dispatch
71
+ when slices remain; malformed state also stops. Report whether the winning
72
+ bound was the pre-existing remaining value, explicit flag, sentinel cap, or post-vet pending count.
73
+ Zero with no pending slices is normal completion and proceeds to Prove.
74
+ - **Resource envelope:** missing/malformed/expired AFK, overlapping run,
75
+ exhausted/unobservable declared agent/token/cost/time headroom, or review queue
76
+ above cap. At cap, only queue-reducing reconciliation may run. Persist winning
77
+ bound and observed usage; a new activation does not reset durable budgets or
78
+ expiry.
79
+ - **Confidence:** intent still cannot become testable acceptance after interview.
80
+ - **Repeated failure:** the exact fingerprint's bounded recovery is exhausted.
81
+
82
+ ## Final GO and durable stop
83
+
84
+ `--ship`/`--yolo` never authorizes Git. With a flag, complete Ship preflight,
85
+ disclose the exact plan, and stop for literal `GO` plus native approval. Without
86
+ one, stop at Seal GO with `/rite-ship`. Seal GO, AFK, prior approval, and flags
87
+ never satisfy Ship approval.
88
+
89
+ A cold-resumable stop records `state.md` status, exact reason, and either one
90
+ human-owned resume action or `none — technical recovery exhausted`; the owning
91
+ question/drift/seal entry explains it. The user-facing line says what stopped
92
+ and, only when applicable, what human action resumes it.
@@ -0,0 +1,96 @@
1
+ ---
2
+ name: rite-build
3
+ description: Build the next approved vertical slice with evidence. HITL one-slice default; AFK/autocomplete chain serially or in eligible path-disjoint batches (dynamic size, cap 10); `--parallel N` caps a batch.
4
+ argument-hint: "[--parallel N] [slice number or name]"
5
+ user-invocable: true
6
+ ---
7
+
8
+ # /rite-build: one verified slice
9
+
10
+ HITL stops; a later user invocation starts the next slice.
11
+ Explicit `.devrites/AFK` alone lets the controlling root chain under green proof,
12
+ caps and pause rules. Every wright returns after one slice.
13
+ **Opt-in:** `/rite-build --parallel N` (2≤N≤10; N=1≡serial) follows
14
+ [`reference/parallel-batch.md`](reference/parallel-batch.md)
15
+ ([`one-slice-cycle.md`](reference/one-slice-cycle.md)).
16
+
17
+ Root owns gates/bookkeeping; fresh
18
+ [`devrites-slice-wright`](.pi/agents/devrites-slice-wright.md) writes source/tests.
19
+ Workflow Artifacts use
20
+ [`workflow-artifacts.md`](../devrites-lib/reference/standards/workflow-artifacts.md).
21
+ Execute [`reference/phase-contract.md`](reference/phase-contract.md)
22
+ ([`one-slice-cycle.md`](reference/one-slice-cycle.md),
23
+ [`afk-discipline.md`](reference/afk-discipline.md)); dispatch uses
24
+ [`reference/wright-dispatch.md`](reference/wright-dispatch.md).
25
+
26
+ ## Required rules
27
+
28
+ Read `.pi/skills/devrites-lib/reference/standards/core.md` first. Load only triggered rules:
29
+ coding/error/testing/[`tdd.md`](reference/tdd.md)/patterns/DoD; binding
30
+ `.devrites/principles.md`; security; topology; data integrity; integration reliability.
31
+ Wright applies anti-slop; root verifies returns and never patches source.
32
+
33
+ ## Invariants
34
+
35
+ - Default: one slice; writers serial on control. Parallel only via `--parallel N`
36
+ under [`reference/parallel-batch.md`](reference/parallel-batch.md). Same-worktree
37
+ multi-writer / root-emulated concurrency forbidden. Native-worktree pilot =
38
+ single-slice isolation when `wright-dispatch.md` preflight + reconcile hold.
39
+ - Exact feature scope only; reject out-of-allowlist diffs; record adjacent issues.
40
+ - Re-prove affected behavior after edits; reuse observations only under
41
+ [evidence validity](../devrites-lib/reference/candidate-integrity.md#evidence-validity).
42
+ - Unplanned dependency/design-system/gap/repair → Vet/Spec Drift Guard batch
43
+ sweep: every contract-assumption violation recorded before one folded
44
+ repair+vet. Ask only for licensing/cost/security/product or explicit
45
+ architecture-policy decisions.
46
+ - Root never edits product source/tests (`.devrites/` + Workflow Artifact only).
47
+ Wright is sole product writer; extras in returned paths/`git diff --name-only` hard-stop.
48
+ - Principles bind; irreversible conflict needs human exception or stop.
49
+ - Evidence beats confidence. Never weaken tests, skip TDD, widen writers, or
50
+ self-approve. Drift → [`spec-drift-guard.md`](reference/spec-drift-guard.md);
51
+ checkpoint → [`checkpoint.md`](reference/checkpoint.md).
52
+ - Async readiness waits during slice work follow
53
+ [`debug-recovery.md`](../devrites-lib/reference/standards/debug-recovery.md)
54
+ (bounded poll + last-signal artifact; no blind sleep as primary strategy).
55
+
56
+ ## Workflow Artifact branch
57
+
58
+ <!-- workflow-artifact-adapter: {"module":"devrites-lib/reference/standards/workflow-artifacts.md","entry":"Vet-ready admitted bytes require root authorship outside product wright","action":"ROOT_TRANSACTION; root writes only admitted .devrites/** targets","return":"saved Build slice cursor; wright product allowlist unchanged"} -->
59
+ ## `--parallel N` (opt-in)
60
+
61
+ Omitted/`1` ≡ serial; `2`–`10` is a **cap** — the root runs the largest eligible
62
+ path-disjoint set it can start now (`N_eff`), takes fewer when the cap cannot be
63
+ filled, and recomputes after every integrate until no pending slice remains
64
+ ([`parallel-batch.md` § Dynamic selection](reference/parallel-batch.md#dynamic-selection-and-re-batching)).
65
+ Unattended runs (`/rite-autocomplete`, `.devrites/AFK` `max_parallel`) repeat batches
66
+ inside the same run; HITL stops after each batch. Non-integer/`N≤0`/`N>10` hard refuse.
67
+ All-green serial integrate; a red/gap sibling gets a bounded repair round in
68
+ its own worktree — never rebuilt from scratch while budget remains.
69
+ Post-writer inventory and affected rechecks follow `phase-contract.md` § Independent
70
+ Build review; fold accounts before one repair-all wright.
71
+ Plan-owned gaps still route through Spec Drift Guard
72
+ (batch sweep, one folded plan repair + one vet recheck inline); do not emit
73
+ a human `Fix`. Exhausted repair blocks and preserves everything;
74
+ `cleanup --force` salvages slice branches before removing worktrees —
75
+ human-gated to abandon a batch, orchestrator-emitted only as the salvage
76
+ step of an automatic frozen-lease re-batch.
77
+ AFK charges after integrate only. Running lease blocks another
78
+ `/rite-build`. Details: `parallel-batch.md`.
79
+
80
+ ## Execute and reply
81
+
82
+ Run every step in `reference/phase-contract.md`: readiness, one target, dispatch
83
+ or canonical transaction, return inspection, independent code/doubt/test analysis,
84
+ approved fail-on-red proof, record, AFK accounting, and stop. Use
85
+ [`reference/output.md`](reference/output.md) plus the shared
86
+ [`reply contract`](../devrites-lib/reference/reply-contract.md). HITL never starts
87
+ the next slice automatically; AFK obeys remaining budget; Prove requires all slices built.
88
+
89
+ ## Phase exit
90
+
91
+ **Complete when:** the dispatched wright returns green proof for the slice,
92
+ `git diff --name-only` ⊆ allowlist, independent test analysis admits no Critical
93
+ gap, and `state.md` cursor advances with recorded evidence paths.
94
+
95
+ **Failing case:** wright reports "done" but proof command was not executed or
96
+ failed → slice incomplete; do not advance cursor.
@@ -0,0 +1,145 @@
1
+ # AFK discipline for unattended `/rite-build`
2
+
3
+ AFK mode is active when `.devrites/AFK` exists. It lets `/rite-build` chain slices
4
+ without per-slice user input. The rules below limit that unattended work.
5
+
6
+ Load the shared
7
+ [`afk-hitl.md`](../../devrites-lib/reference/standards/afk-hitl.md#the-sentinel-devritesafk)
8
+ contract for the sentinel schema, defaults, gate ceiling, and mutable-counter
9
+ ownership. This file owns only Build's dispatch, charging, and red-path behavior.
10
+
11
+ Rules: green before `built`; hard `max_slices` cap; gates before the action they
12
+ control; irreversible work (destructive/auth/public API) always pauses.
13
+
14
+ ## Iteration cap
15
+
16
+ The controlling root owns the cap:
17
+
18
+ 1. **Before every dispatch**, re-read `.devrites/AFK`, `state.md`, and the
19
+ selected slice. A configured `max_slices` and any existing
20
+ `afk_slices_remaining` value, including its released bullet form, must each
21
+ be a decimal nonnegative integer. A missing
22
+ `state.md` or malformed configured value fails closed; an omitted cap is the
23
+ documented unlimited default only when no remaining counter exists. If the
24
+ effective remaining value is zero, stop before dispatching another slice.
25
+ 2. **After proof is green**, combine the pending → built record and budget
26
+ charge in one `state.md` rewrite. If the remaining field is absent, add
27
+ `afk_slices_remaining` to a cursor table or `AFK slices remaining` to a
28
+ legacy bullet cursor, seed it from `max_slices`, and write
29
+ `max_slices - 1`; otherwise preserve its spelling and write `remaining - 1`.
30
+ The counter is never below zero: a value that would go negative is an invariant failure and
31
+ stops. A missing `max_slices` means unlimited and no remaining field is
32
+ created.
33
+ A controlling orchestrator may pre-seed the remaining field from a validated
34
+ post-plan budget before the first dispatch; never increase or reinitialize an
35
+ existing value.
36
+ 3. **Charge exactly once after each green built slice.** On the control tree, a slice
37
+ already marked built is not charged again after retry, resume, or
38
+ compaction. Re-read the saved cursor; if it is zero, report the cap and stop
39
+ before the next dispatch.
40
+ - **Serial:** charge when fail-on-red is green and the built record is written
41
+ (same rewrite as step 2).
42
+ - **Parallel `--parallel`:** charge only after **successful serial integrate**
43
+ — once per integrated green sibling. Abort / integrate-failed → charge **0**.
44
+ Do not charge on worktree-green before integrate. See
45
+ [`parallel-batch.md`](parallel-batch.md).
46
+
47
+ Use this stop message:
48
+
49
+ ```text
50
+ AFK cap reached. Raise `state.md` `afk_slices_remaining`/`AFK slices remaining` or remove the sentinel to continue.
51
+ ```
52
+
53
+ `max_slices` itself is read-only and never rewritten. No exit-code command
54
+ enforces this policy.
55
+
56
+ Choose caps deliberately (≈5–10 small, ≈30–50 larger). Avoid `unlimited` until HITL
57
+ has succeeded for the work.
58
+
59
+ ## Fail-on-red
60
+
61
+ The **fail-on-red step** refuses `built` when targeted tests/types/lint are red. Red means
62
+ wrong contract or proof path — agent-owned recovery; never advance on broken state.
63
+
64
+ The fail-on-red path:
65
+
66
+ 1. Continue the same wright under `devrites-debug-recovery`, carrying exact output and dead
67
+ ends; cap writer + recovery at three no-progress attempts per exact causal fingerprint.
68
+ A correction that closes the reproduction is progress; a different evidenced
69
+ Critical/Important invariant starts a separate fingerprint.
70
+ 2. Green → record the slice. Product-contract/irreversible ambiguity → write the genuine
71
+ human gate. Missing human-only credential/permission → write a human-intervention gate.
72
+ 3. Any other exhausted objective failure → set `Status: blocked`, preserve the reproduction,
73
+ set `Next step: none — technical recovery exhausted for <causal fingerprint>; requires new evidence or changed failure conditions`, and STOP without a qid or runnable phase command. Reinvocation with the unchanged fingerprint remains blocked and does not reset the cap.
74
+ 4. Fire `notify:` only for an actual `awaiting_human` transition.
75
+
76
+ AFK never starts the next slice while checks are red and never asks the human to approve
77
+ agent-owned diagnosis or parser/test repair.
78
+
79
+ ## Irreversible-risk list (always pause)
80
+
81
+ Regardless of `allow_gates`, AFK invokes the checkpoint protocol when the slice touches
82
+ any of:
83
+
84
+ - Destructive data migration (drop column, drop table, irreversible backfill).
85
+ - Auth / authz boundary change (new role, changed permission check, new public auth endpoint).
86
+ - Public API break (response shape change, removed endpoint, changed status code semantics).
87
+ - External-service contract change (webhook payload, partner-facing schema).
88
+ - Filesystem destructive operation outside the workspace (`rm -rf` of project paths,
89
+ rewriting `.gitignore`-listed paths, deleting fixtures).
90
+ - Anything the slice's `Gate: blocking` plus its `Checkpoint:` line in `tasks.md` flags as irreversible.
91
+
92
+ This is the Claude Code auto-mode transcript classifier list adapted to the DevRites
93
+ workspace.
94
+
95
+ ## The `notify:` hook contract
96
+
97
+ The hook is a single shell command run on the `awaiting_human` transition. Environment
98
+ the hook receives:
99
+
100
+ | Var | Value |
101
+ | --- | --- |
102
+ | `DEVRITES_QID` | the new qid (e.g. `q-2026-05-28-001`) |
103
+ | `DEVRITES_GATE` | `advisory` / `validating` / `blocking` / `escalating` |
104
+ | `DEVRITES_SLICE` | `<N — name>` |
105
+ | `DEVRITES_SLUG` | active feature slug |
106
+ | `DEVRITES_QUESTION` | the checkpoint text |
107
+ | `DEVRITES_PROPOSED` | the proposed answer |
108
+
109
+ The hook is best effort: a non-zero exit does **not** roll back the pause. Failures are
110
+ logged to `evidence.md` so the user sees them on return.
111
+
112
+ Example targets:
113
+
114
+ - `curl -d "$DEVRITES_QID: $DEVRITES_QUESTION" ntfy.sh/my-topic`
115
+ - `osascript -e "display notification \"$DEVRITES_QUESTION\" with title \"DevRites: $DEVRITES_GATE\""`
116
+ - `pb push "$DEVRITES_SLUG: $DEVRITES_QUESTION"` (via pushbullet CLI)
117
+
118
+ DevRites does not implement notifications; the configured hook does.
119
+
120
+ ## When to leave AFK
121
+
122
+ Drop the sentinel before:
123
+
124
+ - A new feature when `/rite-build` has not yet completed successfully on this codebase
125
+ in HITL.
126
+ - A risky slice you marked `Mode: HITL` and want to walk through interactively even if
127
+ the gate is technically `validating`.
128
+ - Any time you'd rather review per-slice than batch-resolve afterwards.
129
+
130
+ AFK allows routine work to continue automatically. Re-enable it for another batch of
131
+ low-stakes work.
132
+
133
+ ## What AFK does NOT do
134
+
135
+ - It does not bypass `/rite-prove`, `/rite-review`, or `/rite-seal`. Those gates are
136
+ feature-scoped and always run when their phase runs.
137
+ - It does not skip `/rite-plan repair` when the Spec Drift Guard finds that the
138
+ durable plan is wrong. Objective implementation and tool failures stay in
139
+ bounded recovery instead.
140
+ - It does not skip `devrites-source-driven` checks. Uncertain framework behavior still
141
+ triggers the doc lookup.
142
+ - It does not skip `evidence.md` writes. AFK runs that don't record evidence are
143
+ unproven and get rejected at `/rite-prove` regardless.
144
+
145
+ The sentinel widens *human pauses*, nothing else.
@@ -0,0 +1,23 @@
1
+ # rite-build: anti-patterns
2
+
3
+ Load when a non-trivial decision stands or stopping, TDD, or doubt discipline
4
+ feels inconvenient.
5
+
6
+ Pack-wide rationalizations and red flags live in
7
+ [standards/anti-patterns.md](../../devrites-lib/reference/standards/anti-patterns.md).
8
+
9
+ ## Phase-specific rationalizations
10
+
11
+ | Excuse | Rebuttal |
12
+ |---|---|
13
+ | "Slices 1 and 2 are related; let me do both." | HITL needs a later user invocation. Explicit `.devrites/AFK` may let the root chain only after green proof and cap/pause gates; each wright still returns after one. |
14
+ | "It's faster to skip `devrites-doubt` for this small change." | Doubt is cheapest *before* the decision is standing. After is debugging. |
15
+
16
+ ## Red Flags
17
+
18
+ - About to start slice N+1 outside explicit AFK or before its green-proof/cap/pause gates.
19
+ - Skipping `devrites-doubt` on a branching, boundary, data-model, auth, public-API, or migration decision.
20
+ - Adding a dependency or a second design system without recording rationale in `decisions.md`.
21
+ - Writing a `try/catch` block wider than what you handle.
22
+ - A comment that restates what the next line does.
23
+ - Touching files that aren't in `touched-files.md` for "tidiness".
@@ -0,0 +1,120 @@
1
+ # Checkpoint protocol: what `/rite-build` does when a slice is HITL
2
+
3
+ HITL slices pause **pre-action** as a ranked **option set** before any code:
4
+
5
+ - **Interactive:** `AskUserQuestion`; record to `questions.md`/`decisions.md`; clear gate;
6
+ continue in place (no `/rite-resolve` round-trip).
7
+ - **Absent / AFK / notify-only:** persist open question + `Awaiting human`, notify, **stop**.
8
+ Resume via `/rite-resolve` (or `--batch`).
9
+
10
+ ## Render contract
11
+
12
+ Render the checkpoint in user-facing output **and** persist it for the next session / AFK
13
+ observer.
14
+
15
+ ### User-facing render: the option set
16
+
17
+ Present as `AskUserQuestion` ranked **option set** (`afk-hitl.md`): 2–4 options,
18
+ recommended first + `(Recommended)`, dimension-tagged trade-offs, plus escape hatch.
19
+ Header names slice + gate:
20
+
21
+ ```
22
+ Slice <N — name> — HITL (<gate>, SLA <SLA>). <Checkpoint text from tasks.md>
23
+
24
+ ▸ 1. <recommended> (Recommended)
25
+ logic: … · infra: … · business: … · architecture: … (+ security/UX/risk if in scope)
26
+ 2. <alternative> — <rationale + the trade-off it accepts>
27
+ 3. <alternative> — <rationale>
28
+ 4. Something else — I'll describe it
29
+ ```
30
+
31
+ Option #1 (recommended) is **required** and must reflect *this* project. Interactive pick →
32
+ resolve in place; pause → persist the same set to `questions.md` `options:` with resume
33
+ `/rite-resolve <qid> "<answer>"` (or `--drop <qid> "<reason>"`).
34
+
35
+ ### Workspace mutations
36
+
37
+ In one bounded root-owned update (one `questions.md` append and one `state.md`
38
+ rewrite; do not claim cross-file atomicity):
39
+
40
+ 1. **`questions.md` append:**
41
+
42
+ ```markdown
43
+ ## q-<YYYY-MM-DD>-<NNN>
44
+ status: open
45
+ slice: <N — name>
46
+ gate: <gate from tasks.md>
47
+ question: <Checkpoint text from tasks.md>
48
+ options: | # the ranked set, recommended first (matches the render)
49
+ 1. <recommended> (Recommended) — logic: … · infra: … · business: … · architecture: …
50
+ 2. <alternative> — <rationale>
51
+ proposed: <the recommended option restated; matches option 1>
52
+ raised_at: <iso>
53
+ ```
54
+
55
+ 2. **`state.md` updates:**
56
+
57
+ ```markdown
58
+ - Status: awaiting_human
59
+ - Active slice: <N — name>
60
+ - Slice mode: HITL
61
+ - Next step: /rite-resolve <qid> "<answer>"
62
+
63
+ ## Awaiting human
64
+ - qid: <q-...-NNN>
65
+ - gate: <gate>
66
+ - question: <Checkpoint text>
67
+ - proposed: <one-paragraph best-guess>
68
+ - raised_at: <iso>
69
+ - blocking_slices: [<list, from `Blocked by` lookups>]
70
+ ```
71
+
72
+ 3. **`notify:` hook (if `.devrites/AFK` defines one):** export all six env vars from the
73
+ canonical contract in [`afk-discipline.md`](afk-discipline.md) (the `notify:` hook
74
+ contract table is the source of truth):
75
+
76
+ ```bash
77
+ DEVRITES_QID="$qid" \
78
+ DEVRITES_GATE="$gate" \
79
+ DEVRITES_SLICE="$slice_id" \
80
+ DEVRITES_SLUG="$slug" \
81
+ DEVRITES_QUESTION="$question" \
82
+ DEVRITES_PROPOSED="$proposed" \
83
+ sh -c "$notify_cmd"
84
+ ```
85
+
86
+ Fire after workspace write. Hook failure does **not** roll back the pause (best-effort).
87
+
88
+ ## qid generation
89
+
90
+ Format: `q-YYYY-MM-DD-NNN`, where `NNN` is the next sequential integer for that date in
91
+ `questions.md`. The controlling root must scan every question header matching
92
+ today's prefix, collect its numeric suffixes, and select one above the highest
93
+ observed suffix (or `001` when none exist), advancing until it is unused. Then
94
+ re-read `questions.md` immediately before the append and repeat the scan. Append only if
95
+ the same candidate is still the next unused id; otherwise recompute. There is no
96
+ reservation or engine command for qids.
97
+
98
+ ## When AFK is active
99
+
100
+ If `.devrites/AFK` exists and the slice `Gate` is in `allow_gates`, skip this protocol and
101
+ auto-pick recommended option 1:
102
+
103
+ - `advisory`: log `gate: advisory` + `decisions.md`, then dispatch wright.
104
+ - `validating` (only if allowed): dispatch wright; on return log `gate: validating`, mark
105
+ `built (pending review)`, continue. Slice states remain `pending|built`; feature
106
+ acceptance is `/rite-prove`. Open `validating` is NO-GO at seal until `/rite-resolve`.
107
+
108
+ `blocking` / `escalating` / irreversible-risk always use this protocol (`afk-discipline.md`).
109
+
110
+ ## Multi-question pauses
111
+
112
+ **One question per pause.** Multiple HITL checkpoints → `/rite-plan reslice`.
113
+
114
+ ## What NOT to do
115
+
116
+ - Don't write code then pause — pre-action only.
117
+ - Don't render without persisting `state.md` + `questions.md`.
118
+ - Don't self-answer a human pause via `proposed:` — `/rite-resolve` needs an explicit
119
+ answer (distinct from interactive pick / AFK auto-pick on `allow_gates`).
120
+ - Don't put `notify:` output in chat; don't fire `notify:` on advisory-only entries.