devrites 3.0.7 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (484) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +82 -50
  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/0012-semantic-workspace-upgrades.md +77 -0
  12. package/docs/adr/README.md +4 -0
  13. package/docs/agents/triage-labels.md +7 -7
  14. package/docs/architecture.md +179 -141
  15. package/docs/cli.md +47 -12
  16. package/docs/command-map.md +61 -38
  17. package/docs/engine/agent-contract.md +92 -15
  18. package/docs/engine/commands.md +248 -72
  19. package/docs/engine/state-schema.md +52 -23
  20. package/docs/engine/workspace-schema.md +103 -15
  21. package/docs/extensions.md +1 -1
  22. package/docs/flow.md +86 -51
  23. package/docs/harness-compliance.md +29 -5
  24. package/docs/orchestration.md +107 -79
  25. package/docs/quick-reference.md +11 -3
  26. package/docs/release.md +4 -3
  27. package/docs/skills.md +67 -38
  28. package/docs/usage.md +84 -39
  29. package/engine/cmd/releasepack/main.go +219 -0
  30. package/engine/cmd/releasepack/main_test.go +170 -0
  31. package/engine/commands.go +170 -23
  32. package/engine/git_guard.go +187 -0
  33. package/engine/git_guard_test.go +283 -0
  34. package/engine/hookpolicy.go +53 -55
  35. package/engine/hookpolicy_test.go +91 -1
  36. package/engine/hooks.go +296 -75
  37. package/engine/hooks_events_test.go +276 -6
  38. package/engine/hooks_workspace.go +640 -159
  39. package/engine/internal/devritespaths/paths.go +65 -10
  40. package/engine/internal/devritespaths/paths_test.go +110 -0
  41. package/engine/internal/doctor/doctor.go +153 -23
  42. package/engine/internal/doctor/doctor_test.go +74 -0
  43. package/engine/internal/forge/forge.go +940 -0
  44. package/engine/internal/forge/forge_test.go +576 -0
  45. package/engine/internal/forge/git.go +245 -0
  46. package/engine/internal/forge/liveness_unix.go +48 -0
  47. package/engine/internal/forge/liveness_windows.go +67 -0
  48. package/engine/internal/forge/manifest.go +402 -0
  49. package/engine/internal/gate/gate.go +90 -71
  50. package/engine/internal/gate/gate_test.go +71 -2
  51. package/engine/internal/harness/compliance.go +18 -24
  52. package/engine/internal/harness/harness.go +37 -44
  53. package/engine/internal/harness/harness_test.go +21 -5
  54. package/engine/internal/install/install.go +486 -38
  55. package/engine/internal/install/install_test.go +383 -10
  56. package/engine/internal/iohooks/iohooks.go +350 -59
  57. package/engine/internal/iohooks/iohooks_test.go +421 -1
  58. package/engine/internal/lib/buildreadiness.go +43 -18
  59. package/engine/internal/lib/clarifyreturn.go +91 -0
  60. package/engine/internal/lib/clarifyreturn_test.go +123 -0
  61. package/engine/internal/lib/context.go +54 -15
  62. package/engine/internal/lib/cursor_compat_test.go +8 -0
  63. package/engine/internal/lib/extensions.go +2 -3
  64. package/engine/internal/lib/gitauthority.go +601 -0
  65. package/engine/internal/lib/gitauthority_test.go +346 -0
  66. package/engine/internal/lib/jsonout.go +25 -11
  67. package/engine/internal/lib/jsonout_test.go +16 -0
  68. package/engine/internal/lib/lanes.go +14 -8
  69. package/engine/internal/lib/observability_test.go +358 -0
  70. package/engine/internal/lib/packageexistence.go +151 -35
  71. package/engine/internal/lib/packageexistence_test.go +163 -0
  72. package/engine/internal/lib/progress.go +11 -9
  73. package/engine/internal/lib/provenance.go +462 -0
  74. package/engine/internal/lib/provenance_test.go +154 -0
  75. package/engine/internal/lib/readiness_contract.json +118 -0
  76. package/engine/internal/lib/readinessartifact.go +533 -0
  77. package/engine/internal/lib/readinessartifact_test.go +422 -0
  78. package/engine/internal/lib/reconcile.go +712 -88
  79. package/engine/internal/lib/reconcile_test.go +335 -16
  80. package/engine/internal/lib/recoveryattempts.go +298 -0
  81. package/engine/internal/lib/recoveryattempts_test.go +215 -0
  82. package/engine/internal/lib/resolve.go +23 -19
  83. package/engine/internal/lib/runbook_context_test.go +20 -0
  84. package/engine/internal/lib/session.go +701 -9
  85. package/engine/internal/lib/session_test.go +80 -13
  86. package/engine/internal/lib/testintegrity.go +33 -37
  87. package/engine/internal/lib/testintegrity_test.go +63 -1
  88. package/engine/internal/migrate/migrate.go +81 -1
  89. package/engine/internal/migrate/migrate_test.go +22 -1
  90. package/engine/internal/reason/reason.go +180 -0
  91. package/engine/internal/reason/reason_test.go +35 -0
  92. package/engine/internal/rootfacts/facts.go +466 -0
  93. package/engine/internal/rootfacts/facts_test.go +306 -0
  94. package/engine/internal/safepath/safepath.go +55 -0
  95. package/engine/internal/safepath/safepath_test.go +69 -0
  96. package/engine/internal/safepath/safepath_windows_test.go +26 -0
  97. package/engine/internal/state/clarify_transition.go +165 -0
  98. package/engine/internal/state/clarify_transition_test.go +130 -0
  99. package/engine/internal/state/cmd/workflowmanifest/main.go +12 -8
  100. package/engine/internal/state/cursor.go +58 -0
  101. package/engine/internal/state/cursor_test.go +42 -1
  102. package/engine/internal/state/feature.go +35 -48
  103. package/engine/internal/state/schema.go +90 -37
  104. package/engine/internal/state/snapshot.go +18 -2
  105. package/engine/internal/state/state_test.go +187 -7
  106. package/engine/internal/state/status.go +48 -11
  107. package/engine/internal/state/workflow_manifest.json +231 -50
  108. package/engine/internal/toolpolicy/classifier.go +533 -0
  109. package/engine/internal/toolpolicy/classifier_test.go +424 -0
  110. package/engine/internal/toolpolicy/git.go +616 -0
  111. package/engine/internal/toolpolicy/scanner.go +382 -0
  112. package/engine/main.go +160 -77
  113. package/engine/observability_cli_test.go +52 -0
  114. package/engine/root_routing_test.go +277 -0
  115. package/engine/testdata/golden/TestParityBuildReadiness/arg=approved.golden +1 -1
  116. package/engine/testdata/golden/TestParityBuildReadiness/arg=emptystatus.golden +1 -1
  117. package/engine/testdata/golden/TestParityBuildReadiness/arg=legacycontract.golden +1 -0
  118. package/engine/testdata/golden/TestParityBuildReadiness/arg=noclarify.golden +1 -0
  119. package/engine/testdata/golden/TestParityBuildReadiness/arg=novet.golden +1 -0
  120. package/engine/testdata/golden/TestParityBuildReadiness/arg=stalevet.golden +1 -0
  121. package/engine/testdata/golden/TestParityBuildReadiness/arg=trailhash.golden +1 -1
  122. package/engine/testdata/golden/TestParityBuildReadiness/arg=trailpipe.golden +1 -1
  123. package/engine/testdata/golden/TestParityBuildReadiness/arg=vetnotready.golden +1 -0
  124. package/engine/testdata/golden/TestParityProgress/arg=allbuilt.golden +1 -1
  125. package/engine/testdata/golden/TestParityProgress/arg=done.golden +1 -1
  126. package/engine/testdata/golden/TestParityProgress/arg=mid.golden +1 -1
  127. package/engine/testdata/golden/TestParityProgress/arg=nophase.golden +1 -1
  128. package/engine/testdata/golden/TestParityProgress/arg=noslice.golden +1 -1
  129. package/engine/testdata/golden/TestParityProgress/arg=plan.golden +1 -1
  130. package/engine/testdata/golden/TestParityProgress/arg=seal.golden +1 -1
  131. package/engine/testdata/golden/TestParityReconcile/check-clean.golden +1 -1
  132. package/engine/testdata/golden/TestParityReconcile/inline-fallback.golden +1 -0
  133. package/engine/testdata/golden/TestParityReconcile/snapshot-no-allowlist.golden +1 -0
  134. package/engine/testdata/golden/TestParityWrightScope/devrites-edit-denied.golden +2 -0
  135. package/engine/testdata/golden/TestParityWrightScope/out-of-scope-enforce-denies.golden +1 -1
  136. package/engine/tests/adr_0011_define_plan_test.go +30 -0
  137. package/engine/tests/budget_test.go +19 -8
  138. package/engine/tests/concurrency_cli_test.go +7 -1
  139. package/engine/tests/doctor_cli_test.go +148 -2
  140. package/engine/tests/forge_cli_test.go +463 -0
  141. package/engine/tests/gate_test.go +63 -8
  142. package/engine/tests/hook_test.go +260 -8
  143. package/engine/tests/hooks_io_test.go +94 -3
  144. package/engine/tests/json_contract_test.go +127 -2
  145. package/engine/tests/migrate_cli_test.go +2 -2
  146. package/engine/tests/parity_buildreadiness_test.go +167 -10
  147. package/engine/tests/parity_learnings_test.go +16 -17
  148. package/engine/tests/parity_reconcile_test.go +20 -17
  149. package/engine/tests/parity_resolve_test.go +12 -11
  150. package/engine/tests/parity_test.go +21 -17
  151. package/pack/.claude/agents/devrites-code-reviewer.md +62 -48
  152. package/pack/.claude/agents/devrites-devex-reviewer.md +69 -53
  153. package/pack/.claude/agents/devrites-doubt-reviewer.md +29 -22
  154. package/pack/.claude/agents/devrites-evidence-scout.md +69 -0
  155. package/pack/.claude/agents/devrites-forge-judge.md +74 -61
  156. package/pack/.claude/agents/devrites-frontend-reviewer.md +48 -39
  157. package/pack/.claude/agents/devrites-performance-reviewer.md +49 -40
  158. package/pack/.claude/agents/devrites-plan-drafter.md +73 -0
  159. package/pack/.claude/agents/devrites-plan-reviewer.md +80 -47
  160. package/pack/.claude/agents/devrites-proof-runner.md +74 -0
  161. package/pack/.claude/agents/devrites-retrospector.md +48 -45
  162. package/pack/.claude/agents/devrites-security-auditor.md +46 -36
  163. package/pack/.claude/agents/devrites-simplifier-reviewer.md +50 -46
  164. package/pack/.claude/agents/devrites-slice-wright.md +153 -165
  165. package/pack/.claude/agents/devrites-spec-reviewer.md +34 -32
  166. package/pack/.claude/agents/devrites-strategy-reviewer.md +63 -34
  167. package/pack/.claude/agents/devrites-test-analyst.md +40 -30
  168. package/pack/.claude/agents/devrites-upgrade-planner.md +100 -0
  169. package/pack/.claude/settings.json +2 -1
  170. package/pack/.claude/skills/devrites-audit/SKILL.md +40 -61
  171. package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +24 -13
  172. package/pack/.claude/skills/devrites-debug-recovery/reference/build-the-loop.md +24 -21
  173. package/pack/.claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +34 -6
  174. package/pack/.claude/skills/devrites-debug-recovery/reference/instrumentation.md +2 -2
  175. package/pack/.claude/skills/devrites-doubt/SKILL.md +25 -17
  176. package/pack/.claude/skills/devrites-interview/SKILL.md +53 -52
  177. package/pack/.claude/skills/devrites-lib/SKILL.md +12 -9
  178. package/pack/.claude/skills/devrites-lib/reference/intent-map.md +4 -2
  179. package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +82 -137
  180. package/pack/.claude/skills/devrites-lib/reference/reply-contract.md +8 -1
  181. package/pack/.claude/skills/devrites-lib/reference/standards/README.md +38 -55
  182. package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +53 -27
  183. package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +200 -190
  184. package/pack/.claude/skills/devrites-lib/reference/standards/anti-patterns.md +5 -15
  185. package/pack/.claude/skills/devrites-lib/reference/standards/ci-cd.md +27 -58
  186. package/pack/.claude/skills/devrites-lib/reference/standards/code-review.md +16 -52
  187. package/pack/.claude/skills/devrites-lib/reference/standards/coding-style.md +2 -10
  188. package/pack/.claude/skills/devrites-lib/reference/standards/context-hygiene.md +18 -61
  189. package/pack/.claude/skills/devrites-lib/reference/standards/core.md +23 -18
  190. package/pack/.claude/skills/devrites-lib/reference/standards/deprecation.md +17 -57
  191. package/pack/.claude/skills/devrites-lib/reference/standards/development-workflow.md +4 -33
  192. package/pack/.claude/skills/devrites-lib/reference/standards/git-workflow.md +4 -20
  193. package/pack/.claude/skills/devrites-lib/reference/standards/hooks.md +3 -14
  194. package/pack/.claude/skills/devrites-lib/reference/standards/patterns.md +9 -25
  195. package/pack/.claude/skills/devrites-lib/reference/standards/performance.md +0 -9
  196. package/pack/.claude/skills/devrites-lib/reference/standards/principles.md +1 -3
  197. package/pack/.claude/skills/devrites-lib/reference/standards/security.md +17 -7
  198. package/pack/.claude/skills/devrites-lib/reference/standards/testing.md +1 -27
  199. package/pack/.claude/skills/devrites-lib/reference/standards/tooling.md +46 -50
  200. package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +40 -10
  201. package/pack/.claude/skills/devrites-source-driven/SKILL.md +23 -22
  202. package/pack/.claude/skills/rite/SKILL.md +10 -6
  203. package/pack/.claude/skills/rite/reference/menu.md +13 -7
  204. package/pack/.claude/skills/rite-adopt/SKILL.md +33 -37
  205. package/pack/.claude/skills/rite-autocomplete/SKILL.md +33 -28
  206. package/pack/.claude/skills/rite-autocomplete/reference/loop.md +21 -21
  207. package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +15 -6
  208. package/pack/.claude/skills/rite-build/SKILL.md +35 -30
  209. package/pack/.claude/skills/rite-build/reference/afk-discipline.md +41 -39
  210. package/pack/.claude/skills/rite-build/reference/evidence-standard.md +10 -0
  211. package/pack/.claude/skills/rite-build/reference/forge.md +186 -156
  212. package/pack/.claude/skills/rite-build/reference/one-slice-cycle.md +4 -3
  213. package/pack/.claude/skills/rite-build/reference/phase-contract.md +96 -175
  214. package/pack/.claude/skills/rite-build/reference/spec-drift-guard.md +10 -4
  215. package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +129 -134
  216. package/pack/.claude/skills/rite-clarify/SKILL.md +90 -0
  217. package/pack/.claude/skills/rite-clarify/reference/decision-coverage.md +61 -0
  218. package/pack/.claude/skills/rite-converge/SKILL.md +35 -25
  219. package/pack/.claude/skills/rite-define/SKILL.md +58 -32
  220. package/pack/.claude/skills/rite-define/reference/gates.md +16 -15
  221. package/pack/.claude/skills/rite-define/reference/plan-template.md +18 -8
  222. package/pack/.claude/skills/rite-frame/reference/failure-modes.md +22 -24
  223. package/pack/.claude/skills/rite-plan/SKILL.md +47 -16
  224. package/pack/.claude/skills/rite-plan/reference/task-breakdown.md +4 -0
  225. package/pack/.claude/skills/rite-polish/SKILL.md +27 -23
  226. package/pack/.claude/skills/rite-prototype/SKILL.md +25 -26
  227. package/pack/.claude/skills/rite-prove/SKILL.md +27 -17
  228. package/pack/.claude/skills/rite-resolve/SKILL.md +12 -11
  229. package/pack/.claude/skills/rite-resolve/reference/answer-protocol.md +3 -0
  230. package/pack/.claude/skills/rite-review/SKILL.md +37 -28
  231. package/pack/.claude/skills/rite-seal/reference/phase-contract.md +27 -92
  232. package/pack/.claude/skills/rite-seal/reference/risk-and-rollback.md +13 -0
  233. package/pack/.claude/skills/rite-ship/reference/design-memory.md +31 -36
  234. package/pack/.claude/skills/rite-spec/SKILL.md +84 -135
  235. package/pack/.claude/skills/rite-spec/reference/investigation.md +37 -33
  236. package/pack/.claude/skills/rite-spec/reference/question-protocol.md +6 -2
  237. package/pack/.claude/skills/rite-spec/reference/spec-checklists.md +25 -24
  238. package/pack/.claude/skills/rite-spec/reference/spec-template.md +9 -2
  239. package/pack/.claude/skills/rite-spec/reference/state-workspace.md +13 -3
  240. package/pack/.claude/skills/rite-temper/SKILL.md +62 -47
  241. package/pack/.claude/skills/rite-temper/reference/review-dimensions.md +24 -22
  242. package/pack/.claude/skills/rite-upgrade/SKILL.md +125 -0
  243. package/pack/.claude/skills/rite-vet/SKILL.md +114 -113
  244. package/pack/.claude/skills/rite-vet/reference/artifacts.md +50 -9
  245. package/pack/.claude/skills/rite-vet/reference/review-axes.md +39 -37
  246. package/pack/generated/claude/agents/devrites-code-reviewer.md +62 -48
  247. package/pack/generated/claude/agents/devrites-devex-reviewer.md +69 -53
  248. package/pack/generated/claude/agents/devrites-doubt-reviewer.md +29 -22
  249. package/pack/generated/claude/agents/devrites-evidence-scout.md +69 -0
  250. package/pack/generated/claude/agents/devrites-forge-judge.md +74 -61
  251. package/pack/generated/claude/agents/devrites-frontend-reviewer.md +48 -39
  252. package/pack/generated/claude/agents/devrites-performance-reviewer.md +49 -40
  253. package/pack/generated/claude/agents/devrites-plan-drafter.md +73 -0
  254. package/pack/generated/claude/agents/devrites-plan-reviewer.md +80 -47
  255. package/pack/generated/claude/agents/devrites-proof-runner.md +74 -0
  256. package/pack/generated/claude/agents/devrites-retrospector.md +48 -45
  257. package/pack/generated/claude/agents/devrites-security-auditor.md +46 -36
  258. package/pack/generated/claude/agents/devrites-simplifier-reviewer.md +50 -46
  259. package/pack/generated/claude/agents/devrites-slice-wright.md +153 -165
  260. package/pack/generated/claude/agents/devrites-spec-reviewer.md +34 -32
  261. package/pack/generated/claude/agents/devrites-strategy-reviewer.md +63 -34
  262. package/pack/generated/claude/agents/devrites-test-analyst.md +40 -30
  263. package/pack/generated/claude/agents/devrites-upgrade-planner.md +100 -0
  264. package/pack/generated/claude/settings.json +2 -1
  265. package/pack/generated/claude/skills/devrites-audit/SKILL.md +40 -61
  266. package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +24 -13
  267. package/pack/generated/claude/skills/devrites-debug-recovery/reference/build-the-loop.md +24 -21
  268. package/pack/generated/claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +34 -6
  269. package/pack/generated/claude/skills/devrites-debug-recovery/reference/instrumentation.md +2 -2
  270. package/pack/generated/claude/skills/devrites-doubt/SKILL.md +25 -17
  271. package/pack/generated/claude/skills/devrites-interview/SKILL.md +53 -52
  272. package/pack/generated/claude/skills/devrites-lib/SKILL.md +12 -9
  273. package/pack/generated/claude/skills/devrites-lib/reference/intent-map.md +4 -2
  274. package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +82 -137
  275. package/pack/generated/claude/skills/devrites-lib/reference/reply-contract.md +8 -1
  276. package/pack/generated/claude/skills/devrites-lib/reference/standards/README.md +38 -55
  277. package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +53 -27
  278. package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +200 -190
  279. package/pack/generated/claude/skills/devrites-lib/reference/standards/anti-patterns.md +5 -15
  280. package/pack/generated/claude/skills/devrites-lib/reference/standards/ci-cd.md +27 -58
  281. package/pack/generated/claude/skills/devrites-lib/reference/standards/code-review.md +16 -52
  282. package/pack/generated/claude/skills/devrites-lib/reference/standards/coding-style.md +2 -10
  283. package/pack/generated/claude/skills/devrites-lib/reference/standards/context-hygiene.md +18 -61
  284. package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +23 -18
  285. package/pack/generated/claude/skills/devrites-lib/reference/standards/deprecation.md +17 -57
  286. package/pack/generated/claude/skills/devrites-lib/reference/standards/development-workflow.md +4 -33
  287. package/pack/generated/claude/skills/devrites-lib/reference/standards/git-workflow.md +4 -20
  288. package/pack/generated/claude/skills/devrites-lib/reference/standards/hooks.md +3 -14
  289. package/pack/generated/claude/skills/devrites-lib/reference/standards/patterns.md +9 -25
  290. package/pack/generated/claude/skills/devrites-lib/reference/standards/performance.md +0 -9
  291. package/pack/generated/claude/skills/devrites-lib/reference/standards/principles.md +1 -3
  292. package/pack/generated/claude/skills/devrites-lib/reference/standards/security.md +17 -7
  293. package/pack/generated/claude/skills/devrites-lib/reference/standards/testing.md +1 -27
  294. package/pack/generated/claude/skills/devrites-lib/reference/standards/tooling.md +46 -50
  295. package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +40 -10
  296. package/pack/generated/claude/skills/devrites-source-driven/SKILL.md +23 -22
  297. package/pack/generated/claude/skills/rite/SKILL.md +10 -6
  298. package/pack/generated/claude/skills/rite/reference/menu.md +13 -7
  299. package/pack/generated/claude/skills/rite-adopt/SKILL.md +33 -37
  300. package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +33 -28
  301. package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +21 -21
  302. package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +15 -6
  303. package/pack/generated/claude/skills/rite-build/SKILL.md +35 -30
  304. package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +41 -39
  305. package/pack/generated/claude/skills/rite-build/reference/evidence-standard.md +10 -0
  306. package/pack/generated/claude/skills/rite-build/reference/forge.md +186 -156
  307. package/pack/generated/claude/skills/rite-build/reference/one-slice-cycle.md +4 -3
  308. package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +96 -175
  309. package/pack/generated/claude/skills/rite-build/reference/spec-drift-guard.md +10 -4
  310. package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +129 -134
  311. package/pack/generated/claude/skills/rite-clarify/SKILL.md +90 -0
  312. package/pack/generated/claude/skills/rite-clarify/reference/decision-coverage.md +61 -0
  313. package/pack/generated/claude/skills/rite-converge/SKILL.md +35 -25
  314. package/pack/generated/claude/skills/rite-define/SKILL.md +58 -32
  315. package/pack/generated/claude/skills/rite-define/reference/gates.md +16 -15
  316. package/pack/generated/claude/skills/rite-define/reference/plan-template.md +18 -8
  317. package/pack/generated/claude/skills/rite-frame/reference/failure-modes.md +22 -24
  318. package/pack/generated/claude/skills/rite-plan/SKILL.md +47 -16
  319. package/pack/generated/claude/skills/rite-plan/reference/task-breakdown.md +4 -0
  320. package/pack/generated/claude/skills/rite-polish/SKILL.md +27 -23
  321. package/pack/generated/claude/skills/rite-prototype/SKILL.md +25 -26
  322. package/pack/generated/claude/skills/rite-prove/SKILL.md +27 -17
  323. package/pack/generated/claude/skills/rite-resolve/SKILL.md +12 -11
  324. package/pack/generated/claude/skills/rite-resolve/reference/answer-protocol.md +3 -0
  325. package/pack/generated/claude/skills/rite-review/SKILL.md +37 -28
  326. package/pack/generated/claude/skills/rite-seal/reference/phase-contract.md +27 -92
  327. package/pack/generated/claude/skills/rite-seal/reference/risk-and-rollback.md +13 -0
  328. package/pack/generated/claude/skills/rite-ship/reference/design-memory.md +31 -36
  329. package/pack/generated/claude/skills/rite-spec/SKILL.md +84 -135
  330. package/pack/generated/claude/skills/rite-spec/reference/investigation.md +37 -33
  331. package/pack/generated/claude/skills/rite-spec/reference/question-protocol.md +6 -2
  332. package/pack/generated/claude/skills/rite-spec/reference/spec-checklists.md +25 -24
  333. package/pack/generated/claude/skills/rite-spec/reference/spec-template.md +9 -2
  334. package/pack/generated/claude/skills/rite-spec/reference/state-workspace.md +13 -3
  335. package/pack/generated/claude/skills/rite-temper/SKILL.md +62 -47
  336. package/pack/generated/claude/skills/rite-temper/reference/review-dimensions.md +24 -22
  337. package/pack/generated/claude/skills/rite-upgrade/SKILL.md +125 -0
  338. package/pack/generated/claude/skills/rite-vet/SKILL.md +114 -113
  339. package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +50 -9
  340. package/pack/generated/claude/skills/rite-vet/reference/review-axes.md +39 -37
  341. package/pack/generated/codex/AGENTS.md +5 -2
  342. package/pack/generated/codex/agents/devrites-code-reviewer.toml +69 -47
  343. package/pack/generated/codex/agents/devrites-devex-reviewer.toml +75 -51
  344. package/pack/generated/codex/agents/devrites-doubt-reviewer.toml +35 -20
  345. package/pack/generated/codex/agents/devrites-evidence-scout.toml +75 -0
  346. package/pack/generated/codex/agents/devrites-forge-judge.toml +80 -59
  347. package/pack/generated/codex/agents/devrites-frontend-reviewer.toml +54 -37
  348. package/pack/generated/codex/agents/devrites-performance-reviewer.toml +55 -38
  349. package/pack/generated/codex/agents/devrites-plan-drafter.toml +79 -0
  350. package/pack/generated/codex/agents/devrites-plan-reviewer.toml +82 -47
  351. package/pack/generated/codex/agents/devrites-proof-runner.toml +80 -0
  352. package/pack/generated/codex/agents/devrites-retrospector.toml +54 -43
  353. package/pack/generated/codex/agents/devrites-security-auditor.toml +53 -35
  354. package/pack/generated/codex/agents/devrites-simplifier-reviewer.toml +56 -44
  355. package/pack/generated/codex/agents/devrites-slice-wright.toml +159 -163
  356. package/pack/generated/codex/agents/devrites-spec-reviewer.toml +40 -30
  357. package/pack/generated/codex/agents/devrites-strategy-reviewer.toml +65 -34
  358. package/pack/generated/codex/agents/devrites-test-analyst.toml +46 -28
  359. package/pack/generated/codex/agents/devrites-upgrade-planner.toml +106 -0
  360. package/pack/generated/codex/hooks.json +4 -14
  361. package/pack/generated/codex/skills/devrites-api-interface/SKILL.md +7 -3
  362. package/pack/generated/codex/skills/devrites-audit/SKILL.md +47 -64
  363. package/pack/generated/codex/skills/devrites-browser-proof/SKILL.md +7 -3
  364. package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +31 -16
  365. package/pack/generated/codex/skills/devrites-debug-recovery/reference/build-the-loop.md +24 -21
  366. package/pack/generated/codex/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +34 -6
  367. package/pack/generated/codex/skills/devrites-debug-recovery/reference/instrumentation.md +2 -2
  368. package/pack/generated/codex/skills/devrites-doubt/SKILL.md +32 -20
  369. package/pack/generated/codex/skills/devrites-frontend-craft/SKILL.md +7 -3
  370. package/pack/generated/codex/skills/devrites-interview/SKILL.md +60 -55
  371. package/pack/generated/codex/skills/devrites-lib/SKILL.md +19 -12
  372. package/pack/generated/codex/skills/devrites-lib/reference/intent-map.md +4 -2
  373. package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +82 -137
  374. package/pack/generated/codex/skills/devrites-lib/reference/reply-contract.md +8 -1
  375. package/pack/generated/codex/skills/devrites-lib/reference/standards/README.md +38 -55
  376. package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +53 -27
  377. package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +200 -190
  378. package/pack/generated/codex/skills/devrites-lib/reference/standards/anti-patterns.md +5 -15
  379. package/pack/generated/codex/skills/devrites-lib/reference/standards/ci-cd.md +27 -58
  380. package/pack/generated/codex/skills/devrites-lib/reference/standards/code-review.md +16 -52
  381. package/pack/generated/codex/skills/devrites-lib/reference/standards/coding-style.md +2 -10
  382. package/pack/generated/codex/skills/devrites-lib/reference/standards/context-hygiene.md +18 -61
  383. package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +23 -18
  384. package/pack/generated/codex/skills/devrites-lib/reference/standards/deprecation.md +17 -57
  385. package/pack/generated/codex/skills/devrites-lib/reference/standards/development-workflow.md +4 -33
  386. package/pack/generated/codex/skills/devrites-lib/reference/standards/git-workflow.md +4 -20
  387. package/pack/generated/codex/skills/devrites-lib/reference/standards/hooks.md +3 -14
  388. package/pack/generated/codex/skills/devrites-lib/reference/standards/patterns.md +9 -25
  389. package/pack/generated/codex/skills/devrites-lib/reference/standards/performance.md +0 -9
  390. package/pack/generated/codex/skills/devrites-lib/reference/standards/principles.md +1 -3
  391. package/pack/generated/codex/skills/devrites-lib/reference/standards/security.md +17 -7
  392. package/pack/generated/codex/skills/devrites-lib/reference/standards/testing.md +1 -27
  393. package/pack/generated/codex/skills/devrites-lib/reference/standards/tooling.md +46 -50
  394. package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +40 -10
  395. package/pack/generated/codex/skills/devrites-prose-craft/SKILL.md +7 -3
  396. package/pack/generated/codex/skills/devrites-refresh-indexes/SKILL.md +7 -3
  397. package/pack/generated/codex/skills/devrites-source-driven/SKILL.md +29 -24
  398. package/pack/generated/codex/skills/devrites-ux-shape/SKILL.md +7 -3
  399. package/pack/generated/codex/skills/rite/SKILL.md +21 -13
  400. package/pack/generated/codex/skills/rite/reference/menu.md +13 -7
  401. package/pack/generated/codex/skills/rite-adopt/SKILL.md +40 -40
  402. package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +40 -31
  403. package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +21 -21
  404. package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +15 -6
  405. package/pack/generated/codex/skills/rite-build/SKILL.md +42 -33
  406. package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +41 -39
  407. package/pack/generated/codex/skills/rite-build/reference/evidence-standard.md +10 -0
  408. package/pack/generated/codex/skills/rite-build/reference/forge.md +186 -156
  409. package/pack/generated/codex/skills/rite-build/reference/one-slice-cycle.md +4 -3
  410. package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +96 -175
  411. package/pack/generated/codex/skills/rite-build/reference/spec-drift-guard.md +10 -4
  412. package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +129 -134
  413. package/pack/generated/codex/skills/rite-clarify/SKILL.md +106 -0
  414. package/pack/generated/codex/skills/rite-clarify/reference/decision-coverage.md +61 -0
  415. package/pack/generated/codex/skills/rite-converge/SKILL.md +42 -28
  416. package/pack/generated/codex/skills/rite-customize/SKILL.md +7 -3
  417. package/pack/generated/codex/skills/rite-define/SKILL.md +65 -35
  418. package/pack/generated/codex/skills/rite-define/reference/gates.md +16 -15
  419. package/pack/generated/codex/skills/rite-define/reference/plan-template.md +18 -8
  420. package/pack/generated/codex/skills/rite-doctor/SKILL.md +7 -3
  421. package/pack/generated/codex/skills/rite-dogfood/SKILL.md +7 -3
  422. package/pack/generated/codex/skills/rite-explain/SKILL.md +7 -3
  423. package/pack/generated/codex/skills/rite-frame/SKILL.md +7 -3
  424. package/pack/generated/codex/skills/rite-frame/reference/failure-modes.md +22 -24
  425. package/pack/generated/codex/skills/rite-handoff/SKILL.md +7 -3
  426. package/pack/generated/codex/skills/rite-learn/SKILL.md +7 -3
  427. package/pack/generated/codex/skills/rite-plan/SKILL.md +54 -19
  428. package/pack/generated/codex/skills/rite-plan/reference/task-breakdown.md +5 -1
  429. package/pack/generated/codex/skills/rite-polish/SKILL.md +34 -26
  430. package/pack/generated/codex/skills/rite-pov/SKILL.md +7 -3
  431. package/pack/generated/codex/skills/rite-pr-feedback/SKILL.md +7 -3
  432. package/pack/generated/codex/skills/rite-pressure-test/SKILL.md +7 -3
  433. package/pack/generated/codex/skills/rite-prototype/SKILL.md +32 -29
  434. package/pack/generated/codex/skills/rite-prove/SKILL.md +34 -20
  435. package/pack/generated/codex/skills/rite-quick/SKILL.md +7 -3
  436. package/pack/generated/codex/skills/rite-resolve/SKILL.md +19 -14
  437. package/pack/generated/codex/skills/rite-resolve/reference/answer-protocol.md +3 -0
  438. package/pack/generated/codex/skills/rite-review/SKILL.md +44 -31
  439. package/pack/generated/codex/skills/rite-seal/SKILL.md +7 -3
  440. package/pack/generated/codex/skills/rite-seal/reference/phase-contract.md +27 -92
  441. package/pack/generated/codex/skills/rite-seal/reference/risk-and-rollback.md +13 -0
  442. package/pack/generated/codex/skills/rite-ship/SKILL.md +7 -3
  443. package/pack/generated/codex/skills/rite-ship/reference/design-memory.md +31 -36
  444. package/pack/generated/codex/skills/rite-spec/SKILL.md +91 -138
  445. package/pack/generated/codex/skills/rite-spec/reference/investigation.md +37 -33
  446. package/pack/generated/codex/skills/rite-spec/reference/question-protocol.md +6 -2
  447. package/pack/generated/codex/skills/rite-spec/reference/spec-checklists.md +25 -24
  448. package/pack/generated/codex/skills/rite-spec/reference/spec-template.md +9 -2
  449. package/pack/generated/codex/skills/rite-spec/reference/state-workspace.md +13 -3
  450. package/pack/generated/codex/skills/rite-status/SKILL.md +7 -3
  451. package/pack/generated/codex/skills/rite-temper/SKILL.md +69 -50
  452. package/pack/generated/codex/skills/rite-temper/reference/review-dimensions.md +24 -22
  453. package/pack/generated/codex/skills/rite-upgrade/SKILL.md +141 -0
  454. package/pack/generated/codex/skills/rite-upgrade/agents/openai.yaml +2 -0
  455. package/pack/generated/codex/skills/rite-vet/SKILL.md +121 -116
  456. package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +50 -9
  457. package/pack/generated/codex/skills/rite-vet/reference/review-axes.md +40 -38
  458. package/pack/generated/codex/skills/rite-zoom-out/SKILL.md +7 -3
  459. package/package.json +1 -1
  460. package/scripts/build-release-tarball.sh +32 -15
  461. package/scripts/check-authority-drift.py +125 -0
  462. package/scripts/check-instruction-size-baseline.mjs +19 -11
  463. package/scripts/check-invocation-integrity.py +2 -0
  464. package/scripts/codex-generate.sh +69 -33
  465. package/scripts/grade-feature.sh +121 -40
  466. package/scripts/live-hosts/agent-result.schema.json +230 -0
  467. package/scripts/live-hosts/claude.sh +87 -0
  468. package/scripts/live-hosts/codex.sh +81 -0
  469. package/scripts/live-hosts/common.sh +113 -0
  470. package/scripts/live-hosts/fake-host.py +264 -0
  471. package/scripts/live-hosts/host-transport.py +287 -0
  472. package/scripts/release-check.sh +5 -1
  473. package/scripts/run-agent-contract-evals.py +1380 -0
  474. package/scripts/run-behavioral-evals.sh +24 -30
  475. package/scripts/run-evals.sh +1 -5
  476. package/scripts/run-live-behavioral-evals.py +1274 -144
  477. package/scripts/run-outcome-evals.sh +445 -88
  478. package/scripts/run-tests.mjs +30 -2
  479. package/scripts/skills-inventory.mjs +1 -1
  480. package/scripts/validate-workflow-security.py +39 -20
  481. package/scripts/validate-workspace-schema.py +362 -10
  482. package/scripts/validate.sh +21 -15
  483. package/engine/testdata/golden/TestParityWrightScope/devrites-edit-allowed.golden +0 -1
  484. /package/engine/testdata/golden/{TestParityReconcile/check-no-claimed.golden → TestParityBuildReadiness/arg=clarifyopen.golden} +0 -0
@@ -1,23 +1,21 @@
1
- # Investigation: understand deeply before specifying
1
+ # Investigation before specification
2
2
 
3
- The spec is only as good as the investigation behind it. Goal: understand the
4
- requirement **completely**, decide **where it correctly belongs**, name what it
5
- **resolves**, and surface every **issue and gap**, then drive the gaps to closure with
6
- the user so the spec ships fully-covered and correctly-placed. A gap found here is cheap;
7
- a gap found in `/rite-build` is a drift event.
3
+ Understand the requirement, decide where it belongs, define the outcome, and identify
4
+ every issue and gap. Resolve material gaps with the user before the spec is ready. A
5
+ gap first found during `/rite-build` is a drift event.
8
6
 
9
7
  Use a code-intelligence index if available (see
10
- `../../devrites-lib/reference/standards/tooling.md`) for the structural parts below; it answers "where does this
11
- live / what calls it / what would it break" far more cheaply and accurately than reading files.
12
- With none present, fall back to Read/Grep/Glob. When a gap turns on a fact the codebase can't
13
- answer: a standard, a prevailing UX pattern, how comparable products solve it: **search the
14
- web if available** (brave MCP preferred; `../../devrites-lib/reference/standards/tooling.md`) and cite the finding in
15
- the option you present, so the human's pick is informed rather than guessed.
8
+ `../../devrites-lib/reference/standards/tooling.md`) for structural questions such as
9
+ where code lives, what calls it, and what it could break. With none present, use
10
+ Read/Grep/Glob. When a gap depends on an external fact, such as a standard, UX pattern,
11
+ or comparable product, **search the web if available** (brave MCP preferred;
12
+ `../../devrites-lib/reference/standards/tooling.md`). Cite the finding in the option
13
+ presented to the human.
16
14
 
17
- ## Prior art: check our own archive first (cheap, silent when empty)
18
- Before investigating outward, check whether we already shipped this. Grep the shipped
19
- archive for the feature's key nouns: a hit means an extension, a conflict, or a re-spec of
20
- solved work, and you inherit its decisions instead of re-deriving them:
15
+ ## Check the archive first
16
+ Before external research, check whether the project already shipped related work. Search
17
+ the archive for the feature's key nouns. A hit may indicate an extension, conflict, or
18
+ replacement and provides prior decisions:
21
19
  ```bash
22
20
  devrites-engine archive-search "<key nouns>" 2>/dev/null \
23
21
  || grep -rliE '<noun1>|<noun2>' .devrites/archive/*/spec.md 2>/dev/null
@@ -29,18 +27,18 @@ devrites-engine archive-search "<key nouns>" 2>/dev/null \
29
27
  brownfield / principles no-op discipline).
30
28
 
31
29
  ## Produce these findings (write into spec.md)
32
- 1. **The real ask:** restate the goal and the *problem behind the request* (people ask
30
+ 1. **The request and problem:** restate the goal and the problem behind it (people ask
33
31
  for "a dashboard" when they want an answer to a question). Who hits it, how often,
34
32
  what they do today instead.
35
33
  2. **Current behavior:** how it works today, or what's absent. Read the actual code and
36
34
  flows; don't assume.
37
- 3. **Placement, where it should live** *(so it's correctly placed to be used)*
35
+ 3. **Placement**
38
36
  - Which module / layer / file / component should own this; the right seam.
39
37
  - Existing patterns/components/utilities to **extend or reuse** instead of duplicating.
40
38
  - **Integration points**: callers and dependents, the data it reads/writes, the
41
39
  APIs/events/contracts it touches (interface analysis: how it interacts with the
42
40
  rest of the system).
43
- 4. **What it resolves:** the outcome/value and how we'll *observe* it's resolved (feeds
41
+ 4. **Outcome:** the result and how to observe it (feeds
44
42
  success + acceptance criteria).
45
43
  5. **Issues:** conflicts with existing code/UX/data/permissions, constraints, and
46
44
  anything that makes the obvious approach wrong. Each issue gets a disposition.
@@ -48,19 +46,22 @@ devrites-engine archive-search "<key nouns>" 2>/dev/null \
48
46
  becomes a question** (next section).
49
47
  7. **Blast radius:** what this change could break (use the code graph's impact/callers).
50
48
  Informs risks, test strategy, and rollback.
49
+ 8. **Human prerequisites:** credentials, accounts, approval windows, or irreversible
50
+ action-time decisions the acceptance path requires. Separate these from agent-owned
51
+ implementation and diagnostic work.
51
52
 
52
- Also gather any **design/reference materials** the human supplies (screenshots, Figma,
53
- links, video): see [references-intake](references-intake.md). They're part of
54
- understanding the requirement and become the target later phases verify against.
53
+ Gather any design or reference materials the human supplies, including screenshots,
54
+ Figma, links, or video. See [references-intake](references-intake.md). Record whether
55
+ each is a target, constraint, or inspiration for later phases.
55
56
 
56
57
  ## Gap analysis (present → desired)
57
- State the **present state** and the **desired state**; the delta is the work, and the
58
- **unknowns in the delta are the gaps**. Drive the count of open gaps toward zero before
59
- handing off to `/rite-define`. Mark each gap inline with `[NEEDS CLARIFICATION: question]`.
58
+ State the present and desired states. Their delta defines the work; unknowns in that
59
+ delta are gaps. Resolve them before `/rite-define`. Mark each gap inline with
60
+ `[NEEDS CLARIFICATION: question]`.
60
61
 
61
- ## Turn gaps & issues into questions WITH options: you recommend, the human decides
62
- For each material gap/issue (one that changes scope, placement, data model, UX, security,
63
- migration risk, or acceptance), **put it to the human**: one gap at a time, as a ranked
62
+ ## Present gaps and issues as options
63
+ For each material gap or issue that changes scope, placement, data model, UX, security,
64
+ migration risk, or acceptance, **ask the human** one gap at a time with a ranked
64
65
  option set with the recommended option **first and marked `(Recommended)`** plus an escape
65
66
  hatch (via `AskUserQuestion` in HITL):
66
67
  ```
@@ -70,15 +71,18 @@ hatch (via `AskUserQuestion` in HITL):
70
71
  3. <alternative> — <implication>
71
72
  4. Something else — I'll describe it
72
73
  ```
73
- Investigate and recommend; don't settle a material decision yourself. Confidence in the answer
74
- lowers the *cost* of the question (a one-pick confirm), not its owner: present the set anyway.
74
+ Investigate and recommend, but do not settle a material decision. High confidence may
75
+ make the answer a one-pick confirmation; it does not change the decision owner.
75
76
  Only a **genuinely reversible, low-impact** gap is decided and recorded in `assumptions.md`
76
77
  without asking. Full render contract + AFK behaviour: [`afk-hitl.md`](../../devrites-lib/reference/standards/afk-hitl.md).
77
78
 
78
79
  ## Done when
79
80
  - The shipped archive was checked for prior art; any overlap was surfaced to the human.
80
- - The real problem, current behavior, placement, and what-it-resolves are written down.
81
+ - The problem, current behavior, placement, and outcome are written down.
81
82
  - Every issue has a disposition; every material gap is resolved **by a human pick** from its
82
83
  option set (or explicitly deferred as non-blocking), not settled silently on your confidence.
83
- - No blocking `[NEEDS CLARIFICATION]` remains: the spec is **fully covered and correctly
84
- placed**. This is the `/rite-spec` readiness gate before `/rite-define` plans it.
84
+ - Every foreseeable build-time human prerequisite is resolved, assigned, or justified as an
85
+ action-time gate; objective repair/retry work is not disguised as a question.
86
+ - No blocking `[NEEDS CLARIFICATION]` remains. The spec covers the gaps found during
87
+ authoring and records correct placement. This is the `/rite-spec` readiness gate
88
+ before `/rite-clarify` performs the systematic topology scan.
@@ -17,13 +17,17 @@ deferred** (logged and non-blocking), never silently skipped:
17
17
  - [ ] **Integration**: external systems / APIs / contracts (or "none").
18
18
  - [ ] **Non-functional**: auth, sensitive data, latency / scale (or "n/a").
19
19
  - [ ] **Acceptance**: how each requirement is *proven* (test / observation).
20
+ - [ ] **Human prerequisites**: credentials, approval windows, irreversible action-time gates
21
+ (or "none").
20
22
 
21
23
  A blocking gap in any dimension keeps the interview open; a deferred one goes to
22
24
  `questions.md` and doesn't block. This feeds the `/rite-spec` readiness gate.
23
25
 
24
26
  ## Spec question boundary
25
- - Things the codebase answers (read it first).
26
- - Reversible implementation details (decide and note as an assumption).
27
+ - Things the codebase, prior decisions, or authoritative docs answer (search them first).
28
+ - Reversible implementation and test details (decide and note as an assumption).
29
+ - Objective tooling/environment failures (record the prerequisite or technical blocker; never
30
+ ask the human to authorize the agent's repair work).
27
31
  - Everything at once "to be thorough." Thoroughness is depth on the few that matter.
28
32
 
29
33
  ## Record
@@ -1,27 +1,26 @@
1
- # Spec-quality checklists: "unit tests for the English"
1
+ # Spec-quality checklists
2
2
 
3
- Before the spec hands off to `/rite-define`, test the **requirement prose itself** the way you'd
4
- unit-test code: is each requirement complete, unambiguous, and measurable? These checklists
5
- interrogate the *writing*, not the implementation. There is no code to run yet. A criterion like
6
- "the banner is prominent" passes a human skim and fails here ("prominent" is unquantified).
7
- Catching it now is a one-line spec edit; catching it at `/rite-prove` is a reslice.
3
+ Before `/rite-define`, check that each requirement is complete, unambiguous, and
4
+ measurable. These checklists evaluate the prose, not the implementation. For example,
5
+ "the banner is prominent" fails because "prominent" has no threshold. Fixing that in
6
+ the spec avoids a later reslice.
8
7
 
9
- **Not implementation tests.** A checklist item asks "is *export* defined for an empty dataset?":
10
- it does **not** ask "does `exportCsv()` handle `[]`?". The first tests the spec; the second is
11
- `/rite-vet`'s test-plan and `/rite-prove`'s job. These files never name a function, file, or library.
8
+ These are not implementation tests. Ask "is *export* defined for an empty dataset?", not
9
+ "does `exportCsv()` handle `[]`?". Implementation checks belong to `/rite-vet` and
10
+ `/rite-prove`. These files never name a function, file, or library.
12
11
 
13
12
  ## Output: one file per requirement domain
14
13
 
15
- Emit `.devrites/work/<slug>/checklists/<domain>.md`, one per domain the spec covers (skip
16
- a domain the spec marks "none"). The domains mirror the interview taxonomy, so a gap here maps to a
17
- `devrites-interview` dimension:
14
+ Emit `.devrites/work/<slug>/checklists/<domain>.md`, one per domain the spec covers.
15
+ Skip a domain marked "none". The domains match the interview taxonomy, so each gap maps
16
+ to a `devrites-interview` dimension:
18
17
 
19
18
  | Domain file | Tests the prose of |
20
19
  |---|---|
21
20
  | `functional.md` | Functional requirements + scenarios: is each capability stated, bounded, testable? |
22
21
  | `data-model.md` | Key entities / data model: shapes, fields, lifecycle, relationships (skip if "none"). |
23
22
  | `interaction.md` | API / UI impact + UX states: every screen state and contract named (skip if no UI/API). |
24
- | `non-functional.md` | Constraints, auth / data sensitivity, latency / scale / compatibility budgets. |
23
+ | `non-functional.md` | Constraints, auth / data sensitivity, latency / scale / compatibility budgets, human-only proof prerequisites. |
25
24
  | `edge-cases.md` | Empty / boundary / invalid / concurrent / failure paths the requirements imply. |
26
25
 
27
26
  ## Each item: a question, a verdict, the line it interrogates
@@ -41,11 +40,11 @@ Verdict is `pass` / `fail` / `n/a`. A `fail` carries a severity:
41
40
  - **CRITICAL:** the ambiguity would change the build or its acceptance: an unquantified
42
41
  acceptance/success criterion, an incomplete enumeration in a requirement, an ambiguous data
43
42
  shape, an undefined edge case on a stated flow, a contradictory pair of requirements.
44
- - **minor:** vague but non-load-bearing prose. Record it; it does not block.
43
+ - **minor:** vague but nonessential prose. Record it; it does not block.
45
44
 
46
- ## The question bank (seed: extend per domain)
45
+ ## Question bank
47
46
 
48
- Each question tests one of the failure modes of requirement prose:
47
+ Each question checks one requirement-prose failure mode:
49
48
  - **Measurability:** every "good / fast / prominent / simple / secure" carries a number, a budget,
50
49
  or a named reference. No adjective stands in for a threshold.
51
50
  - **Completeness:** every enumeration is closed (no "etc."); every requirement with a precondition
@@ -56,18 +55,20 @@ Each question tests one of the failure modes of requirement prose:
56
55
  - **Testability:** each acceptance criterion is binary and names (or clearly implies) its evidence.
57
56
  A criterion only provable by reading code is a fail.
58
57
  - **Consistency:** no requirement contradicts another, the data model, or a non-goal.
58
+ - **Non-functional:** each NFR names affected REQ/AC IDs or a bounded `global` scope;
59
+ human-only proof prerequisites name their owner.
59
60
 
60
- ## How it feeds the readiness gate
61
+ ## Readiness gate
61
62
 
62
- The spec **Readiness gate** (bottom of [`spec-template.md`](spec-template.md)) folds these in: every
63
+ The spec **Readiness gate** at the bottom of
64
+ [`spec-template.md`](spec-template.md) requires every
63
65
  emitted `checklists/<domain>.md` must reach `Verdict: pass` (zero CRITICAL fails) before the gate
64
66
  passes. Minor fails are logged, not blocking. A single open CRITICAL keeps the spec `Status: Draft`.
65
- `/rite-define` reads the checklists at its step 0 and **hard-blocks while any CRITICAL is unchecked**;
66
- a spec that skips the checklists is treated as not-yet-scored: define stops and routes back here.
67
+ `/rite-define` reads the checklists at step 0 and **hard-blocks while any CRITICAL is
68
+ unchecked**. A spec without checklists is not yet checked, so define stops and routes
69
+ back here.
67
70
 
68
71
  ## Discipline
69
- - Score honestly. A checklist you pass by softening the *question* instead of the *spec* is the
70
- spec-quality version of weakening a test to go green. It defeats the gate.
72
+ - Score honestly. Do not soften a checklist question to pass a weak spec.
71
73
  - Don't pad. Five real questions that find one CRITICAL beat thirty rubber-stamped rows.
72
- - These are *English* tests. The moment a question needs a function name to answer, it belongs in
73
- `/rite-vet`'s `test-plan.md`, not here.
74
+ - If a question needs a function name, it belongs in `/rite-vet`'s `test-plan.md`.
@@ -1,13 +1,13 @@
1
1
  # `spec.md` template
2
2
 
3
3
  Write the product contract: WHAT users get, WHY it matters, how success is
4
- measured, and what is out of scope. Keep HOW in `plan.md`; put topology and
4
+ measured, and what is out of scope. Keep HOW in `plan.md`; put technical topology and
5
5
  diagrams in `architecture.md` / `flows.md`; put coverage in `traceability.md`.
6
6
 
7
7
  Rules:
8
8
 
9
9
  1. Mark unknowns with `[NEEDS CLARIFICATION: <question>]`; blocking unknowns
10
- stop `/rite-define`.
10
+ stop `/rite-clarify`.
11
11
  2. Use stable IDs: `REQ-001` for requirements and `AC-001` for acceptance.
12
12
  3. Link to source artifacts instead of duplicating them.
13
13
  4. Keep the file compact. If it exceeds the schema budget, add
@@ -84,11 +84,17 @@ Use `resolved/test`, `resolved/judgment`, `dismissed`, or `unresolved`.
84
84
  - Does not own: <adjacent area>.
85
85
  - Placement summary: <one-line module/layer summary>; full technical map lives in `architecture.md`.
86
86
 
87
+ ## Coverage seed
88
+ - Actors/journeys/components: <material surfaces discovered while authoring>.
89
+ - States/data/contracts/integrations: <material boundaries discovered>.
90
+ - Operations/proof surfaces: <configuration, observability, rollout/rollback, evidence constraints>.
91
+
87
92
  ## References
88
93
  - `brief.md` - request, objective, non-goals, success definition.
89
94
  - `architecture.md` - technical placement and integration points.
90
95
  - `flows.md` - diagrams when useful.
91
96
  - `decisions.md` - ADR-style product/technical decisions.
97
+ - `decision-coverage.md` - topology scan and clarity verdict once `/rite-clarify` runs.
92
98
  - `traceability.md` - AC/REQ coverage once `/rite-define` runs.
93
99
  - `design-brief.md` - UI direction when UI is in scope.
94
100
 
@@ -107,4 +113,5 @@ Use `resolved/test`, `resolved/judgment`, `dismissed`, or `unresolved`.
107
113
  - [ ] Non-goals and scope boundaries are explicit.
108
114
  - [ ] Architecture/flows/decisions are linked out instead of duplicated here.
109
115
  - [ ] UI work has `design-brief.md`; non-UI work states UI is out of scope.
116
+ - [ ] Coverage seed names the material surfaces `/rite-clarify` must scan.
110
117
  ```
@@ -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
 
@@ -5,15 +5,13 @@ argument-hint: "[feature-slug] [--mode expand|selective|hold|reduce]"
5
5
  user-invocable: true
6
6
  ---
7
7
 
8
- # /rite-temper: temper the spec before you plan
8
+ # /rite-temper: review scope and risk before planning
9
9
 
10
- Take a readied spec and **temper** it: heat it (raise ambition on the *outcome*), then
11
- quench it (pre-mortem + prune the *solution surface*): stronger and less brittle. The one
12
- DevRites step that decides scope/ambition on a written spec and folds the result into the
13
- canonical contract, so `/rite-define` plans the **hardened** spec. Optional for small work
14
- (significance-gated: auto-skips low-stakes specs), but always invoked inside
15
- `/rite-autocomplete`. **Read the active workspace first**; if there's no readied
16
- `spec.md`, tell the user to run `/rite-spec`.
10
+ Review a readied spec for outcome ambition, scope, pre-mortem risks, and unnecessary
11
+ solution surface. Fold accepted decisions into the canonical contract before
12
+ `/rite-define`. This step is optional for small work and skips low-stakes specs, but
13
+ `/rite-autocomplete` always invokes it. **Read the active workspace first**; if there
14
+ is no readied `spec.md`, tell the user to run `/rite-spec`.
17
15
 
18
16
  ## Rules consulted (read on demand from `.claude/skills/devrites-lib/reference/standards/`)
19
17
  Pull on demand: `patterns.md` +
@@ -23,65 +21,70 @@ invent one), `documentation.md` (ADR-style `decisions.md` entries), `afk-hitl.md
23
21
  that needs more than the default pre-mortem) selected by the section's risk).
24
22
 
25
23
  ## Operating rules
26
- - **Ambition on outcomes, minimalism on the surface.** Raise the success bar and solve the
27
- *real* problem; never add speculative capability/abstraction. The reconciliation hinge:
28
- bigger ambition, smaller surface.
29
- - **Every scope change routes through the Spec Drift Guard:** it only becomes real by being
30
- written into `spec.md` as a recorded, confirmable decision. Expansion is **opt-in** (HITL
24
+ - **Raise outcome ambition without expanding the solution unnecessarily.** Solve the
25
+ underlying problem without adding speculative capability or abstraction.
26
+ - **Route every scope change through the Spec Drift Guard.** A scope change takes effect
27
+ only when `spec.md` records the confirmed decision. Expansion is **opt-in** (HITL
31
28
  confirm; AFK pauses: see autocomplete policy). Nothing auto-grows into the build.
32
- - **Bound ambition by reversibility.** Auth / migration / public-API / data-model touches get
33
- the *opposite* of ambition: maximum conservatism; they always pause (irreversible-risk list).
29
+ - **Apply maximum caution to hard-to-reverse changes.** Auth, migration, public API, and
30
+ data-model changes always pause under the irreversible-risk list.
34
31
  - **Honest verdict.** Never round "needs work" up to "ready"; record every scope call's *why*.
32
+ - **Search before asking.** Apply `afk-hitl.md` decision ownership; only human-owned calls
33
+ enter the interactive walk.
35
34
  - **You write; the reviewer judges.** You are the single canonical writer (`strategy.md` +
36
35
  the spec edits); the reviewer agent is read-only.
37
- - **Demand the spec-quality checklists for big features.** `/rite-temper` only fires on
38
- significant specs: exactly where vague requirement prose is most expensive. Before hardening,
36
+ - **Require spec-quality checklists for significant features.** Before hardening,
39
37
  confirm `checklists/<domain>.md` exist and pass (`rite-spec/reference/spec-checklists.md`); a
40
38
  scope expansion you fold in **adds its own** rows (new Success/Acceptance criteria get
41
- "unit-tested for English" too). A folded expansion with an unquantified criterion is a CRITICAL
42
- fail that re-opens the readiness gate.
39
+ checklist rows too). A folded expansion with an unquantified criterion is a CRITICAL
40
+ failure that reopens the readiness gate.
43
41
 
44
42
  ## Workflow
45
43
  0. **Read `.claude/skills/devrites-lib/reference/standards/core.md`**, then run
46
44
  `devrites-engine preamble` for deterministic workspace orientation.
47
- Then read the workspace: `spec.md` (+ `decisions.md`,
45
+ Then read the workspace: `spec.md`, `decision-coverage.md` (+ `decisions.md`,
48
46
  `assumptions.md`, `design-brief.md` if UI), `state.md`. Require `Spec gate: passed`: else
49
- STOP → `/rite-spec`. If a plan already exists, scope changes route through `/rite-plan
47
+ STOP → `/rite-spec`. Require `Decision coverage: CLEAR`: else STOP
48
+ `/rite-clarify`. If a plan already exists, scope changes route through `/rite-plan
50
49
  repair` (record in `drift.md`), not a blind spec edit.
51
50
  1. **Significance test:** [`reference/significance.md`](reference/significance.md). Low-stakes
52
- / shape-not-meaning work → write the one-line `skipped — low stakes (<trigger>)` verdict to `strategy.md`,
51
+ / shape-not-meaning work → write the exact one-line `skipped — low stakes (<trigger>)` verdict to `strategy.md`,
53
52
  set `state.md` `Next step: /rite-define`, and recommend it. Otherwise fire the full pass below.
54
53
  2. **FORWARD pass + mode selection:** [`reference/scope-modes.md`](reference/scope-modes.md).
55
54
  First, the **one-sentence-intent test**: state the whole change's intent in a single sentence.
56
55
  If you can't without an "and" that joins two unrelated outcomes, it is **two features**: the
57
- sharpest scope-creep signal there is; recommend splitting the spec (or narrowing this one) before
58
- tempering further. Then diverge on the *outcome* (the 10-star version of the real problem), and
59
- commit **exactly one** scope mode (`expand` opt-in · `selective` · `hold-rigor` · `reduce-to-MVP`)
60
- with its rationale and the **hinge** (what would change the call). `$ARGUMENTS` `--mode` is a
56
+ scope-creep signal; recommend splitting or narrowing the spec before continuing.
57
+ Then consider the 10-star outcome for the underlying problem and choose **exactly one**
58
+ scope mode (`expand` opt-in · `selective` · `hold-rigor` · `reduce-to-MVP`) with its
59
+ rationale and the condition that would change the choice. `$ARGUMENTS` `--mode` is a
61
60
  hint, not a command.
62
61
  3. **INVERSION pass:** pre-mortem in past tense ("it shipped and failed: what went wrong"),
63
62
  each top risk carrying likelihood + mitigation + the slice it will bind to; then the **YAGNI
64
63
  ledger** (each candidate scope item gets the "imagine the later refactor" test; defer unless
65
64
  now-cost is trivial AND deferred-cost is large).
66
- - **Deepen on demand.** When a specific scope call, requirement, or risk needs sharper thinking
67
- than the default pre-mortem gives, pull the 3-5 techniques from
65
+ **Interruption pre-mortem:** audit the spec forecast and assumptions for unresolved behavior,
66
+ proof prerequisites, approvals, access, and irreversible gates. Resolve facts and reversible
67
+ details now; retain only unavailable-pre-code or mandatory action-time checkpoints.
68
+ - **Deepen on demand.** When a scope decision, requirement, or risk needs more analysis
69
+ than the default pre-mortem provides, choose 3-5 techniques from
68
70
  [`elicitation.md`](../devrites-lib/reference/standards/elicitation.md) whose *when-to-reach-for-it* matches that
69
71
  section's risk (irreversible decision → Red-Team/Blue-Team + Assumption Audit; sizing → Delphi;
70
- vague requirement → Steelman-then-Attack), offer them, and run the chosen one **on that one
71
- section**. Record what it changed, not that you ran it. Optional: the default passes stand on
72
- their own.
72
+ vague requirement → Steelman-then-Attack), offer them, and run the chosen one **on that
73
+ section**. Record what changed, not the technique name. The default passes remain
74
+ sufficient when no deeper analysis is needed.
73
75
  4. **Score the 9 dimensions:** [`reference/review-dimensions.md`](reference/review-dimensions.md).
74
76
  Cite evidence *before* the band; **gate on the floor** (the weakest dimension, not an average).
75
77
  **Completion:** all nine dimensions have cited evidence, a band, and one explicit floor verdict.
76
- 5. **Walk the findings WITH the human: do not batch-dump.** The artifact is the *output* of an
77
- interactive review, not a substitute for it: surface each material scope call / finding via
78
+ 5. **Review human-owned findings with the human; do not batch them.** `strategy.md`
79
+ records the interactive review but does not replace it. Present each material scope decision through
78
80
  `AskUserQuestion`, one at a time, best-guess + **why**. Each material scope call ends as a
79
81
  **recorded decision**: a resolved `questions.md` qid (HITL) or a `decisions.md` ADR (AFK):
80
- so the walk leaves an auditable trail, not just chat. (AFK gate policy is single-sourced in
82
+ so the review leaves an auditable record outside chat. (AFK gate policy is single-sourced in
81
83
  [`reference/significance.md`](reference/significance.md): `hold-rigor` + `reduce-to-MVP`
82
84
  auto-apply, **any `expand` is a blocking pause**, irreversible-risk always pauses.)
85
+ Apply objective clarity, mitigation, and assumption fixes directly.
83
86
  6. **Write `strategy.md` + fold back:** [`reference/strategy-template.md`](reference/strategy-template.md).
84
- **One drift rule (decide by whether a plan exists):** *no `plan.md` yet* (the normal pre-define
87
+ **Choose the drift path based on whether a plan exists:** *no `plan.md` yet* (the normal pre-define
85
88
  case) → update `spec.md` **through the Spec Drift Guard**. *Success criteria* **and**
86
89
  *Acceptance criteria* for each opt-in expansion / cut, **Non-goals** for every deferred item,
87
90
  *Constraints* **and** *Risks* the pre-mortem demands, and the gaps/decisions table; *`plan.md`
@@ -90,22 +93,33 @@ that needs more than the default pre-mortem) selected by the section's risk).
90
93
  decision · why-not · what-would-change-it) and `assumptions.md` (every "we'll probably need X" →
91
94
  assumption-to-verify). **Every scope delta must carry a recorded human decision**: a resolved
92
95
  `questions.md` qid (HITL) or a `decisions.md` ADR (AFK within the ceiling); a folded change with
93
- no recorded decision is the batch-dump failure. **Re-check the spec Readiness gate** (it fails if
94
- any folded scope delta lacks its decision). Update `state.md`: `Phase: temper`,
96
+ no recorded decision is invalid. **Re-check the spec Readiness gate** (it fails if
97
+ any folded scope delta lacks its decision or leaves a foreseeable human build choice).
98
+ After any edit to `brief.md`, `spec.md`, `decisions.md`, `assumptions.md`, or
99
+ `questions.md`, re-scan the affected coverage rows, assumption audit, residual uncertainty,
100
+ and closed gates. Partial/Missing, an unowned material assumption, or an open
101
+ blocking/escalating question routes `/rite-clarify`/HITL; never refresh past it. Only after the
102
+ matrix is re-closed, run `devrites-engine readiness-digest coverage <slug>` and replace the
103
+ complete `Coverage inputs SHA-256` line in `decision-coverage.md`.
104
+ Update `state.md`: `Phase: temper`,
95
105
  `Next step: /rite-define`; on a blocking pause (expand / irreversible / a dimension still below
96
106
  bar) write the `Awaiting human` block + `Status: awaiting_human` before stopping.
97
107
  7. **Adversarial verification loop:** dispatch [`devrites-strategy-reviewer`](../../agents/devrites-strategy-reviewer.md)
98
- (fresh context, **only** the hardened spec + the rubric: no authoring reasoning). Resolve
108
+ through the file-backed fresh-context contract in
109
+ [`agents.md`](../devrites-lib/reference/standards/agents.md), with **only** the hardened
110
+ spec + rubric: no authoring reasoning. Resolve
99
111
  actionable findings by editing `spec.md`/`strategy.md`, re-dispatch; **cap ≤3 iterations**. A
100
- dimension still below bar after 3 blocking question (HITL) or AFK gate-ceiling entry;
101
- irreversible-risk findings always pause. If sub-agents are unavailable, do the independent
102
- rubric pass yourself in a separate read, discarding the authoring reasoning (a flagged
103
- fallback, not an independent review).
112
+ dimension still below bar after 3 is classified by decision ownership: a product/scope/risk
113
+ choice becomes a blocking question; an objective spec defect stays blocked with the exact
114
+ required edit and routes to `/rite-spec`, not `/rite-resolve`. Irreversible-risk findings
115
+ always pause. Use the shared capability ladder; an inline final-rung pass is labeled
116
+ `independence: fallback`, never an independent review. After an accepted edit to a
117
+ coverage-bound input, repeat step 6's revalidation and digest refresh before handoff.
104
118
  8. **STOP.** Report the mode, the scope deltas, and the floor verdict; recommend `/rite-define`.
105
119
 
106
- > **Mid-flight discipline.** When tempted to dump findings into `strategy.md` and skip the
107
- > walk-through, expand the surface (not the outcome), grow scope without the Drift Guard, or
108
- > score before citing evidence: see [`reference/anti-patterns.md`](reference/anti-patterns.md).
120
+ > **Mid-flight discipline.** Do not replace the interactive review with `strategy.md`,
121
+ > expand implementation surface without need, grow scope outside the Drift Guard, or score
122
+ > before citing evidence. See [`reference/anti-patterns.md`](reference/anti-patterns.md).
109
123
 
110
124
  ## Output
111
125
 
@@ -115,12 +129,13 @@ Default success shape:
115
129
  ```
116
130
  Done: spec tempered for <slug>; mode <expand|selective|hold-rigor|reduce-to-MVP|skipped-low-stakes>.
117
131
  Changed: strategy.md, spec.md, decisions.md, assumptions.md
118
- Evidence: dimension floor <band>; reviewer loop <n>; spec readiness re-checked pass
132
+ Evidence: dimension floor <band>; reviewer loop <n>; spec readiness + decision coverage re-checked pass
119
133
  Open: <none | n deferred non-goals>
120
134
  Next: /rite-define
121
135
  Record: .devrites/work/<slug>/strategy.md
122
136
  ↻ Hygiene: /clear before /rite-define
123
137
  ```
124
138
  If readiness is blocked, use the shared `Stopped / blocked` form and route `Fix:`
125
- to `/rite-spec`; do not recommend `/rite-define`.
139
+ to `/rite-clarify` for an uncovered decision surface or `/rite-spec` for an objective
140
+ spec defect; do not recommend `/rite-define`.
126
141
  **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.