devrites 3.0.7 → 3.1.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 (472) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +67 -47
  3. package/SECURITY.md +31 -29
  4. package/docs/adr/0001-go-engine-as-control-plane.md +1 -1
  5. package/docs/adr/0002-dual-host-harness.md +1 -1
  6. package/docs/adr/0004-state-schema-phases-sections.md +1 -2
  7. package/docs/adr/0006-clock-seam-and-engine-ci-gates.md +3 -4
  8. package/docs/adr/0009-prebuild-decision-coverage-and-readiness.md +67 -0
  9. package/docs/adr/0010-agent-first-fresh-context-orchestration.md +71 -0
  10. package/docs/adr/0011-define-plan-transition-rights.md +28 -0
  11. package/docs/adr/README.md +3 -0
  12. package/docs/agents/triage-labels.md +7 -7
  13. package/docs/architecture.md +157 -140
  14. package/docs/cli.md +41 -12
  15. package/docs/command-map.md +49 -35
  16. package/docs/engine/agent-contract.md +92 -15
  17. package/docs/engine/commands.md +242 -72
  18. package/docs/engine/state-schema.md +52 -23
  19. package/docs/engine/workspace-schema.md +94 -15
  20. package/docs/extensions.md +1 -1
  21. package/docs/flow.md +80 -50
  22. package/docs/harness-compliance.md +29 -5
  23. package/docs/orchestration.md +107 -79
  24. package/docs/quick-reference.md +7 -3
  25. package/docs/release.md +4 -3
  26. package/docs/skills.md +64 -38
  27. package/docs/usage.md +57 -38
  28. package/engine/cmd/releasepack/main.go +219 -0
  29. package/engine/cmd/releasepack/main_test.go +170 -0
  30. package/engine/commands.go +170 -23
  31. package/engine/git_guard.go +187 -0
  32. package/engine/git_guard_test.go +283 -0
  33. package/engine/hookpolicy.go +53 -55
  34. package/engine/hookpolicy_test.go +91 -1
  35. package/engine/hooks.go +296 -75
  36. package/engine/hooks_events_test.go +276 -6
  37. package/engine/hooks_workspace.go +640 -159
  38. package/engine/internal/devritespaths/paths.go +65 -10
  39. package/engine/internal/devritespaths/paths_test.go +110 -0
  40. package/engine/internal/doctor/doctor.go +153 -23
  41. package/engine/internal/doctor/doctor_test.go +74 -0
  42. package/engine/internal/forge/forge.go +940 -0
  43. package/engine/internal/forge/forge_test.go +576 -0
  44. package/engine/internal/forge/git.go +245 -0
  45. package/engine/internal/forge/liveness_unix.go +48 -0
  46. package/engine/internal/forge/liveness_windows.go +67 -0
  47. package/engine/internal/forge/manifest.go +402 -0
  48. package/engine/internal/gate/gate.go +90 -71
  49. package/engine/internal/gate/gate_test.go +71 -2
  50. package/engine/internal/harness/compliance.go +18 -24
  51. package/engine/internal/harness/harness.go +37 -44
  52. package/engine/internal/harness/harness_test.go +21 -5
  53. package/engine/internal/install/install.go +486 -38
  54. package/engine/internal/install/install_test.go +383 -10
  55. package/engine/internal/iohooks/iohooks.go +350 -59
  56. package/engine/internal/iohooks/iohooks_test.go +421 -1
  57. package/engine/internal/lib/buildreadiness.go +35 -18
  58. package/engine/internal/lib/clarifyreturn.go +91 -0
  59. package/engine/internal/lib/clarifyreturn_test.go +123 -0
  60. package/engine/internal/lib/context.go +54 -15
  61. package/engine/internal/lib/cursor_compat_test.go +8 -0
  62. package/engine/internal/lib/extensions.go +2 -3
  63. package/engine/internal/lib/gitauthority.go +601 -0
  64. package/engine/internal/lib/gitauthority_test.go +346 -0
  65. package/engine/internal/lib/jsonout.go +25 -11
  66. package/engine/internal/lib/jsonout_test.go +16 -0
  67. package/engine/internal/lib/lanes.go +14 -8
  68. package/engine/internal/lib/observability_test.go +358 -0
  69. package/engine/internal/lib/packageexistence.go +151 -35
  70. package/engine/internal/lib/packageexistence_test.go +163 -0
  71. package/engine/internal/lib/progress.go +11 -9
  72. package/engine/internal/lib/provenance.go +462 -0
  73. package/engine/internal/lib/provenance_test.go +154 -0
  74. package/engine/internal/lib/readiness_contract.json +111 -0
  75. package/engine/internal/lib/readinessartifact.go +510 -0
  76. package/engine/internal/lib/readinessartifact_test.go +321 -0
  77. package/engine/internal/lib/reconcile.go +712 -88
  78. package/engine/internal/lib/reconcile_test.go +335 -16
  79. package/engine/internal/lib/recoveryattempts.go +298 -0
  80. package/engine/internal/lib/recoveryattempts_test.go +215 -0
  81. package/engine/internal/lib/resolve.go +23 -19
  82. package/engine/internal/lib/runbook_context_test.go +20 -0
  83. package/engine/internal/lib/session.go +701 -9
  84. package/engine/internal/lib/session_test.go +80 -13
  85. package/engine/internal/lib/testintegrity.go +33 -37
  86. package/engine/internal/lib/testintegrity_test.go +63 -1
  87. package/engine/internal/migrate/migrate.go +81 -1
  88. package/engine/internal/migrate/migrate_test.go +22 -1
  89. package/engine/internal/reason/reason.go +180 -0
  90. package/engine/internal/reason/reason_test.go +35 -0
  91. package/engine/internal/rootfacts/facts.go +466 -0
  92. package/engine/internal/rootfacts/facts_test.go +306 -0
  93. package/engine/internal/safepath/safepath.go +55 -0
  94. package/engine/internal/safepath/safepath_test.go +69 -0
  95. package/engine/internal/safepath/safepath_windows_test.go +26 -0
  96. package/engine/internal/state/clarify_transition.go +165 -0
  97. package/engine/internal/state/clarify_transition_test.go +130 -0
  98. package/engine/internal/state/cmd/workflowmanifest/main.go +12 -8
  99. package/engine/internal/state/cursor.go +58 -0
  100. package/engine/internal/state/cursor_test.go +42 -1
  101. package/engine/internal/state/feature.go +35 -48
  102. package/engine/internal/state/schema.go +90 -37
  103. package/engine/internal/state/snapshot.go +18 -2
  104. package/engine/internal/state/state_test.go +187 -7
  105. package/engine/internal/state/status.go +48 -11
  106. package/engine/internal/state/workflow_manifest.json +231 -50
  107. package/engine/internal/toolpolicy/classifier.go +533 -0
  108. package/engine/internal/toolpolicy/classifier_test.go +424 -0
  109. package/engine/internal/toolpolicy/git.go +616 -0
  110. package/engine/internal/toolpolicy/scanner.go +382 -0
  111. package/engine/main.go +160 -77
  112. package/engine/observability_cli_test.go +52 -0
  113. package/engine/root_routing_test.go +277 -0
  114. package/engine/testdata/golden/TestParityBuildReadiness/arg=approved.golden +1 -1
  115. package/engine/testdata/golden/TestParityBuildReadiness/arg=emptystatus.golden +1 -1
  116. package/engine/testdata/golden/TestParityBuildReadiness/arg=noclarify.golden +1 -0
  117. package/engine/testdata/golden/TestParityBuildReadiness/arg=novet.golden +1 -0
  118. package/engine/testdata/golden/TestParityBuildReadiness/arg=stalevet.golden +1 -0
  119. package/engine/testdata/golden/TestParityBuildReadiness/arg=trailhash.golden +1 -1
  120. package/engine/testdata/golden/TestParityBuildReadiness/arg=trailpipe.golden +1 -1
  121. package/engine/testdata/golden/TestParityBuildReadiness/arg=vetnotready.golden +1 -0
  122. package/engine/testdata/golden/TestParityProgress/arg=allbuilt.golden +1 -1
  123. package/engine/testdata/golden/TestParityProgress/arg=done.golden +1 -1
  124. package/engine/testdata/golden/TestParityProgress/arg=mid.golden +1 -1
  125. package/engine/testdata/golden/TestParityProgress/arg=nophase.golden +1 -1
  126. package/engine/testdata/golden/TestParityProgress/arg=noslice.golden +1 -1
  127. package/engine/testdata/golden/TestParityProgress/arg=plan.golden +1 -1
  128. package/engine/testdata/golden/TestParityProgress/arg=seal.golden +1 -1
  129. package/engine/testdata/golden/TestParityReconcile/check-clean.golden +1 -1
  130. package/engine/testdata/golden/TestParityReconcile/inline-fallback.golden +1 -0
  131. package/engine/testdata/golden/TestParityReconcile/snapshot-no-allowlist.golden +1 -0
  132. package/engine/testdata/golden/TestParityWrightScope/devrites-edit-denied.golden +2 -0
  133. package/engine/testdata/golden/TestParityWrightScope/out-of-scope-enforce-denies.golden +1 -1
  134. package/engine/tests/adr_0011_define_plan_test.go +30 -0
  135. package/engine/tests/budget_test.go +19 -8
  136. package/engine/tests/concurrency_cli_test.go +7 -1
  137. package/engine/tests/doctor_cli_test.go +148 -2
  138. package/engine/tests/forge_cli_test.go +463 -0
  139. package/engine/tests/gate_test.go +63 -8
  140. package/engine/tests/hook_test.go +260 -8
  141. package/engine/tests/hooks_io_test.go +94 -3
  142. package/engine/tests/json_contract_test.go +127 -2
  143. package/engine/tests/migrate_cli_test.go +2 -2
  144. package/engine/tests/parity_buildreadiness_test.go +141 -10
  145. package/engine/tests/parity_learnings_test.go +16 -17
  146. package/engine/tests/parity_reconcile_test.go +20 -17
  147. package/engine/tests/parity_resolve_test.go +12 -11
  148. package/engine/tests/parity_test.go +21 -17
  149. package/pack/.claude/agents/devrites-code-reviewer.md +62 -48
  150. package/pack/.claude/agents/devrites-devex-reviewer.md +69 -53
  151. package/pack/.claude/agents/devrites-doubt-reviewer.md +29 -22
  152. package/pack/.claude/agents/devrites-evidence-scout.md +69 -0
  153. package/pack/.claude/agents/devrites-forge-judge.md +74 -61
  154. package/pack/.claude/agents/devrites-frontend-reviewer.md +48 -39
  155. package/pack/.claude/agents/devrites-performance-reviewer.md +49 -40
  156. package/pack/.claude/agents/devrites-plan-drafter.md +71 -0
  157. package/pack/.claude/agents/devrites-plan-reviewer.md +80 -47
  158. package/pack/.claude/agents/devrites-proof-runner.md +74 -0
  159. package/pack/.claude/agents/devrites-retrospector.md +48 -45
  160. package/pack/.claude/agents/devrites-security-auditor.md +46 -36
  161. package/pack/.claude/agents/devrites-simplifier-reviewer.md +50 -46
  162. package/pack/.claude/agents/devrites-slice-wright.md +153 -165
  163. package/pack/.claude/agents/devrites-spec-reviewer.md +34 -32
  164. package/pack/.claude/agents/devrites-strategy-reviewer.md +63 -34
  165. package/pack/.claude/agents/devrites-test-analyst.md +40 -30
  166. package/pack/.claude/settings.json +2 -1
  167. package/pack/.claude/skills/devrites-audit/SKILL.md +40 -61
  168. package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +24 -13
  169. package/pack/.claude/skills/devrites-debug-recovery/reference/build-the-loop.md +24 -21
  170. package/pack/.claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +34 -6
  171. package/pack/.claude/skills/devrites-debug-recovery/reference/instrumentation.md +2 -2
  172. package/pack/.claude/skills/devrites-doubt/SKILL.md +25 -17
  173. package/pack/.claude/skills/devrites-interview/SKILL.md +53 -52
  174. package/pack/.claude/skills/devrites-lib/SKILL.md +11 -9
  175. package/pack/.claude/skills/devrites-lib/reference/intent-map.md +3 -2
  176. package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +82 -137
  177. package/pack/.claude/skills/devrites-lib/reference/reply-contract.md +8 -1
  178. package/pack/.claude/skills/devrites-lib/reference/standards/README.md +38 -55
  179. package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +53 -27
  180. package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +198 -190
  181. package/pack/.claude/skills/devrites-lib/reference/standards/anti-patterns.md +5 -15
  182. package/pack/.claude/skills/devrites-lib/reference/standards/ci-cd.md +27 -58
  183. package/pack/.claude/skills/devrites-lib/reference/standards/code-review.md +16 -52
  184. package/pack/.claude/skills/devrites-lib/reference/standards/coding-style.md +2 -10
  185. package/pack/.claude/skills/devrites-lib/reference/standards/context-hygiene.md +18 -61
  186. package/pack/.claude/skills/devrites-lib/reference/standards/core.md +23 -18
  187. package/pack/.claude/skills/devrites-lib/reference/standards/deprecation.md +17 -57
  188. package/pack/.claude/skills/devrites-lib/reference/standards/development-workflow.md +4 -33
  189. package/pack/.claude/skills/devrites-lib/reference/standards/git-workflow.md +4 -20
  190. package/pack/.claude/skills/devrites-lib/reference/standards/hooks.md +3 -14
  191. package/pack/.claude/skills/devrites-lib/reference/standards/patterns.md +9 -25
  192. package/pack/.claude/skills/devrites-lib/reference/standards/performance.md +0 -9
  193. package/pack/.claude/skills/devrites-lib/reference/standards/principles.md +1 -3
  194. package/pack/.claude/skills/devrites-lib/reference/standards/security.md +17 -7
  195. package/pack/.claude/skills/devrites-lib/reference/standards/testing.md +1 -27
  196. package/pack/.claude/skills/devrites-lib/reference/standards/tooling.md +46 -50
  197. package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +23 -10
  198. package/pack/.claude/skills/devrites-source-driven/SKILL.md +23 -22
  199. package/pack/.claude/skills/rite/SKILL.md +8 -6
  200. package/pack/.claude/skills/rite/reference/menu.md +8 -6
  201. package/pack/.claude/skills/rite-adopt/SKILL.md +33 -37
  202. package/pack/.claude/skills/rite-autocomplete/SKILL.md +33 -28
  203. package/pack/.claude/skills/rite-autocomplete/reference/loop.md +21 -21
  204. package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +15 -6
  205. package/pack/.claude/skills/rite-build/SKILL.md +35 -30
  206. package/pack/.claude/skills/rite-build/reference/afk-discipline.md +38 -38
  207. package/pack/.claude/skills/rite-build/reference/evidence-standard.md +10 -0
  208. package/pack/.claude/skills/rite-build/reference/forge.md +186 -156
  209. package/pack/.claude/skills/rite-build/reference/one-slice-cycle.md +4 -3
  210. package/pack/.claude/skills/rite-build/reference/phase-contract.md +96 -175
  211. package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +129 -134
  212. package/pack/.claude/skills/rite-clarify/SKILL.md +89 -0
  213. package/pack/.claude/skills/rite-clarify/reference/decision-coverage.md +59 -0
  214. package/pack/.claude/skills/rite-converge/SKILL.md +35 -25
  215. package/pack/.claude/skills/rite-define/SKILL.md +57 -32
  216. package/pack/.claude/skills/rite-define/reference/gates.md +16 -15
  217. package/pack/.claude/skills/rite-define/reference/plan-template.md +16 -8
  218. package/pack/.claude/skills/rite-frame/reference/failure-modes.md +22 -24
  219. package/pack/.claude/skills/rite-plan/SKILL.md +44 -16
  220. package/pack/.claude/skills/rite-plan/reference/task-breakdown.md +4 -0
  221. package/pack/.claude/skills/rite-polish/SKILL.md +27 -23
  222. package/pack/.claude/skills/rite-prototype/SKILL.md +25 -26
  223. package/pack/.claude/skills/rite-prove/SKILL.md +27 -17
  224. package/pack/.claude/skills/rite-resolve/SKILL.md +12 -11
  225. package/pack/.claude/skills/rite-resolve/reference/answer-protocol.md +3 -0
  226. package/pack/.claude/skills/rite-review/SKILL.md +37 -28
  227. package/pack/.claude/skills/rite-seal/reference/phase-contract.md +27 -92
  228. package/pack/.claude/skills/rite-seal/reference/risk-and-rollback.md +13 -0
  229. package/pack/.claude/skills/rite-ship/reference/design-memory.md +31 -36
  230. package/pack/.claude/skills/rite-spec/SKILL.md +84 -135
  231. package/pack/.claude/skills/rite-spec/reference/investigation.md +37 -33
  232. package/pack/.claude/skills/rite-spec/reference/question-protocol.md +6 -2
  233. package/pack/.claude/skills/rite-spec/reference/spec-checklists.md +25 -24
  234. package/pack/.claude/skills/rite-spec/reference/spec-template.md +9 -2
  235. package/pack/.claude/skills/rite-spec/reference/state-workspace.md +13 -3
  236. package/pack/.claude/skills/rite-temper/SKILL.md +62 -47
  237. package/pack/.claude/skills/rite-temper/reference/review-dimensions.md +24 -22
  238. package/pack/.claude/skills/rite-vet/SKILL.md +110 -113
  239. package/pack/.claude/skills/rite-vet/reference/artifacts.md +42 -9
  240. package/pack/.claude/skills/rite-vet/reference/review-axes.md +39 -37
  241. package/pack/generated/claude/agents/devrites-code-reviewer.md +62 -48
  242. package/pack/generated/claude/agents/devrites-devex-reviewer.md +69 -53
  243. package/pack/generated/claude/agents/devrites-doubt-reviewer.md +29 -22
  244. package/pack/generated/claude/agents/devrites-evidence-scout.md +69 -0
  245. package/pack/generated/claude/agents/devrites-forge-judge.md +74 -61
  246. package/pack/generated/claude/agents/devrites-frontend-reviewer.md +48 -39
  247. package/pack/generated/claude/agents/devrites-performance-reviewer.md +49 -40
  248. package/pack/generated/claude/agents/devrites-plan-drafter.md +71 -0
  249. package/pack/generated/claude/agents/devrites-plan-reviewer.md +80 -47
  250. package/pack/generated/claude/agents/devrites-proof-runner.md +74 -0
  251. package/pack/generated/claude/agents/devrites-retrospector.md +48 -45
  252. package/pack/generated/claude/agents/devrites-security-auditor.md +46 -36
  253. package/pack/generated/claude/agents/devrites-simplifier-reviewer.md +50 -46
  254. package/pack/generated/claude/agents/devrites-slice-wright.md +153 -165
  255. package/pack/generated/claude/agents/devrites-spec-reviewer.md +34 -32
  256. package/pack/generated/claude/agents/devrites-strategy-reviewer.md +63 -34
  257. package/pack/generated/claude/agents/devrites-test-analyst.md +40 -30
  258. package/pack/generated/claude/settings.json +2 -1
  259. package/pack/generated/claude/skills/devrites-audit/SKILL.md +40 -61
  260. package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +24 -13
  261. package/pack/generated/claude/skills/devrites-debug-recovery/reference/build-the-loop.md +24 -21
  262. package/pack/generated/claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +34 -6
  263. package/pack/generated/claude/skills/devrites-debug-recovery/reference/instrumentation.md +2 -2
  264. package/pack/generated/claude/skills/devrites-doubt/SKILL.md +25 -17
  265. package/pack/generated/claude/skills/devrites-interview/SKILL.md +53 -52
  266. package/pack/generated/claude/skills/devrites-lib/SKILL.md +11 -9
  267. package/pack/generated/claude/skills/devrites-lib/reference/intent-map.md +3 -2
  268. package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +82 -137
  269. package/pack/generated/claude/skills/devrites-lib/reference/reply-contract.md +8 -1
  270. package/pack/generated/claude/skills/devrites-lib/reference/standards/README.md +38 -55
  271. package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +53 -27
  272. package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +198 -190
  273. package/pack/generated/claude/skills/devrites-lib/reference/standards/anti-patterns.md +5 -15
  274. package/pack/generated/claude/skills/devrites-lib/reference/standards/ci-cd.md +27 -58
  275. package/pack/generated/claude/skills/devrites-lib/reference/standards/code-review.md +16 -52
  276. package/pack/generated/claude/skills/devrites-lib/reference/standards/coding-style.md +2 -10
  277. package/pack/generated/claude/skills/devrites-lib/reference/standards/context-hygiene.md +18 -61
  278. package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +23 -18
  279. package/pack/generated/claude/skills/devrites-lib/reference/standards/deprecation.md +17 -57
  280. package/pack/generated/claude/skills/devrites-lib/reference/standards/development-workflow.md +4 -33
  281. package/pack/generated/claude/skills/devrites-lib/reference/standards/git-workflow.md +4 -20
  282. package/pack/generated/claude/skills/devrites-lib/reference/standards/hooks.md +3 -14
  283. package/pack/generated/claude/skills/devrites-lib/reference/standards/patterns.md +9 -25
  284. package/pack/generated/claude/skills/devrites-lib/reference/standards/performance.md +0 -9
  285. package/pack/generated/claude/skills/devrites-lib/reference/standards/principles.md +1 -3
  286. package/pack/generated/claude/skills/devrites-lib/reference/standards/security.md +17 -7
  287. package/pack/generated/claude/skills/devrites-lib/reference/standards/testing.md +1 -27
  288. package/pack/generated/claude/skills/devrites-lib/reference/standards/tooling.md +46 -50
  289. package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +23 -10
  290. package/pack/generated/claude/skills/devrites-source-driven/SKILL.md +23 -22
  291. package/pack/generated/claude/skills/rite/SKILL.md +8 -6
  292. package/pack/generated/claude/skills/rite/reference/menu.md +8 -6
  293. package/pack/generated/claude/skills/rite-adopt/SKILL.md +33 -37
  294. package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +33 -28
  295. package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +21 -21
  296. package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +15 -6
  297. package/pack/generated/claude/skills/rite-build/SKILL.md +35 -30
  298. package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +38 -38
  299. package/pack/generated/claude/skills/rite-build/reference/evidence-standard.md +10 -0
  300. package/pack/generated/claude/skills/rite-build/reference/forge.md +186 -156
  301. package/pack/generated/claude/skills/rite-build/reference/one-slice-cycle.md +4 -3
  302. package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +96 -175
  303. package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +129 -134
  304. package/pack/generated/claude/skills/rite-clarify/SKILL.md +89 -0
  305. package/pack/generated/claude/skills/rite-clarify/reference/decision-coverage.md +59 -0
  306. package/pack/generated/claude/skills/rite-converge/SKILL.md +35 -25
  307. package/pack/generated/claude/skills/rite-define/SKILL.md +57 -32
  308. package/pack/generated/claude/skills/rite-define/reference/gates.md +16 -15
  309. package/pack/generated/claude/skills/rite-define/reference/plan-template.md +16 -8
  310. package/pack/generated/claude/skills/rite-frame/reference/failure-modes.md +22 -24
  311. package/pack/generated/claude/skills/rite-plan/SKILL.md +44 -16
  312. package/pack/generated/claude/skills/rite-plan/reference/task-breakdown.md +4 -0
  313. package/pack/generated/claude/skills/rite-polish/SKILL.md +27 -23
  314. package/pack/generated/claude/skills/rite-prototype/SKILL.md +25 -26
  315. package/pack/generated/claude/skills/rite-prove/SKILL.md +27 -17
  316. package/pack/generated/claude/skills/rite-resolve/SKILL.md +12 -11
  317. package/pack/generated/claude/skills/rite-resolve/reference/answer-protocol.md +3 -0
  318. package/pack/generated/claude/skills/rite-review/SKILL.md +37 -28
  319. package/pack/generated/claude/skills/rite-seal/reference/phase-contract.md +27 -92
  320. package/pack/generated/claude/skills/rite-seal/reference/risk-and-rollback.md +13 -0
  321. package/pack/generated/claude/skills/rite-ship/reference/design-memory.md +31 -36
  322. package/pack/generated/claude/skills/rite-spec/SKILL.md +84 -135
  323. package/pack/generated/claude/skills/rite-spec/reference/investigation.md +37 -33
  324. package/pack/generated/claude/skills/rite-spec/reference/question-protocol.md +6 -2
  325. package/pack/generated/claude/skills/rite-spec/reference/spec-checklists.md +25 -24
  326. package/pack/generated/claude/skills/rite-spec/reference/spec-template.md +9 -2
  327. package/pack/generated/claude/skills/rite-spec/reference/state-workspace.md +13 -3
  328. package/pack/generated/claude/skills/rite-temper/SKILL.md +62 -47
  329. package/pack/generated/claude/skills/rite-temper/reference/review-dimensions.md +24 -22
  330. package/pack/generated/claude/skills/rite-vet/SKILL.md +110 -113
  331. package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +42 -9
  332. package/pack/generated/claude/skills/rite-vet/reference/review-axes.md +39 -37
  333. package/pack/generated/codex/AGENTS.md +5 -2
  334. package/pack/generated/codex/agents/devrites-code-reviewer.toml +69 -47
  335. package/pack/generated/codex/agents/devrites-devex-reviewer.toml +75 -51
  336. package/pack/generated/codex/agents/devrites-doubt-reviewer.toml +35 -20
  337. package/pack/generated/codex/agents/devrites-evidence-scout.toml +75 -0
  338. package/pack/generated/codex/agents/devrites-forge-judge.toml +80 -59
  339. package/pack/generated/codex/agents/devrites-frontend-reviewer.toml +54 -37
  340. package/pack/generated/codex/agents/devrites-performance-reviewer.toml +55 -38
  341. package/pack/generated/codex/agents/devrites-plan-drafter.toml +77 -0
  342. package/pack/generated/codex/agents/devrites-plan-reviewer.toml +82 -47
  343. package/pack/generated/codex/agents/devrites-proof-runner.toml +80 -0
  344. package/pack/generated/codex/agents/devrites-retrospector.toml +54 -43
  345. package/pack/generated/codex/agents/devrites-security-auditor.toml +53 -35
  346. package/pack/generated/codex/agents/devrites-simplifier-reviewer.toml +56 -44
  347. package/pack/generated/codex/agents/devrites-slice-wright.toml +159 -163
  348. package/pack/generated/codex/agents/devrites-spec-reviewer.toml +40 -30
  349. package/pack/generated/codex/agents/devrites-strategy-reviewer.toml +65 -34
  350. package/pack/generated/codex/agents/devrites-test-analyst.toml +46 -28
  351. package/pack/generated/codex/hooks.json +4 -14
  352. package/pack/generated/codex/skills/devrites-api-interface/SKILL.md +7 -3
  353. package/pack/generated/codex/skills/devrites-audit/SKILL.md +47 -64
  354. package/pack/generated/codex/skills/devrites-browser-proof/SKILL.md +7 -3
  355. package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +31 -16
  356. package/pack/generated/codex/skills/devrites-debug-recovery/reference/build-the-loop.md +24 -21
  357. package/pack/generated/codex/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +34 -6
  358. package/pack/generated/codex/skills/devrites-debug-recovery/reference/instrumentation.md +2 -2
  359. package/pack/generated/codex/skills/devrites-doubt/SKILL.md +32 -20
  360. package/pack/generated/codex/skills/devrites-frontend-craft/SKILL.md +7 -3
  361. package/pack/generated/codex/skills/devrites-interview/SKILL.md +60 -55
  362. package/pack/generated/codex/skills/devrites-lib/SKILL.md +18 -12
  363. package/pack/generated/codex/skills/devrites-lib/reference/intent-map.md +3 -2
  364. package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +82 -137
  365. package/pack/generated/codex/skills/devrites-lib/reference/reply-contract.md +8 -1
  366. package/pack/generated/codex/skills/devrites-lib/reference/standards/README.md +38 -55
  367. package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +53 -27
  368. package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +198 -190
  369. package/pack/generated/codex/skills/devrites-lib/reference/standards/anti-patterns.md +5 -15
  370. package/pack/generated/codex/skills/devrites-lib/reference/standards/ci-cd.md +27 -58
  371. package/pack/generated/codex/skills/devrites-lib/reference/standards/code-review.md +16 -52
  372. package/pack/generated/codex/skills/devrites-lib/reference/standards/coding-style.md +2 -10
  373. package/pack/generated/codex/skills/devrites-lib/reference/standards/context-hygiene.md +18 -61
  374. package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +23 -18
  375. package/pack/generated/codex/skills/devrites-lib/reference/standards/deprecation.md +17 -57
  376. package/pack/generated/codex/skills/devrites-lib/reference/standards/development-workflow.md +4 -33
  377. package/pack/generated/codex/skills/devrites-lib/reference/standards/git-workflow.md +4 -20
  378. package/pack/generated/codex/skills/devrites-lib/reference/standards/hooks.md +3 -14
  379. package/pack/generated/codex/skills/devrites-lib/reference/standards/patterns.md +9 -25
  380. package/pack/generated/codex/skills/devrites-lib/reference/standards/performance.md +0 -9
  381. package/pack/generated/codex/skills/devrites-lib/reference/standards/principles.md +1 -3
  382. package/pack/generated/codex/skills/devrites-lib/reference/standards/security.md +17 -7
  383. package/pack/generated/codex/skills/devrites-lib/reference/standards/testing.md +1 -27
  384. package/pack/generated/codex/skills/devrites-lib/reference/standards/tooling.md +46 -50
  385. package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +23 -10
  386. package/pack/generated/codex/skills/devrites-prose-craft/SKILL.md +7 -3
  387. package/pack/generated/codex/skills/devrites-refresh-indexes/SKILL.md +7 -3
  388. package/pack/generated/codex/skills/devrites-source-driven/SKILL.md +29 -24
  389. package/pack/generated/codex/skills/devrites-ux-shape/SKILL.md +7 -3
  390. package/pack/generated/codex/skills/rite/SKILL.md +19 -13
  391. package/pack/generated/codex/skills/rite/reference/menu.md +8 -6
  392. package/pack/generated/codex/skills/rite-adopt/SKILL.md +40 -40
  393. package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +40 -31
  394. package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +21 -21
  395. package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +15 -6
  396. package/pack/generated/codex/skills/rite-build/SKILL.md +42 -33
  397. package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +38 -38
  398. package/pack/generated/codex/skills/rite-build/reference/evidence-standard.md +10 -0
  399. package/pack/generated/codex/skills/rite-build/reference/forge.md +186 -156
  400. package/pack/generated/codex/skills/rite-build/reference/one-slice-cycle.md +4 -3
  401. package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +96 -175
  402. package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +129 -134
  403. package/pack/generated/codex/skills/rite-clarify/SKILL.md +105 -0
  404. package/pack/generated/codex/skills/rite-clarify/reference/decision-coverage.md +59 -0
  405. package/pack/generated/codex/skills/rite-converge/SKILL.md +42 -28
  406. package/pack/generated/codex/skills/rite-customize/SKILL.md +7 -3
  407. package/pack/generated/codex/skills/rite-define/SKILL.md +64 -35
  408. package/pack/generated/codex/skills/rite-define/reference/gates.md +16 -15
  409. package/pack/generated/codex/skills/rite-define/reference/plan-template.md +16 -8
  410. package/pack/generated/codex/skills/rite-doctor/SKILL.md +7 -3
  411. package/pack/generated/codex/skills/rite-dogfood/SKILL.md +7 -3
  412. package/pack/generated/codex/skills/rite-explain/SKILL.md +7 -3
  413. package/pack/generated/codex/skills/rite-frame/SKILL.md +7 -3
  414. package/pack/generated/codex/skills/rite-frame/reference/failure-modes.md +22 -24
  415. package/pack/generated/codex/skills/rite-handoff/SKILL.md +7 -3
  416. package/pack/generated/codex/skills/rite-learn/SKILL.md +7 -3
  417. package/pack/generated/codex/skills/rite-plan/SKILL.md +51 -19
  418. package/pack/generated/codex/skills/rite-plan/reference/task-breakdown.md +5 -1
  419. package/pack/generated/codex/skills/rite-polish/SKILL.md +34 -26
  420. package/pack/generated/codex/skills/rite-pov/SKILL.md +7 -3
  421. package/pack/generated/codex/skills/rite-pr-feedback/SKILL.md +7 -3
  422. package/pack/generated/codex/skills/rite-pressure-test/SKILL.md +7 -3
  423. package/pack/generated/codex/skills/rite-prototype/SKILL.md +32 -29
  424. package/pack/generated/codex/skills/rite-prove/SKILL.md +34 -20
  425. package/pack/generated/codex/skills/rite-quick/SKILL.md +7 -3
  426. package/pack/generated/codex/skills/rite-resolve/SKILL.md +19 -14
  427. package/pack/generated/codex/skills/rite-resolve/reference/answer-protocol.md +3 -0
  428. package/pack/generated/codex/skills/rite-review/SKILL.md +44 -31
  429. package/pack/generated/codex/skills/rite-seal/SKILL.md +7 -3
  430. package/pack/generated/codex/skills/rite-seal/reference/phase-contract.md +27 -92
  431. package/pack/generated/codex/skills/rite-seal/reference/risk-and-rollback.md +13 -0
  432. package/pack/generated/codex/skills/rite-ship/SKILL.md +7 -3
  433. package/pack/generated/codex/skills/rite-ship/reference/design-memory.md +31 -36
  434. package/pack/generated/codex/skills/rite-spec/SKILL.md +91 -138
  435. package/pack/generated/codex/skills/rite-spec/reference/investigation.md +37 -33
  436. package/pack/generated/codex/skills/rite-spec/reference/question-protocol.md +6 -2
  437. package/pack/generated/codex/skills/rite-spec/reference/spec-checklists.md +25 -24
  438. package/pack/generated/codex/skills/rite-spec/reference/spec-template.md +9 -2
  439. package/pack/generated/codex/skills/rite-spec/reference/state-workspace.md +13 -3
  440. package/pack/generated/codex/skills/rite-status/SKILL.md +7 -3
  441. package/pack/generated/codex/skills/rite-temper/SKILL.md +69 -50
  442. package/pack/generated/codex/skills/rite-temper/reference/review-dimensions.md +24 -22
  443. package/pack/generated/codex/skills/rite-vet/SKILL.md +117 -116
  444. package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +42 -9
  445. package/pack/generated/codex/skills/rite-vet/reference/review-axes.md +40 -38
  446. package/pack/generated/codex/skills/rite-zoom-out/SKILL.md +7 -3
  447. package/package.json +1 -1
  448. package/scripts/build-release-tarball.sh +32 -15
  449. package/scripts/check-authority-drift.py +125 -0
  450. package/scripts/check-instruction-size-baseline.mjs +19 -11
  451. package/scripts/check-invocation-integrity.py +2 -0
  452. package/scripts/codex-generate.sh +69 -33
  453. package/scripts/grade-feature.sh +121 -40
  454. package/scripts/live-hosts/agent-result.schema.json +230 -0
  455. package/scripts/live-hosts/claude.sh +87 -0
  456. package/scripts/live-hosts/codex.sh +81 -0
  457. package/scripts/live-hosts/common.sh +113 -0
  458. package/scripts/live-hosts/fake-host.py +264 -0
  459. package/scripts/live-hosts/host-transport.py +287 -0
  460. package/scripts/release-check.sh +5 -1
  461. package/scripts/run-agent-contract-evals.py +1380 -0
  462. package/scripts/run-behavioral-evals.sh +24 -30
  463. package/scripts/run-evals.sh +1 -5
  464. package/scripts/run-live-behavioral-evals.py +1274 -144
  465. package/scripts/run-outcome-evals.sh +414 -88
  466. package/scripts/run-tests.mjs +30 -2
  467. package/scripts/skills-inventory.mjs +1 -1
  468. package/scripts/validate-workflow-security.py +39 -20
  469. package/scripts/validate-workspace-schema.py +362 -10
  470. package/scripts/validate.sh +21 -15
  471. package/engine/testdata/golden/TestParityWrightScope/devrites-edit-allowed.golden +0 -1
  472. /package/engine/testdata/golden/{TestParityReconcile/check-no-claimed.golden → TestParityBuildReadiness/arg=clarifyopen.golden} +0 -0
@@ -1,9 +1,8 @@
1
- # The four failure modes: mapped to their DevRites cure
1
+ # Four failure modes and their DevRites controls
2
2
 
3
- The lens behind `rite-frame`. Each mode is a thing LLMs reliably get wrong; each already
4
- has a cure somewhere in the pack. The value of naming them here is a **portable
5
- vocabulary**: a fast self-check you can run on ad-hoc or express-lane work that never
6
- reaches the gates where those cures normally fire.
3
+ `rite-frame` checks four common LLM failure modes. Existing DevRites controls address
4
+ each one. Use these names for quick checks on ad hoc or express-lane work that does not
5
+ reach the normal gates.
7
6
 
8
7
  ## The map
9
8
 
@@ -11,18 +10,17 @@ reaches the gates where those cures normally fire.
11
10
  |---|---|---|---|
12
11
  | 1 | **Silent assumption** | A value, contract, edge case, or interpretation was *guessed* and run with: no note, no question. The ask had two readings and one was picked silently. | `core.md` #2 (no silent assumptions) / #3 (no guessing through confusion); the Spec Drift Guard; `devrites-doubt` for a single high-stakes call; `devrites-interview` when the ask is underspecified. |
13
12
  | 2 | **Overcomplication** | An abstraction, flag, config knob, or indirection nobody asked for. 200 lines where 50 would do. A single-use factory. Defensive `try/catch` + null checks inside trusted code. A dependency added where an in-repo option exists. | `coding-style.md` (simplicity, reuse-first), `patterns.md` (avoid over-engineering), `devrites-audit simplify` (deletion test, Chesterton's Fence), the "over-defensive guarding is slop" anti-pattern. |
14
- | 3 | **Out-of-scope edit** | Touched code, comments, or formatting outside the ask. A "while I'm here" refactor. Renamed something orthogonal. Reflowed an import block. | `core.md` #7 (feature scope only), `touched-files.md` (the recorded diff boundary), `devrites-engine reconcile` (hard-stops a source file changed outside the claimed set), the "it's only a small refactor" anti-pattern. |
13
+ | 3 | **Out-of-scope edit** | Touched code, comments, or formatting outside the ask. A "while I'm here" refactor. Renamed something orthogonal. Reflowed an import block. | `core.md` #7 (feature scope only), root-owned `.wright-allowlist` (the authorized write boundary), `touched-files.md` (the resulting diff record), `devrites-engine reconcile` (hard-stops a source file outside the captured allowlist), the "it's only a small refactor" anti-pattern. |
15
14
  | 4 | **Unverifiable goal** | "It works" with no command, no output, no test. A success criterion that can't be false ("make it better"). A tautological test that passes no matter what. | `rite-spec/reference/acceptance-criteria.md` (measurable acceptance), `core.md` #6 (evidence over confidence), `testing.md` (assertion strength, see it fail first), the TDD wright. |
16
15
 
17
- The first three are the **diseases** Karpathy named; the fourth is the **leverage**: a
18
- falsifiable criterion is what lets the model loop to done without a human in the loop every
19
- few minutes. FRAME front-loads mode 4 so the AUDIT of modes 1-3 has something to check
20
- against.
16
+ Karpathy named the first three. The fourth supplies the falsifiable criterion needed
17
+ for an agent to work without repeated human confirmation. FRAME defines that criterion
18
+ before auditing the other three modes.
21
19
 
22
- ## FRAME: the imperative falsifiable reframe
20
+ ## FRAME: rewrite an imperative as a falsifiable condition
23
21
 
24
- The move is to rewrite the *verb* as a *condition that can be false*. If you can't, the ask
25
- is ambiguous. That's mode 1, caught before the diff instead of after.
22
+ Rewrite the request as a condition that can be false. If that is impossible, the
23
+ request is ambiguous and triggers mode 1 before any diff exists.
26
24
 
27
25
  | Imperative ask | Weak (still a wish) | Falsifiable criterion + verify |
28
26
  |---|---|---|
@@ -33,8 +31,8 @@ is ambiguous. That's mode 1, caught before the diff instead of after.
33
31
  | "Handle errors" | "add error handling" | "On `<failure F>` the system fails closed with `<observable>`; a test forces F." → that test |
34
32
  | "Improve the UX" | "make it nicer" | *(no falsifiable check → ambiguous → `devrites-ux-shape` / ask which states/flows)* |
35
33
 
36
- A criterion passes the bar when a reviewer could run the verify command and get a clear
37
- pass or fail without asking you what you meant. If they'd have to ask, sharpen it.
34
+ A criterion is ready when a reviewer can run the verification command and get a clear
35
+ pass or fail without asking what it means.
38
36
 
39
37
  ## AUDIT: worked finding lines
40
38
 
@@ -49,20 +47,20 @@ utils.ts:5 FYI mode 3 (scope): reflowed an unrelated import block. → r
49
47
  sum.spec:12 Important mode 4 (unverifiable): test asserts `mock.called`, not the result — passes if the fn is empty. → assert the value; see it fail first (testing.md).
50
48
  ```
51
49
 
52
- Clean lanes say so explicitly (`1 assumption: clean`) so the audit is a positive
53
- statement, not a silent skip.
50
+ Record clean modes explicitly (`1 assumption: clean`) so an empty result is not mistaken
51
+ for a skipped check.
54
52
 
55
- ## How this differs from the heavier tools (so you don't reach past it)
53
+ ## Related tools
56
54
 
57
55
  - **`devrites-doubt`:** adversarial *fresh-context subagent* pre-mortem on **one** decision.
58
- Heavier, independent, anti-anchoring. rite-frame is *self-applied* and covers the four modes
59
- broadly; escalate a single load-bearing claim to doubt.
56
+ It is independent and avoids anchoring. rite-frame is self-applied and covers all four
57
+ modes; use doubt for one consequential claim.
60
58
  - **`devrites-audit <axis>`:** *fresh-context subagent* review of an **active feature's** diff
61
59
  on one axis (security / perf / simplify). Needs a `.devrites/` workspace. rite-frame needs no
62
- workspace and runs in your own context: cheaper, less independent.
60
+ workspace and runs in the current context, with less independence.
63
61
  - **`/rite-review` · `/rite-seal`:** the **gates**: parallel reviewer fan-out, blocking
64
62
  severities, written verdict. rite-frame is the inline reflex for work that never reaches a
65
- gate; it does not replace one. If the work is a real feature, the gate is the answer.
63
+ gate and does not replace one.
66
64
 
67
- The point is not redundancy. It's a tiered ladder. rite-frame is the cheapest rung: a lens
68
- you run yourself in seconds. Climb to doubt / audit / the gates as the stakes rise.
65
+ Use rite-frame for the quickest self-check. Use doubt, audit, or the full gates when the
66
+ work needs independent or feature-level review.
@@ -7,8 +7,9 @@ user-invocable: true
7
7
 
8
8
  # /rite-plan: (re)plan an active feature
9
9
 
10
- Reshape the plan when reality and the plan disagree. **Read the active workspace
11
- first.** If `.devrites/ACTIVE` is empty or its workspace is missing, stop and tell the
10
+ Update an existing plan when implementation evidence, drift, or a user decision makes it
11
+ wrong. **Read the active workspace first.** If `.devrites/ACTIVE` is empty or its workspace
12
+ is missing, stop and tell the
12
13
  user to run `/rite-spec <feature>`. **Revise mode is artifact-only**: reconcile
13
14
  `spec.md` / `architecture.md` / `plan.md` / `tasks.md` / `traceability.md` without
14
15
  editing source code.
@@ -17,9 +18,11 @@ editing source code.
17
18
  Pull `development-workflow.md` via `Read` when reshaping slice cadence or DoD criteria.
18
19
 
19
20
  ## Operating rules
20
- - Spec is living, not sacred, but never plan around a known-wrong assumption silently.
21
+ - Update the spec when needed, but never plan around a known-wrong assumption.
21
22
  - If a change alters product behavior, scope, architecture, data model, UX, security,
22
- or migration risk → **ask the user first** (use the Spec Drift Guard question format).
23
+ or migration risk → search facts first, then route the human-owned contract decision
24
+ through `/rite-clarify` (using the Spec Drift Guard). Reversible technical repair is
25
+ agent-owned and must not become a question.
23
26
  - Keep each slice small enough for one focused build → prove cycle.
24
27
  - **Slice count is derived, never dictated:** reslice when a slice fails the sizing rule
25
28
  (multiple "and"s, can't build+prove in one cycle), not to hit a user-named tally. A
@@ -28,13 +31,18 @@ Pull `development-workflow.md` via `Read` when reshaping slice cadence or DoD cr
28
31
  - **Size by complexity, order by dependency.** A slice carries a `Complexity: N/5` score (from
29
32
  `/rite-define`); a slice scoring **>3** is a reslice trigger unless its inline reason justifies
30
33
  the irreducible complexity. Honor each slice's `depends_on:`: the next *buildable* slice is the
31
- lowest pending one whose dependencies are all built (keeps one-slice-at-a-time correct, not parallel).
34
+ lowest pending one whose dependencies are all built. This preserves one-slice-at-a-time execution.
35
+ - **Root writes; drafter proposes.** Follow
36
+ [`agents.md`](../devrites-lib/reference/standards/agents.md). The controlling chat owns
37
+ human questions, decisions, reconciliation, and all planning-artifact writes.
32
38
 
33
39
  ## Workflow
34
40
  0. Read `.claude/skills/devrites-lib/reference/standards/core.md` (operating rules) before reshaping anything.
35
41
  Then run `devrites-engine preamble` for deterministic workspace orientation.
36
- 1. Read `spec.md`, `plan.md`, `tasks.md`, `state.md`, `drift.md`, and the current
37
- `git diff` (if a repo). Read `decisions.md` and `assumptions.md`. If a code-intelligence
42
+ 1. Read `spec.md`, `decision-coverage.md`, `plan.md`, `tasks.md`, `state.md`, `drift.md`,
43
+ `eng-review.md`, and the current `git diff` (if a repo). Read `decisions.md` and
44
+ `assumptions.md`. Require `Decision coverage: CLEAR`; otherwise STOP → `/rite-clarify`.
45
+ If a code-intelligence
38
46
  index is available: `codebase-memory-mcp` first, cross-checked with `codegraph`
39
47
  (`.codegraph/` / `codegraph_*` tools) + `graphify` (`graphify-out/`), else standard methods
40
48
  (LSP / `Read`/`Grep`/`Glob`); see `.claude/skills/devrites-lib/reference/standards/tooling.md`:
@@ -56,28 +64,48 @@ Pull `development-workflow.md` via `Read` when reshaping slice cadence or DoD cr
56
64
  scope, not a new negotiation.
57
65
  - **revise:** apply a requested planning-artifact revision and reconcile existing artifacts in
58
66
  any direction; propose the file edit set first, confirm each file before writing, and **never
59
- edit source code**. **Gate first: revise or new?** Same intent? >50% of existing scope
67
+ edit source code**. **Gate first: revise or new?** Same intent? More than 50% of existing scope
60
68
  survives? original *not* completable without this? Two "no"s → new work: recommend
61
69
  sealing/shipping the current workspace (MVP cut if named) then `/rite-spec` for the new
62
- intent, and stop. Revise preserves context; a new workspace provides clarity.
70
+ intent, and stop. Revise preserves context; a new workspace separates the work.
63
71
  See [replan-and-repair](reference/replan-and-repair.md) for each mode's steps.
72
+ 2a. **Draft the repair from fresh context.** Freeze the inputs and dispatch
73
+ `devrites-plan-drafter` in `repair` mode with only the selected mode, affected artifact
74
+ paths, settled contract, and observed failure/drift. Await one atomic `plan-candidate`;
75
+ the drafter writes nothing and returns human-owned choices separately.
64
76
  3. Reason about dependencies: [dependency-graph](reference/dependency-graph.md).
65
77
  **Completion:** the slice graph is cycle-free and every dependency names an existing slice.
66
78
  4. Re-slice using vertical-slice rules: [slicing](reference/slicing.md) and
67
79
  [task-breakdown](reference/task-breakdown.md). Prefer thin, shippable, verifiable.
68
80
  **Completion:** every slice is independently shippable/provable or carries an irreducibility reason.
69
- 5. Update `plan.md`, `tasks.md`, `state.md`, and append rationale to `decisions.md`.
70
- If you stopped for drift, mark the `drift.md` entry resolved.
71
- 6. If product behavior/acceptance criteria change, confirm with the user before writing.
81
+ 5. Reconcile the candidate against steps 3 and 4, then the root updates `plan.md`, `tasks.md`,
82
+ `state.md`, and appends rationale to `decisions.md`.
83
+ Any change to `architecture.md`, `plan.md`, `tasks.md`, or `traceability.md` invalidates
84
+ the previous vet verdict: set `Phase: plan`, `Next step: /rite-vet`, and, when
85
+ `eng-review.md` exists, set `Implementation readiness: NEEDS REPLAN`. Never retain READY
86
+ across changed planning inputs. Preserve `Plan approved` only for behavior/acceptance-neutral
87
+ technical repair; clear and reconfirm it when the contract changed. If you stopped for drift,
88
+ mark the `drift.md` entry resolved.
89
+ 6. If product behavior/acceptance criteria change, confirm through `/rite-clarify` before
90
+ writing, re-close `decision-coverage.md`, then reconcile the plan. After any edit to
91
+ `brief.md`, `spec.md`, `decisions.md`, `assumptions.md`, or `questions.md`, including a
92
+ behavior-neutral technical rationale appended to `decisions.md`, re-scan the affected coverage
93
+ rows, assumption audit, residual uncertainty, and closed gates. Partial/Missing, an unowned
94
+ material assumption, or an open blocking/escalating question routes `/rite-clarify`/HITL;
95
+ never refresh past it. Only after the matrix is re-closed, run
96
+ `devrites-engine readiness-digest coverage <slug>` and replace the complete
97
+ `Coverage inputs SHA-256` line in `decision-coverage.md`.
72
98
  **Completion:** the change is classified, and every behavior/acceptance change has explicit
73
99
  confirmation recorded before the artifacts are updated.
74
100
  7. **Done when:** every slice is sized (builds + proves in one cycle; no slice scoring >3
75
101
  left unjustified), the dependency order is acyclic, every `drift.md` entry you stopped for
76
102
  is marked resolved, revised artifacts agree with each other, no source files changed in
77
- `revise` mode, and behavior-change-vs-not is confirmed (`no`, or asked + answered).
103
+ `revise` mode, behavior-change-vs-not is confirmed (`no`, or clarified), and every changed
104
+ plan ends at `/rite-vet` rather than returning directly to build.
78
105
  If any check fails, loop back: don't hand off a half-reshaped plan.
79
106
 
80
- > **Mid-flight discipline.** When tempted to change product behavior without asking, absorb drift silently, or skip the user: see [`anti-patterns`](reference/anti-patterns.md). Load it the moment you reach for the excuse.
107
+ > **Mid-flight discipline.** Do not change product behavior without confirmation or
108
+ > absorb drift silently. See [`anti-patterns`](reference/anti-patterns.md).
81
109
 
82
110
  ## Output
83
111
 
@@ -86,10 +114,10 @@ Pull `development-workflow.md` via `Read` when reshaping slice cadence or DoD cr
86
114
  Default success shape:
87
115
  ```
88
116
  Done: plan repaired for <slug> in <mode> mode.
89
- Changed: plan.md, tasks.md, traceability.md, decisions.md, state.md
117
+ Changed: plan.md, tasks.md, traceability.md, decisions.md, state.md, eng-review.md <invalidated|n/a>
90
118
  Evidence: not applicable; slice map now <n> slices and next slice is <name>
91
119
  Open: <none | behavior question answered | Alternative: /rite-prove if all built slices need re-verification>
92
- Next: <single next command: build, re-define, or prove depending on the revision>
120
+ Next: /rite-vet
93
121
  Record: .devrites/work/<slug>/plan.md
94
122
  ↻ Hygiene: /clear if the repair was large; keep session for small reorder-only repairs
95
123
  ```
@@ -20,6 +20,10 @@ This reference owns decomposition; the shared schema owns field names and meanin
20
20
  planned proof, evidence status, and likely touched files.
21
21
  6. Sanity check: every acceptance criterion in `spec.md` maps to ≥1 slice; no slice has
22
22
  an unowned criterion.
23
+ 7. Resolve every foreseeable human-owned checkpoint now. Keep a build-time checkpoint only
24
+ when it needs evidence unavailable before code or mandatory action-time approval, and say why.
25
+ 8. Make every `Tests/proof` entry executable: exact command, working directory, prerequisites,
26
+ expected signal, and mutable inputs whose provenance evidence must bind.
23
27
 
24
28
  ## Keep it honest
25
29
  - **Interfaces prevent cross-slice drift.** A slice-wright sees only its own contract; the
@@ -7,19 +7,21 @@ user-invocable: true
7
7
 
8
8
  # /rite-polish: finish before review
9
9
 
10
- The "finish" phase. **Always** code-polishes; **and** runs UI normalize +
11
- design polish when the feature touches UI. Self-review the work to ship
12
- quality *before* handing it to `/rite-review`. The two-phase split (code,
13
- UI) lives in `reference/code.md` and `reference/ui.md`: read each on demand,
14
- don't load both up front.
10
+ Polish code for every feature. When the feature touches UI, normalize and polish the
11
+ UI as well. Complete this self-review before `/rite-review`. The code and UI phases
12
+ live in `reference/code.md` and `reference/ui.md`; read only the phase in scope.
15
13
 
16
14
  ## Operating rules
17
15
 
18
16
  - **Functionality complete first.** Polish runs after `/rite-prove` (full
19
17
  feature proven).
20
18
  - Feature scope only.
21
- - For UI: **NEVER polish without normalizing first**: decoration on drift is
22
- banned.
19
+ - For UI, **normalize before polishing**. Do not add decoration on top of drift.
20
+ - **Root selects; wright edits.** The controlling chat assesses and reconciles, but every
21
+ accepted source/test correction is dispatched to the sole writer,
22
+ `devrites-slice-wright`, through
23
+ [`agents.md`](../devrites-lib/reference/standards/agents.md). Never edit source inline or
24
+ run two correction writers concurrently.
23
25
 
24
26
  ## Orchestration
25
27
 
@@ -36,21 +38,25 @@ don't load both up front.
36
38
  `pages/`, `routes/`, `app/`, `views/`, `screens/`), Storybook stories,
37
39
  or design-token files. When in doubt, look for visual changes that need
38
40
  verification.
39
- 3. **Always** read [`reference/code.md`](reference/code.md) and run **Phase 1
40
- (code polish)**; if backend was touched, continue into **Phase 2 (backend
41
- polish)** from the same file.
41
+ 3. **Always** read [`reference/code.md`](reference/code.md) and assess **Phase 1
42
+ (code polish)**; if backend was touched, assess **Phase 2 (backend polish)** from
43
+ the same file. Reconcile the findings, then send accepted corrections as one bounded
44
+ wright contract.
42
45
  4. **If UI scope detected** read [`reference/ui.md`](reference/ui.md), and read
43
- `design-brief.md` if present (the UX/UI contract `devrites-ux-shape` shaped at spec and
44
- `devrites-frontend-craft` refined while building) so the polish honors the agreed
45
- direction + states. **Read the `## Visual Verdict` table in `browser-evidence.md` if present:
46
- its `FAIL` and `PARTIAL` rows are the normalize/quality-bar worklist**: fix the root cause of
47
- each (a missing state, an off-token CTA, an anti-slop hit), don't decorate around it. Then run
48
- **Phase 3 (normalize)** → **Phase 4 (UI polish)**. Honor argument modes:
46
+ `design-brief.md` if present so the polish follows the direction and states established
47
+ by `devrites-ux-shape` and refined by `devrites-frontend-craft`. **Read the
48
+ `## Visual Verdict` table in `browser-evidence.md` if present:
49
+ its `FAIL` and `PARTIAL` rows are the normalize/quality-bar worklist**: identify the root
50
+ cause of each (a missing state, an off-token CTA, or an anti-slop hit) rather than
51
+ hiding it with decoration. Assess **Phase 3 (normalize)** → **Phase 4 (UI polish)**,
52
+ then send accepted UI
53
+ corrections to the wright (which invokes the relevant craft skill). Honor argument modes:
49
54
  - `bolder | quieter | distill | harden`: passed to Phase 4 as the
50
55
  emphasis dial.
51
- - `normalize-only`: run Phase 3 and stop (no Phase 4).
52
- 5. **Re-verify after any code edit:** polish edits code, so the proof from
53
- `/rite-prove` no longer post-dates it. Run the relevant fast checks (the
56
+ - `normalize-only`: assess Phase 3 and stop (no Phase 4).
57
+ 5. **Re-verify after any code edit:** a wright correction invalidates prior proof, so
58
+ `/rite-prove` no longer post-dates it. Dispatch `devrites-proof-runner` for the affected
59
+ fast checks (the
54
60
  targeted tests for the touched files + typecheck/lint; browser re-check if UI
55
61
  changed) and record a **`Re-verification:`** line in `polish-report.md`. A
56
62
  polish that changed code without a green re-verification isn't finished.
@@ -58,10 +64,8 @@ don't load both up front.
58
64
 
59
65
  ## Refinement modes
60
66
 
61
- When the user (or your own assessment) names a direction the UI should move,
62
- pass it through to Phase 4. Modes don't bypass normalize + quality-bar work:
63
- they shape the polish *after* the system is aligned. See `reference/ui.md` for
64
- the mode table.
67
+ Pass the requested UI direction to Phase 4. Modes do not bypass normalization or the
68
+ quality bar; they apply after the system is aligned. See `reference/ui.md`.
65
69
 
66
70
  > **Mid-flight discipline.** When tempted to polish UI without normalize, cite
67
71
  > clean lint as proof of quality, skip Phase 2 on a backend diff, or delete a
@@ -6,10 +6,10 @@ disable-model-invocation: true
6
6
  argument-hint: "[the question the prototype is answering]"
7
7
  ---
8
8
 
9
- # /rite-prototype: throwaway code that answers ONE question
9
+ # /rite-prototype: answer one question with throwaway code
10
10
 
11
- A prototype is **throwaway code that answers exactly one question**. The question
12
- chooses the shape: get the shape wrong and the whole prototype wastes the user's time.
11
+ A prototype is throwaway code for exactly one question. Choose its shape from that
12
+ question.
13
13
 
14
14
  ## 0. Read core rules
15
15
 
@@ -25,11 +25,12 @@ down. Examples that count as "the question":
25
25
  - "Which of these three settings layouts feels right?"
26
26
  - "Will the proposed state machine deadlock when X overlaps Y?"
27
27
 
28
- A vague question ("explore this feature") is not enough: push back once to sharpen it.
28
+ A vague request such as "explore this feature" is not enough. Ask once for a specific
29
+ question.
29
30
 
30
31
  ## 2. Pick the branch
31
32
 
32
- Read the user's prompt + the surrounding code. Two branches:
33
+ Read the user's prompt and surrounding code, then choose one branch:
33
34
 
34
35
  | Question shape | Branch | Artifact |
35
36
  |---|---|---|
@@ -39,50 +40,48 @@ Read the user's prompt + the surrounding code. Two branches:
39
40
  If genuinely ambiguous and the user is AFK: pick by the surrounding code (backend module
40
41
  → Logic; page / component → UI) and state the assumption in a comment at the top.
41
42
 
42
- **Variations must differ in shape.** UI prototypes where the variations are just colour
43
- or padding tweaks teach nothing: push each variation to a different *information
44
- architecture* / *interaction model* so the user can pick a direction, not a polish.
43
+ **Variations must differ in structure.** Colour or padding changes alone do not answer
44
+ a design question. Give each variation a different information architecture or
45
+ interaction model.
45
46
 
46
47
  ## 3. Rules that apply to both branches
47
48
 
48
- 1. **Throwaway from day one, and visibly so.** Place the prototype next to where it
49
- will eventually be used (so context is obvious) but name it so a casual reader sees
50
- it's a prototype: `prototype/`, `__prototype__`, `.scratch/`, etc. Obey the project's
49
+ 1. **Mark it as throwaway.** Place the prototype near its eventual use, but use a name
50
+ that clearly identifies it: `prototype/`, `__prototype__`, `.scratch/`, etc. Obey the project's
51
51
  existing routing / module convention; don't invent a new top-level structure.
52
- 2. **One command to run.** Use whatever task runner the project already has: `pnpm
53
- <name>`, `python <path>`, `bun <path>`. The user must start it without thinking.
52
+ 2. **Provide one run command.** Use the project's existing task runner: `pnpm
53
+ <name>`, `python <path>`, or `bun <path>`.
54
54
  3. **No persistence by default.** State lives in memory. Persistence is usually the
55
55
  thing the prototype is *checking*, not a dependency. If the question explicitly
56
56
  involves a DB, hit a scratch DB or a local file with a name like
57
57
  `PROTOTYPE — wipe me`.
58
- 4. **Skip the polish.** No tests. No error handling beyond what makes it run. No
59
- abstractions. The point is learn fast, delete fast.
58
+ 4. **Skip polish.** Add no tests, abstractions, or error handling beyond what is needed
59
+ to run and answer the question.
60
60
  5. **Surface state.** After every action (Logic) or on every variant switch (UI), print
61
61
  or render the full relevant state so the user can see what changed.
62
- 6. **Delete or absorb when done.** When the question has an answer, either delete the
63
- prototype or fold the validated decision into the real code: don't leave it
64
- rotting in the repo.
62
+ 6. **Delete or absorb when done.** After answering the question, delete the prototype
63
+ or fold the validated decision into production code.
65
64
 
66
65
  ## 4. Capture the answer
67
66
 
68
- The *answer* is the only durable output. Before declaring the prototype done, write
67
+ The answer is the only durable output. Before declaring the prototype done, write
69
68
  one of:
70
69
 
71
70
  - An entry in the active feature's `decisions.md` (`.devrites/work/<slug>/decisions.md`)
72
71
  with the question and the answer.
73
72
  - A `NOTES.md` next to the prototype if no active feature exists.
74
73
 
75
- If the user is around, this is a quick conversation. If they're AFK, the prototype is
76
- complete only once the verdict is filled in: a blank `VERDICT: ___` is not an
77
- answer. Leave it marked **not yet complete** and queue the open question so a later pass
78
- fills the verdict before the prototype is deleted.
74
+ If the user is present, ask for the verdict directly. In AFK, the prototype remains
75
+ incomplete until the verdict is filled in. A blank `VERDICT: ___` is not an answer.
76
+ Mark it **not yet complete**. Queue the question and do not delete the prototype until
77
+ a later pass records the verdict.
79
78
 
80
79
  ## Where this slots in
81
80
 
82
- `/rite-prototype` is a **scoped detour**, not a phase of its own. Typical placements:
81
+ `/rite-prototype` is a scoped detour, not a separate phase. Typical uses:
83
82
 
84
- - **Between `/rite-spec` and `/rite-define`:** a design question is undecidable on
85
- paper; prototype it, capture the answer, return to `/rite-define`.
83
+ - **During `/rite-clarify` (between spec and define):** a product/constraint question is
84
+ undecidable on paper; prototype it, capture the answer, return to `/rite-clarify`.
86
85
  - **Mid-build:** `/rite-build` hit a state-model ambiguity that the spec doesn't
87
86
  resolve. Drop into a Logic prototype, capture the answer, return.
88
87
 
@@ -7,11 +7,11 @@ user-invocable: true
7
7
 
8
8
  # /rite-prove: prove the completed feature
9
9
 
10
- Turn "I think it works" into recorded evidence for the **whole feature**. Read the active
11
- workspace first; if none, run `/rite-spec <feature>`.
10
+ Record evidence for the **whole feature**. Read the active workspace first; if none,
11
+ run `/rite-spec <feature>`.
12
12
 
13
- > **Differs from built-in `/verify` and `/run`:** those prove a single change /
14
- > launch the app. `/rite-prove` is feature-scoped. It walks `spec.md` acceptance
13
+ > **Scope:** built-in `/verify` proves one change and `/run` launches the app.
14
+ > `/rite-prove` covers a feature. It walks `spec.md` acceptance
15
15
  > criteria one-by-one, runs the full relevant test suite + build/typecheck/lint,
16
16
  > ascends the browser-proof ladder (step 4),
17
17
  > and writes `evidence.md` + `browser-evidence.md` keyed to the active
@@ -21,12 +21,13 @@ workspace first; if none, run `/rite-spec <feature>`.
21
21
  Read `tasks.md` + `state.md`. **If ANY slice is still pending/unbuilt, STOP** and tell the
22
22
  user to finish it with `/rite-build`: `/rite-prove` runs once, when the full task is
23
23
  complete, not after each slice. (Each slice already got its own targeted tests during
24
- `/rite-build`; this phase is the comprehensive proof of the assembled feature.)
24
+ `/rite-build`; this phase proves the assembled feature as a whole.)
25
25
 
26
- **Never report a pass you didn't observe.** If a command couldn't run, say so and give exact manual steps.
26
+ **Never report an unobserved pass.** If a command could not run, report that and give
27
+ exact manual steps.
27
28
 
28
- **Re-runnable, scoped.** `/rite-prove` runs once when the full feature is assembled, but
29
- it can be **re-run scoped** afterwards: when `/rite-polish` or `/rite-review` edit code,
29
+ **Scoped reruns are allowed.** `/rite-prove` runs once when the full feature is assembled.
30
+ After `/rite-polish` or `/rite-review` edits code,
30
31
  the existing `evidence.md` no longer post-dates the change, so re-run `/rite-prove` over
31
32
  the affected criteria/routes to refresh proof before `/rite-seal`.
32
33
 
@@ -42,7 +43,7 @@ Pull these via `Read` when relevant:
42
43
  user flow): telemetry must be present **and observed to emit**, not assumed.
43
44
  - `developer-experience.md`: when the change ships a developer-facing surface (API / CLI / SDK /
44
45
  webhook / config / error messages / getting-started): **measure** the DX scorecard (run the flow,
45
- time time-to-hello-world, capture the verbatim error text), don't assert it.
46
+ measure time-to-hello-world, and capture verbatim error text), rather than asserting it.
46
47
  - `definition-of-done.md`: standing Done bar: acceptance mapped, fresh proof, no open hard gates, scoped edits, rollback/docs where needed.
47
48
 
48
49
 
@@ -51,6 +52,10 @@ Pull these via `Read` when relevant:
51
52
  blocker; don't refactor unrelated code.
52
53
  - Spec Drift Guard applies: if tests/evidence reveal the spec is wrong, stop and handle
53
54
  drift (`rite-build/reference/spec-drift-guard.md`).
55
+ - **Runner observes; root records; wright fixes.** Use the file-backed fresh-context
56
+ contract in [`agents.md`](../devrites-lib/reference/standards/agents.md). The root owns
57
+ the evidence verdict and canonical writes. Every accepted source/test correction is one
58
+ bounded `devrites-slice-wright` packet, never an inline edit.
54
59
 
55
60
  ## Workflow
56
61
  0. Read `.claude/skills/devrites-lib/reference/standards/core.md` first (the always-on operating rules); pull the
@@ -63,23 +68,28 @@ Pull these via `Read` when relevant:
63
68
  [test-command-discovery](reference/test-command-discovery.md): README, package
64
69
  scripts, Makefile, CI configs, Gemfile/Rakefile, pyproject, go.mod, Cargo.toml.
65
70
  **Completion:** exact runnable test/build/typecheck/lint commands are recorded or explicitly unavailable.
66
- 3. **Run the full relevant test suite** for the feature (not a single slice), then the
67
- relevant **build / typecheck / lint**.
68
- 4. **UI feature?** Read `design-brief.md` + `references.md`, then run the browser proof ladder over the feature's routes:
71
+ 3. **Run proof in fresh context.** Freeze the candidate and dispatch
72
+ `devrites-proof-runner` with the exact commands, cwd, prerequisites, acceptance map,
73
+ and scratch boundary. Await and validate its observed full relevant test suite plus
74
+ **build / typecheck / lint** report. The runner writes no canonical evidence.
75
+ 4. **UI feature?** Include `design-brief.md`, `references.md`, routes, browser harness, and
76
+ allowed scratch path in the proof packet, then have the runner apply the browser proof ladder:
69
77
  [proof-ladder](reference/proof-ladder.md) + [browser-proof](reference/browser-proof.md)
70
78
  (`devrites-browser-proof`): routes, viewports, screenshots (opened + described),
71
79
  console, network, interaction paths, and the brief's proof targets. Compare screenshots
72
- with target references, record deltas, fix/re-render, and do not pass with an unresolved
73
- material mismatch.
80
+ with target references and record deltas. An unresolved material mismatch is a failed
81
+ result; the root handles any accepted correction at step 6 before re-rendering.
74
82
  5. **Map proof completely.** Follow
75
83
  [`reference/acceptance-proof.md`](reference/acceptance-proof.md) for acceptance/scenario
76
84
  coverage and the conditional critical-path, observability, developer-surface, and wiring
77
85
  branches. Completion: every criterion, planned interaction, and declared key link has a
78
86
  proof class plus passing evidence, or is recorded as a blocker.
79
87
  6. **On failure** → [failure-triage](reference/failure-triage.md) +
80
- `devrites-debug-recovery`. Reproduce isolate fix within scope → re-run; if a fix
81
- would exceed scope, record a blocker.
82
- 7. Update `evidence.md`, `browser-evidence.md` (if UI), `traceability.md`, and
88
+ `devrites-debug-recovery`. The root reconciles the reproduction. Send an accepted,
89
+ in-scope correction to the sole writer, `devrites-slice-wright`; then freeze the new
90
+ candidate and dispatch a fresh proof runner for affected checks. If a fix would exceed
91
+ scope, record a blocker.
92
+ 7. The root updates `evidence.md`, `browser-evidence.md` (if UI), `traceability.md`, and
83
93
  `state.md`. New proof goes to `evidence.md` (`proof.md` is a read-only alias:
84
94
  see `devrites-lib/reference/workspace-artifact-schema.md`).
85
95
 
@@ -8,16 +8,16 @@ disable-model-invocation: true
8
8
 
9
9
  # /rite-resolve: answer the human gate
10
10
 
11
- `/rite-resolve` is the canonical resume verb for **async** human gates: a checkpoint that
12
- already paused and **stopped the session** (an AFK blocking/escalating/irreversible queue, or a
13
- HITL pause the human walked away from), plus `--batch`. When `/rite-build` asks a gap **inline**
11
+ `/rite-resolve` resumes an **async** human gate: a checkpoint that already paused and
12
+ **stopped the session** (an AFK blocking/escalating/irreversible queue, or a HITL pause
13
+ left unanswered), plus `--batch`. When `/rite-build` asks a question **inline**
14
14
  via `AskUserQuestion` and the human is present, that pick resolves the gate **in place** through
15
15
  the same `devrites-engine resolve` writer. You don't type `/rite-resolve` for it. For the async case this
16
16
  skill takes the human's answer (or `--drop` / `--batch`), writes it to `questions.md`, updates
17
17
  `state.md` (clears `Awaiting human`, sets `Status: running`), and recommends the next command.
18
18
 
19
- It is **deliberately small**: one verb, one source of truth (`questions.md`), one cursor
20
- (`state.md`). The full AFK / HITL contract lives in
19
+ It has one verb, one source of truth (`questions.md`), and one cursor (`state.md`). The
20
+ full AFK / HITL contract lives in
21
21
  [`afk-hitl.md`](../devrites-lib/reference/standards/afk-hitl.md).
22
22
 
23
23
  ## Rules consulted (read on demand from `.claude/skills/devrites-lib/reference/standards/`)
@@ -45,9 +45,9 @@ Pull these via `Read` when shaping the resolve:
45
45
  unblocked slice's `Slice mode` (step 4, the named exception); everything else goes through
46
46
  the script, never by hand.
47
47
  - **Human gates are for human-only decisions, not the agent's work.** A `questions.md` entry the
48
- human must answer is a genuine *decision* (a scope / design / risk call only the human can make).
49
- Not a task the agent can do itself. If a question is really agent-doable ("should I write the
50
- test?", "go implement X"), don't record a human answer that punts the agent's own job back to it:
48
+ human must answer is a genuine decision (a scope / design / risk call only the human can make),
49
+ not a task the agent can do. If a question is really agent-doable ("should I write the
50
+ test?", "go implement X"), do not record a human answer that returns the agent's work to it:
51
51
  flag the mis-tag and route it to the right skill (`/rite-build`, `/rite-plan unblock`,
52
52
  `devrites-debug-recovery`). The human resolves decisions; the agent does the work.
53
53
 
@@ -67,9 +67,10 @@ Pull these via `Read` when shaping the resolve:
67
67
  `tasks.md`. Confirm the qid is `status: open`. If `state.md` `Status` is not
68
68
  `awaiting_human` and the question's `gate` is `blocking`, surface the inconsistency
69
69
  before proceeding (don't auto-repair: flag it).
70
- 3. **Render preview.** Echo the qid, the question, the proposed answer (if any), the
71
- user's answer, and which slice unblocks. Stop here and ask `confirm? (y/N)` **unless**
72
- the answer was provided non-interactively via `--batch`.
70
+ 3. **Apply explicit consent.** Supplying `<qid> "<answer>"`, `--drop`, or `--batch` is the
71
+ user's explicit consent for this local workspace mutation. Echo the qid, answer/drop,
72
+ and slice being unblocked, then continue immediately; do not ask the user to confirm the
73
+ command they just typed.
73
74
  4. **Mutate.** Run `devrites-engine resolve` with the same
74
75
  arguments. The script:
75
76
  - flips the qid's `status` to `answered` / `dropped` and stamps `answered_at` + `answer`;
@@ -6,6 +6,9 @@ shapes, the batch file format, and the rules the underlying `devrites-engine res
6
6
 
7
7
  ## Three input shapes
8
8
 
9
+ Each form is an explicit local mutation command. Supplying it is the confirmation; the
10
+ skill applies it once after validation and reports the result instead of asking for `y` again.
11
+
9
12
  ### 1. Single answer
10
13
 
11
14
  ```