devrites 3.0.6 → 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 +18 -0
  2. package/README.md +67 -45
  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 +575 -58
  54. package/engine/internal/install/install_test.go +490 -9
  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
@@ -19,9 +19,12 @@ Load that schema before creating or updating workspace artifacts.
19
19
  decisions.md
20
20
  assumptions.md
21
21
  questions.md
22
+ decision-coverage.md # from $rite-clarify
22
23
  plan.md # from $rite-define
23
24
  tasks.md # from $rite-define
24
25
  traceability.md # from $rite-define
26
+ eng-review.md # from $rite-vet
27
+ test-plan.md # from $rite-vet
25
28
  state.md
26
29
  evidence.md # from $rite-build or $rite-prove (proof.md alias supported)
27
30
  browser-evidence.md # UI only
@@ -46,8 +49,10 @@ canonical files and preserves aliases rather than deleting old ones.
46
49
  - `$rite-spec` creates the workspace map, `brief.md`, `spec.md`, `decisions.md`,
47
50
  `assumptions.md`, `questions.md`, `state.md`, optional `references.md` /
48
51
  `references/`, and optional `design-brief.md` for UI.
52
+ - `$rite-clarify` adds `decision-coverage.md`.
49
53
  - `$rite-define` adds `architecture.md`, `plan.md`, `tasks.md`, and
50
54
  `traceability.md`.
55
+ - `$rite-vet` adds `eng-review.md` and `test-plan.md`.
51
56
  - Later phases add only the artifact they own. Do not create optional files as
52
57
  empty placeholders; absence means the phase has not produced that artifact.
53
58
  - Each artifact starts with a summary and links to deeper source files instead of
@@ -61,7 +66,7 @@ canonical files and preserves aliases rather than deleting old ones.
61
66
  # <Feature> Workspace
62
67
  phase: spec
63
68
  status: running
64
- next_action: $rite-define after spec readiness passes
69
+ next_action: $rite-clarify after spec readiness passes
65
70
  last_updated: <date>
66
71
 
67
72
  ## Artifact map
@@ -69,6 +74,7 @@ last_updated: <date>
69
74
  | --- | --- |
70
75
  | brief.md | Objective and bounds |
71
76
  | spec.md | Product contract |
77
+ | decision-coverage.md | Clarification verdict; absent until $rite-clarify |
72
78
  | architecture.md | Technical map; absent until $rite-define |
73
79
  | plan.md | Technical approach; absent until $rite-define |
74
80
  | tasks.md | Vertical slices; absent until $rite-define |
@@ -79,7 +85,8 @@ last_updated: <date>
79
85
  | Phase / role | Read |
80
86
  | --- | --- |
81
87
  | Spec | brief.md, spec.md, questions.md |
82
- | Build | state.md, tasks.md, plan.md |
88
+ | Clarify | spec.md, decisions.md, assumptions.md, questions.md |
89
+ | Build | state.md, decision-coverage.md, eng-review.md, test-plan.md, tasks.md, plan.md |
83
90
  | Review | traceability.md, evidence.md, decisions.md |
84
91
 
85
92
  ## Blocking gates
@@ -100,6 +107,8 @@ None.
100
107
  | slice_mode | none |
101
108
  | risk | none |
102
109
  | next_action | <single command + reason> |
110
+ | return_phase | <later phase; retrofit clarification only> |
111
+ | return_next_action | <saved command; retrofit clarification only> |
103
112
 
104
113
  ## Awaiting human
105
114
  Only present when status is awaiting_human.
@@ -112,7 +121,8 @@ Only present when status is awaiting_human.
112
121
 
113
122
  `state.md` is a compact cursor, not a history file. Put proof in `evidence.md`,
114
123
  decisions in `decisions.md`, assumptions in `assumptions.md`, and drift in
115
- `drift.md`.
124
+ `drift.md`. Omit both `return_*` rows outside a later-phase `$rite-clarify`
125
+ retrofit; `devrites-engine clarify-return` owns their atomic lifecycle.
116
126
 
117
127
  ## questions.md entry format
118
128
 
@@ -12,9 +12,13 @@ This is the Codex mirror of a DevRites skill. In Codex:
12
12
 
13
13
  - Load DevRites engineering standards from `.agents/skills/devrites-lib/reference/standards/`. Read `.agents/skills/devrites-lib/reference/standards/core.md` before workflow work, then load the other `.agents/skills/devrites-lib/reference/standards/*.md` files exactly when this skill asks for them.
14
14
  - Use the installed `devrites-engine` binary as the canonical runtime helper surface for orientation, gates, and state mutation.
15
- - When this skill asks for a DevRites specialist or writer agent, **explicitly** spawn the matching Codex custom agent from `.codex/agents/devrites-*.toml` through Codex subagents (`spawn_agent`), then wait for its result and reconcile it as the skill instructs. Do not do the review inline just because the instruction to spawn is embedded here: Codex under-fires embedded spawn/skill instructions (openai/codex #23496), so treat the spawn as required, not optional.
16
- - The independence of a fresh-context subagent is the point. If Codex genuinely cannot spawn subagents in the current surface, run the documented inline fallback and **label the result an inline fallback, not an independent review**: an inline pass shares the calling context and is weaker evidence.
17
- - Codex project hooks are installed in `.codex/hooks.json`. Review and trust them with `/hooks` before relying on hook enforcement.
15
+ - **Invocation and dispatch are different:** invoke means run a skill in this context; dispatch means start a fresh agent with `spawn_agent`, await it, and reconcile its result. Never describe inline skill work as a dispatch.
16
+ - For every DevRites specialist or writer dispatch, first call `spawn_agent` with the named `devrites-<role>` custom role. The matching project contract is `.codex/agents/devrites-<role>.toml`.
17
+ - If `spawn_agent` is callable but a named read-only role is unavailable, use generic `explorer` only when the host proves that run has a runtime-enforced read-only sandbox. Tell it to read `.codex/agents/devrites-<role>.toml`, follow its `developer_instructions`, and execute the unchanged packet. A missing read-only custom role is not evidence that spawning is unavailable.
18
+ - Never dispatch generic `worker` for `devrites-slice-wright` unless the host proves that worker run carries exact DevRites identity and the same `.wright-allowlist` enforcement as the named role. Codex reports a generic run as `agent_type=worker`, so the generated global hooks cannot prove that binding. Reject that unsafe rung and use the documented labelled inline wright path with `.reconcile-inline` plus the full reconcile gate.
19
+ - If the host cannot prove the generic explorer is runtime read-only, reject that rung too. Only when no spawn primitive exists or a higher-priority policy rejects a safe spawn may the root run the documented discipline inline. Label it `independence: fallback`, never call it independent, and apply every fallback risk gate. An unbound generic wright or unconfined generic explorer is such a safety rejection, not evidence that no agents exist.
20
+ - Wait for every required fresh-context dispatch before reconciling or advancing. A backgrounded or lost result is incomplete.
21
+ - Codex project hooks are installed in `.codex/hooks.json`; declared-leaf hooks are scoped inside `.codex/agents/devrites-*.toml`. Review and trust them with `/hooks` before relying on hook enforcement.
18
22
  - When this skill asks a HITL question via `AskUserQuestion`: Codex's equivalent (`request_user_input`) exists only in Plan mode. Outside Plan mode, render the option set as a plain numbered list in chat and **end the turn** so the human answers: NEVER silently pick an option yourself; auto-picking is AFK's contract, gated by the `.devrites/AFK` sentinel.
19
23
 
20
24
 
@@ -11,21 +11,23 @@ This is the Codex mirror of a DevRites skill. In Codex:
11
11
 
12
12
  - Load DevRites engineering standards from `.agents/skills/devrites-lib/reference/standards/`. Read `.agents/skills/devrites-lib/reference/standards/core.md` before workflow work, then load the other `.agents/skills/devrites-lib/reference/standards/*.md` files exactly when this skill asks for them.
13
13
  - Use the installed `devrites-engine` binary as the canonical runtime helper surface for orientation, gates, and state mutation.
14
- - When this skill asks for a DevRites specialist or writer agent, **explicitly** spawn the matching Codex custom agent from `.codex/agents/devrites-*.toml` through Codex subagents (`spawn_agent`), then wait for its result and reconcile it as the skill instructs. Do not do the review inline just because the instruction to spawn is embedded here: Codex under-fires embedded spawn/skill instructions (openai/codex #23496), so treat the spawn as required, not optional.
15
- - The independence of a fresh-context subagent is the point. If Codex genuinely cannot spawn subagents in the current surface, run the documented inline fallback and **label the result an inline fallback, not an independent review**: an inline pass shares the calling context and is weaker evidence.
16
- - Codex project hooks are installed in `.codex/hooks.json`. Review and trust them with `/hooks` before relying on hook enforcement.
14
+ - **Invocation and dispatch are different:** invoke means run a skill in this context; dispatch means start a fresh agent with `spawn_agent`, await it, and reconcile its result. Never describe inline skill work as a dispatch.
15
+ - For every DevRites specialist or writer dispatch, first call `spawn_agent` with the named `devrites-<role>` custom role. The matching project contract is `.codex/agents/devrites-<role>.toml`.
16
+ - If `spawn_agent` is callable but a named read-only role is unavailable, use generic `explorer` only when the host proves that run has a runtime-enforced read-only sandbox. Tell it to read `.codex/agents/devrites-<role>.toml`, follow its `developer_instructions`, and execute the unchanged packet. A missing read-only custom role is not evidence that spawning is unavailable.
17
+ - Never dispatch generic `worker` for `devrites-slice-wright` unless the host proves that worker run carries exact DevRites identity and the same `.wright-allowlist` enforcement as the named role. Codex reports a generic run as `agent_type=worker`, so the generated global hooks cannot prove that binding. Reject that unsafe rung and use the documented labelled inline wright path with `.reconcile-inline` plus the full reconcile gate.
18
+ - If the host cannot prove the generic explorer is runtime read-only, reject that rung too. Only when no spawn primitive exists or a higher-priority policy rejects a safe spawn may the root run the documented discipline inline. Label it `independence: fallback`, never call it independent, and apply every fallback risk gate. An unbound generic wright or unconfined generic explorer is such a safety rejection, not evidence that no agents exist.
19
+ - Wait for every required fresh-context dispatch before reconciling or advancing. A backgrounded or lost result is incomplete.
20
+ - Codex project hooks are installed in `.codex/hooks.json`; declared-leaf hooks are scoped inside `.codex/agents/devrites-*.toml`. Review and trust them with `/hooks` before relying on hook enforcement.
17
21
  - When this skill asks a HITL question via `AskUserQuestion`: Codex's equivalent (`request_user_input`) exists only in Plan mode. Outside Plan mode, render the option set as a plain numbered list in chat and **end the turn** so the human answers: NEVER silently pick an option yourself; auto-picking is AFK's contract, gated by the `.devrites/AFK` sentinel.
18
22
 
19
23
 
20
- # $rite-temper: temper the spec before you plan
24
+ # $rite-temper: review scope and risk before planning
21
25
 
22
- Take a readied spec and **temper** it: heat it (raise ambition on the *outcome*), then
23
- quench it (pre-mortem + prune the *solution surface*): stronger and less brittle. The one
24
- DevRites step that decides scope/ambition on a written spec and folds the result into the
25
- canonical contract, so `$rite-define` plans the **hardened** spec. Optional for small work
26
- (significance-gated: auto-skips low-stakes specs), but always invoked inside
27
- `$rite-autocomplete`. **Read the active workspace first**; if there's no readied
28
- `spec.md`, tell the user to run `$rite-spec`.
26
+ Review a readied spec for outcome ambition, scope, pre-mortem risks, and unnecessary
27
+ solution surface. Fold accepted decisions into the canonical contract before
28
+ `$rite-define`. This step is optional for small work and skips low-stakes specs, but
29
+ `$rite-autocomplete` always invokes it. **Read the active workspace first**; if there
30
+ is no readied `spec.md`, tell the user to run `$rite-spec`.
29
31
 
30
32
  ## Rules consulted (read on demand from `.agents/skills/devrites-lib/reference/standards/`)
31
33
  Pull on demand: `patterns.md` +
@@ -35,65 +37,70 @@ invent one), `documentation.md` (ADR-style `decisions.md` entries), `afk-hitl.md
35
37
  that needs more than the default pre-mortem) selected by the section's risk).
36
38
 
37
39
  ## Operating rules
38
- - **Ambition on outcomes, minimalism on the surface.** Raise the success bar and solve the
39
- *real* problem; never add speculative capability/abstraction. The reconciliation hinge:
40
- bigger ambition, smaller surface.
41
- - **Every scope change routes through the Spec Drift Guard:** it only becomes real by being
42
- written into `spec.md` as a recorded, confirmable decision. Expansion is **opt-in** (HITL
40
+ - **Raise outcome ambition without expanding the solution unnecessarily.** Solve the
41
+ underlying problem without adding speculative capability or abstraction.
42
+ - **Route every scope change through the Spec Drift Guard.** A scope change takes effect
43
+ only when `spec.md` records the confirmed decision. Expansion is **opt-in** (HITL
43
44
  confirm; AFK pauses: see autocomplete policy). Nothing auto-grows into the build.
44
- - **Bound ambition by reversibility.** Auth / migration / public-API / data-model touches get
45
- the *opposite* of ambition: maximum conservatism; they always pause (irreversible-risk list).
45
+ - **Apply maximum caution to hard-to-reverse changes.** Auth, migration, public API, and
46
+ data-model changes always pause under the irreversible-risk list.
46
47
  - **Honest verdict.** Never round "needs work" up to "ready"; record every scope call's *why*.
48
+ - **Search before asking.** Apply `afk-hitl.md` decision ownership; only human-owned calls
49
+ enter the interactive walk.
47
50
  - **You write; the reviewer judges.** You are the single canonical writer (`strategy.md` +
48
51
  the spec edits); the reviewer agent is read-only.
49
- - **Demand the spec-quality checklists for big features.** `$rite-temper` only fires on
50
- significant specs: exactly where vague requirement prose is most expensive. Before hardening,
52
+ - **Require spec-quality checklists for significant features.** Before hardening,
51
53
  confirm `checklists/<domain>.md` exist and pass (`rite-spec/reference/spec-checklists.md`); a
52
54
  scope expansion you fold in **adds its own** rows (new Success/Acceptance criteria get
53
- "unit-tested for English" too). A folded expansion with an unquantified criterion is a CRITICAL
54
- fail that re-opens the readiness gate.
55
+ checklist rows too). A folded expansion with an unquantified criterion is a CRITICAL
56
+ failure that reopens the readiness gate.
55
57
 
56
58
  ## Workflow
57
59
  0. **Read `.agents/skills/devrites-lib/reference/standards/core.md`**, then run
58
60
  `devrites-engine preamble` for deterministic workspace orientation.
59
- Then read the workspace: `spec.md` (+ `decisions.md`,
61
+ Then read the workspace: `spec.md`, `decision-coverage.md` (+ `decisions.md`,
60
62
  `assumptions.md`, `design-brief.md` if UI), `state.md`. Require `Spec gate: passed`: else
61
- STOP → `$rite-spec`. If a plan already exists, scope changes route through `$rite-plan
63
+ STOP → `$rite-spec`. Require `Decision coverage: CLEAR`: else STOP
64
+ `$rite-clarify`. If a plan already exists, scope changes route through `$rite-plan
62
65
  repair` (record in `drift.md`), not a blind spec edit.
63
66
  1. **Significance test:** [`reference/significance.md`](reference/significance.md). Low-stakes
64
- / shape-not-meaning work → write the one-line `skipped — low stakes (<trigger>)` verdict to `strategy.md`,
67
+ / shape-not-meaning work → write the exact one-line `skipped — low stakes (<trigger>)` verdict to `strategy.md`,
65
68
  set `state.md` `Next step: $rite-define`, and recommend it. Otherwise fire the full pass below.
66
69
  2. **FORWARD pass + mode selection:** [`reference/scope-modes.md`](reference/scope-modes.md).
67
70
  First, the **one-sentence-intent test**: state the whole change's intent in a single sentence.
68
71
  If you can't without an "and" that joins two unrelated outcomes, it is **two features**: the
69
- sharpest scope-creep signal there is; recommend splitting the spec (or narrowing this one) before
70
- tempering further. Then diverge on the *outcome* (the 10-star version of the real problem), and
71
- commit **exactly one** scope mode (`expand` opt-in · `selective` · `hold-rigor` · `reduce-to-MVP`)
72
- with its rationale and the **hinge** (what would change the call). `$ARGUMENTS` `--mode` is a
72
+ scope-creep signal; recommend splitting or narrowing the spec before continuing.
73
+ Then consider the 10-star outcome for the underlying problem and choose **exactly one**
74
+ scope mode (`expand` opt-in · `selective` · `hold-rigor` · `reduce-to-MVP`) with its
75
+ rationale and the condition that would change the choice. `$ARGUMENTS` `--mode` is a
73
76
  hint, not a command.
74
77
  3. **INVERSION pass:** pre-mortem in past tense ("it shipped and failed: what went wrong"),
75
78
  each top risk carrying likelihood + mitigation + the slice it will bind to; then the **YAGNI
76
79
  ledger** (each candidate scope item gets the "imagine the later refactor" test; defer unless
77
80
  now-cost is trivial AND deferred-cost is large).
78
- - **Deepen on demand.** When a specific scope call, requirement, or risk needs sharper thinking
79
- than the default pre-mortem gives, pull the 3-5 techniques from
81
+ **Interruption pre-mortem:** audit the spec forecast and assumptions for unresolved behavior,
82
+ proof prerequisites, approvals, access, and irreversible gates. Resolve facts and reversible
83
+ details now; retain only unavailable-pre-code or mandatory action-time checkpoints.
84
+ - **Deepen on demand.** When a scope decision, requirement, or risk needs more analysis
85
+ than the default pre-mortem provides, choose 3-5 techniques from
80
86
  [`elicitation.md`](../devrites-lib/reference/standards/elicitation.md) whose *when-to-reach-for-it* matches that
81
87
  section's risk (irreversible decision → Red-Team/Blue-Team + Assumption Audit; sizing → Delphi;
82
- vague requirement → Steelman-then-Attack), offer them, and run the chosen one **on that one
83
- section**. Record what it changed, not that you ran it. Optional: the default passes stand on
84
- their own.
88
+ vague requirement → Steelman-then-Attack), offer them, and run the chosen one **on that
89
+ section**. Record what changed, not the technique name. The default passes remain
90
+ sufficient when no deeper analysis is needed.
85
91
  4. **Score the 9 dimensions:** [`reference/review-dimensions.md`](reference/review-dimensions.md).
86
92
  Cite evidence *before* the band; **gate on the floor** (the weakest dimension, not an average).
87
93
  **Completion:** all nine dimensions have cited evidence, a band, and one explicit floor verdict.
88
- 5. **Walk the findings WITH the human: do not batch-dump.** The artifact is the *output* of an
89
- interactive review, not a substitute for it: surface each material scope call / finding via
94
+ 5. **Review human-owned findings with the human; do not batch them.** `strategy.md`
95
+ records the interactive review but does not replace it. Present each material scope decision through
90
96
  `AskUserQuestion`, one at a time, best-guess + **why**. Each material scope call ends as a
91
97
  **recorded decision**: a resolved `questions.md` qid (HITL) or a `decisions.md` ADR (AFK):
92
- so the walk leaves an auditable trail, not just chat. (AFK gate policy is single-sourced in
98
+ so the review leaves an auditable record outside chat. (AFK gate policy is single-sourced in
93
99
  [`reference/significance.md`](reference/significance.md): `hold-rigor` + `reduce-to-MVP`
94
100
  auto-apply, **any `expand` is a blocking pause**, irreversible-risk always pauses.)
101
+ Apply objective clarity, mitigation, and assumption fixes directly.
95
102
  6. **Write `strategy.md` + fold back:** [`reference/strategy-template.md`](reference/strategy-template.md).
96
- **One drift rule (decide by whether a plan exists):** *no `plan.md` yet* (the normal pre-define
103
+ **Choose the drift path based on whether a plan exists:** *no `plan.md` yet* (the normal pre-define
97
104
  case) → update `spec.md` **through the Spec Drift Guard**. *Success criteria* **and**
98
105
  *Acceptance criteria* for each opt-in expansion / cut, **Non-goals** for every deferred item,
99
106
  *Constraints* **and** *Risks* the pre-mortem demands, and the gaps/decisions table; *`plan.md`
@@ -102,22 +109,33 @@ that needs more than the default pre-mortem) selected by the section's risk).
102
109
  decision · why-not · what-would-change-it) and `assumptions.md` (every "we'll probably need X" →
103
110
  assumption-to-verify). **Every scope delta must carry a recorded human decision**: a resolved
104
111
  `questions.md` qid (HITL) or a `decisions.md` ADR (AFK within the ceiling); a folded change with
105
- no recorded decision is the batch-dump failure. **Re-check the spec Readiness gate** (it fails if
106
- any folded scope delta lacks its decision). Update `state.md`: `Phase: temper`,
112
+ no recorded decision is invalid. **Re-check the spec Readiness gate** (it fails if
113
+ any folded scope delta lacks its decision or leaves a foreseeable human build choice).
114
+ After any edit to `brief.md`, `spec.md`, `decisions.md`, `assumptions.md`, or
115
+ `questions.md`, re-scan the affected coverage rows, assumption audit, residual uncertainty,
116
+ and closed gates. Partial/Missing, an unowned material assumption, or an open
117
+ blocking/escalating question routes `$rite-clarify`/HITL; never refresh past it. Only after the
118
+ matrix is re-closed, run `devrites-engine readiness-digest coverage <slug>` and replace the
119
+ complete `Coverage inputs SHA-256` line in `decision-coverage.md`.
120
+ Update `state.md`: `Phase: temper`,
107
121
  `Next step: $rite-define`; on a blocking pause (expand / irreversible / a dimension still below
108
122
  bar) write the `Awaiting human` block + `Status: awaiting_human` before stopping.
109
123
  7. **Adversarial verification loop:** dispatch [`devrites-strategy-reviewer`](.codex/agents/devrites-strategy-reviewer.toml)
110
- (fresh context, **only** the hardened spec + the rubric: no authoring reasoning). Resolve
124
+ through the file-backed fresh-context contract in
125
+ [`agents.md`](../devrites-lib/reference/standards/agents.md), with **only** the hardened
126
+ spec + rubric: no authoring reasoning. Resolve
111
127
  actionable findings by editing `spec.md`/`strategy.md`, re-dispatch; **cap ≤3 iterations**. A
112
- dimension still below bar after 3 blocking question (HITL) or AFK gate-ceiling entry;
113
- irreversible-risk findings always pause. If sub-agents are unavailable, do the independent
114
- rubric pass yourself in a separate read, discarding the authoring reasoning (a flagged
115
- fallback, not an independent review).
128
+ dimension still below bar after 3 is classified by decision ownership: a product/scope/risk
129
+ choice becomes a blocking question; an objective spec defect stays blocked with the exact
130
+ required edit and routes to `$rite-spec`, not `$rite-resolve`. Irreversible-risk findings
131
+ always pause. Use the shared capability ladder; an inline final-rung pass is labeled
132
+ `independence: fallback`, never an independent review. After an accepted edit to a
133
+ coverage-bound input, repeat step 6's revalidation and digest refresh before handoff.
116
134
  8. **STOP.** Report the mode, the scope deltas, and the floor verdict; recommend `$rite-define`.
117
135
 
118
- > **Mid-flight discipline.** When tempted to dump findings into `strategy.md` and skip the
119
- > walk-through, expand the surface (not the outcome), grow scope without the Drift Guard, or
120
- > score before citing evidence: see [`reference/anti-patterns.md`](reference/anti-patterns.md).
136
+ > **Mid-flight discipline.** Do not replace the interactive review with `strategy.md`,
137
+ > expand implementation surface without need, grow scope outside the Drift Guard, or score
138
+ > before citing evidence. See [`reference/anti-patterns.md`](reference/anti-patterns.md).
121
139
 
122
140
  ## Output
123
141
 
@@ -127,12 +145,13 @@ Default success shape:
127
145
  ```
128
146
  Done: spec tempered for <slug>; mode <expand|selective|hold-rigor|reduce-to-MVP|skipped-low-stakes>.
129
147
  Changed: strategy.md, spec.md, decisions.md, assumptions.md
130
- Evidence: dimension floor <band>; reviewer loop <n>; spec readiness re-checked pass
148
+ Evidence: dimension floor <band>; reviewer loop <n>; spec readiness + decision coverage re-checked pass
131
149
  Open: <none | n deferred non-goals>
132
150
  Next: $rite-define
133
151
  Record: .devrites/work/<slug>/strategy.md
134
152
  ↻ Hygiene: /clear before $rite-define
135
153
  ```
136
154
  If readiness is blocked, use the shared `Stopped / blocked` form and route `Fix:`
137
- to `$rite-spec`; do not recommend `$rite-define`.
155
+ to `$rite-clarify` for an uncovered decision surface or `$rite-spec` for an objective
156
+ spec defect; do not recommend `$rite-define`.
138
157
  **DO NOT plan, slice, or write code here**. That's `$rite-define` and `$rite-build`.
@@ -1,23 +1,25 @@
1
- # Review dimensions + the floor-gate rubric
1
+ # Review dimensions and floor-gate rubric
2
2
 
3
- The spec is scored on nine dimensions. Each catches a *different* failure mode: strength in
4
- one never compensates for collapse in another, so the gate is the **floor**, not an average.
3
+ Score the spec on nine dimensions. A strong dimension cannot offset a failed one, so
4
+ the gate uses the **lowest band**, not an average.
5
5
 
6
6
  ## The nine dimensions
7
- 1. **Problem altitude & ambition:** is this solving the *right* problem at the right altitude,
8
- or timidly improving the obvious path / over-reaching past the real need? Here, *under-
9
- reaching* on the outcome is a failure, not just over-building.
10
- 2. **Scope honesty & boundary:** are Non-goals explicit? Is there a Minimum Usable Subset and a
11
- clear IN/OUT line? Flags grab-bags and a missing "Won't-have-this-time".
12
- 3. **Premise & alternatives:** are the load-bearing premises stated and challenged, and is at
7
+ 1. **Problem choice and ambition:** does the spec solve the underlying problem, or only
8
+ make a minor improvement to the obvious path? It may also reach beyond the actual need.
9
+ Both insufficient outcome ambition and over-building are failures.
10
+ 2. **Scope and boundary:** are non-goals explicit? Is there a Minimum Usable Subset and
11
+ a clear IN/OUT line? Flag unrelated bundles and a missing "Won't-have-this-time".
12
+ 3. **Premise and alternatives:** are the consequential premises stated and challenged, and is at
13
13
  least one genuinely different approach (different data model / flow / boundary) considered
14
14
  with its trade-off? ("Alternatives considered" is one of the most useful parts of a spec.)
15
- 4. **Pre-mortem risk coverage:** run in prospective hindsight; each top risk carries likelihood
16
- + mitigation + the slice that owns it. **Unmitigated top risks are gating.**
15
+ 4. **Pre-mortem risk coverage:** assess the feature as if it shipped and failed. Each top risk carries likelihood
16
+ + mitigation + the slice that owns it. The interruption pre-mortem accounts for foreseeable
17
+ human prerequisites and action-time approvals instead of deferring generic uncertainty to
18
+ build. **Unmitigated top risks are gating.**
17
19
  5. **Over-engineering / YAGNI:** speculative capability, unused extension points, premature
18
20
  abstraction, second-system bloat. Apply the pack's standard (`patterns.md`) + the "imagine
19
21
  the later refactor" test. Defer unless now-cost is trivial AND deferred-cost is large.
20
- 6. **Acceptance testability & done-ness:** every acceptance criterion measurable, technology-
22
+ 6. **Acceptance testability and completion:** every acceptance criterion measurable, technology-
21
23
  agnostic, and comparable **down to a baseline** ("better than the current workaround"), not
22
24
  up to an unbounded ideal. Vague adjectives ("fast/robust/intuitive") and "handles X
23
25
  gracefully" are flagged.
@@ -34,9 +36,8 @@ UI specs also inherit `rite-polish/reference/anti-ai-slop.md` at the cross-cutti
34
36
  dimension (design-system fit, anti-AI-slop), but `$rite-temper` reviews the *spec/design-brief*,
35
37
  not pixels; the built UI is judged later by `devrites-frontend-reviewer`.
36
38
 
37
- ## The rubric: coarse bands, evidence first
38
- Score each dimension on a **labeled band**, never a 1-10 float or a composite number (labels do
39
- the work: matches the pack's severity-vocabulary stance):
39
+ ## Rubric
40
+ Score each dimension on a **labeled band**, never a 1-10 float or composite number:
40
41
 
41
42
  | Band | Meaning |
42
43
  |---|---|
@@ -45,9 +46,8 @@ the work: matches the pack's severity-vocabulary stance):
45
46
  | **thin** | Under-addressed; a real gap to close before planning (Important). |
46
47
  | **broken** | Missing or wrong in a way that will cost a redo (Critical). |
47
48
 
48
- **Cite evidence before the band**: name the spec line / absence that justifies it; never score
49
- first and rationalize after. Borderline dimensions may be sampled twice; take the **lower** band
50
- (don't average up).
49
+ **Cite evidence before assigning the band.** Name the spec line or absence that
50
+ justifies it. Review a borderline dimension twice if needed and use the **lower** band.
51
51
 
52
52
  ## The floor-gate
53
53
  - **Pass** only when every dimension is `adequate` or `strong` **and** no unmitigated top
@@ -57,9 +57,11 @@ first and rationalize after. Borderline dimensions may be sampled twice; take th
57
57
  Suggestion / Nit / FYI**) so they compose with `$rite-review` and `$rite-seal`. `broken` →
58
58
  Critical, `thin` → Important; **FYI is band-independent**: an observation on a `strong` /
59
59
  `adequate` dimension, not a failing band.
60
- - **Don't double-count overlap.** Some dimensions key on the same evidence (e.g. #7
60
+ - **Do not double-count overlap.** Some dimensions use the same evidence (e.g. #7
61
61
  irreversibility & #9 convention-fit both touch codebase realism; #1 ambition & #2 scope both
62
62
  touch over/under-reach). Don't fail two dimensions for the *same* root cause: cite the
63
- evidence once, band it once, so one problem isn't laundered into two floor failures.
64
- - Below-bar dimension after the ≤3-iteration reviewer loop → blocking question (HITL) or AFK
65
- gate-ceiling entry. Irreversible-risk findings always pause regardless of band.
63
+ evidence once and assign one band so one problem does not create two floor failures.
64
+ - Below-bar dimension after the ≤3-iteration reviewer loop → classify by decision ownership:
65
+ product/scope/risk uncertainty becomes a blocking question; an objective prose/coverage defect
66
+ routes back to `$rite-spec` without inventing a human decision. Irreversible-risk findings
67
+ always pause regardless of band.