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,140 +1,135 @@
1
1
  # Slice-wright dispatch
2
2
 
3
- How `/rite-build` hands the **build core** of one slice to `devrites-slice-wright`: the
4
- fresh-context, **write-capable** executor under `.claude/agents/`. Loaded on demand by
5
- `/rite-build`; not a skill itself. Sibling of
6
- [`../../devrites-lib/reference/parallel-dispatch.md`](../../devrites-lib/reference/parallel-dispatch.md)
7
- (the read-only reviewer fan-out): same isolation principle, opposite direction: this one
8
- **writes**.
9
-
10
- Pattern: the orchestrator owns the **gates and the workspace**; the wright owns the **writing**.
11
- Brief it precisely, in a clean context, with only the slice contract, then doubt, record, and
12
- gate its return.
13
-
14
- ## Why a fresh context writes the slice
15
- The orchestrator's window is full of spec investigation, planning, prior slices, and tool
16
- output: the exact "lost-in-the-middle" load that degrades instruction-following and pulls the
17
- model toward generic code. The wright starts clean and sees only the contract, so it holds the
18
- slice boundary strictly and writes to the *project's* idiom instead of drifting. Single-threaded
19
- by design: **one** wright per slice, never a parallel fan-out of writers *sharing a tree*:
20
- concurrent writers on one working tree make conflicting implicit decisions and produce incoherent
21
- code. The one sanctioned exception is a **forge** slice, which competes K candidates in *isolated*
22
- worktrees and lands exactly one: no tree ever has two authors, so the invariant holds (see
23
- [Forge](#forge--competing-candidates-the-deliberate-exception)).
24
-
25
- ## The contract `/rite-build` sends
26
- One `Task` call to `devrites-slice-wright` carrying everything the writer needs and nothing it
27
- doesn't:
3
+ `/rite-build` delegates one settled slice or correction set to
4
+ `devrites-slice-wright`. The root orchestrator owns scope, human questions,
5
+ `.devrites/**`, gates, reconciliation, and routing. The wright is the only source/test
6
+ writer and never invokes another agent.
7
+
8
+ The universal packet, result, budget, await, retry, and host fallback contract is
9
+ [`standards/agents.md`](../../devrites-lib/reference/standards/agents.md). This file adds
10
+ only the source-write lifecycle.
11
+
12
+ ## Prepare and dispatch
13
+
14
+ 1. Derive the smallest exact file allowlist from the selected slice, current code
15
+ placement, and accepted correction set. Entries are normalized project-relative file
16
+ paths: no directories, globs, traversal, symlink escapes, duplicates, or
17
+ `.devrites/**`.
18
+ 2. Write that list, one path per line, to
19
+ `.devrites/work/<slug>/.wright-allowlist` (or the active compatibility workspace).
20
+ The root owns this file; the wright's returned `Files changed` is evidence, never
21
+ authorization. If a necessary unlisted path appears, the wright stops and returns it.
22
+ 3. Create `agent-packet/v1` for `devrites-slice-wright`. Put the identical paths in
23
+ `scope.allowed_repo_writes`; include the slice goal, verbatim acceptance, boundary,
24
+ exact context paths, test-plan targets, and applicable standards. Do not include the
25
+ root's implementation reasoning.
26
+ 4. Immediately before a serial dispatch:
27
+
28
+ ```bash
29
+ devrites-engine reconcile snapshot
30
+ devrites-engine stuck log "$(cat .devrites/ACTIVE 2>/dev/null)" dispatch "<slice id>"
31
+ ```
32
+
33
+ A Forge slice runs `forge plan` first, then takes this same snapshot; see
34
+ [`forge.md`](forge.md). The first snapshot captures the original dirty-tree baseline, private Git objects,
35
+ allowlist, and canonical-state fingerprint. A later snapshot after a clean check
36
+ refreshes only the dispatch boundary; it retains the original slice baseline.
37
+ 5. Fresh-context dispatch the wright through the capability ladder and await its typed
38
+ result. Never run two possible writers in one tree.
39
+
40
+ ## Forge candidate binding
41
+
42
+ [`forge.md`](forge.md) owns the state machine. This file owns the candidate packet:
43
+ use the same project-relative allowlist and slice contract, add only the manifest-recorded
44
+ candidate strategy, and set all five bindings before the first tool call:
45
+
46
+ ```text
47
+ DEVRITES_FORGE_RUN_ID
48
+ DEVRITES_FORGE_CANDIDATE
49
+ DEVRITES_FORGE_WORKER_ID
50
+ DEVRITES_FORGE_WORKER_PID
51
+ DEVRITES_FORGE_PROCESS_START
52
+ ```
53
+
54
+ The candidate cwd must equal its manifest worktree, and the environment is all-or-none.
55
+ Only a real adapter declared as `manifest-env-v1` may supply it. The live PID,
56
+ engine `forge process-token` value, and worker ID must match the prior `forge record ... started`
57
+ transition. A partial or mismatched binding denies the writer; return to the orchestrator
58
+ instead of widening scope. The candidate writes only source/tests in its own tree and
59
+ returns the normal typed artifact.
60
+
61
+ ## Validate the return before accepting it
62
+
63
+ Validate the `agent-result/v1` identity, baseline, budget, payload type, side effects,
64
+ and exact changed-file set. Before the root writes any canonical record, run:
28
65
 
66
+ ```bash
67
+ devrites-engine reconcile check; echo "reconcile rc=$?"
68
+ devrites-engine test-integrity; echo "test-integrity rc=$?"
69
+ devrites-engine package-existence; echo "package-existence rc=$?"
29
70
  ```
30
- Build one slice of the active DevRites feature. You have a clean context — this contract is
31
- the whole job.
32
-
33
- Workspace: .devrites/work/<slug>/
34
- Slice: <id name>
35
- Goal: <one or two sentences>
36
- Acceptance criteria: <the slice's criteria, verbatim>
37
- UI visual acceptance: <if UI state × viewport × input + target R-id/brief rule, verbatim from tasks.md>
38
- Scope boundary: <what it WILL and will NOT touch>
39
- Mode: <HITL | AFK> (+ AFK budget note if a cap is set)
40
-
41
- Targets (stay inside these — from touched-files.md): <paths>
42
- Interfaces / signatures to match: <if any>
43
- Read yourself: spec.md, plan.md, decisions.md, assumptions.md, rite-polish/reference/anti-ai-slop.md<, design-brief.md if UI>
44
- Rules in scope (.claude/skills/devrites-lib/reference/standards/): coding-style, error-handling, testing, patterns<, security if input/auth/data><, performance if hot path / query / large payload>
45
- Test completeness: write ≥1 asserting test for EVERY interactive element + user flow in this
46
- slice's test-plan.md interaction inventory, each at the right level (fields/elements →
47
- unit/component; critical journeys one E2E; never one-per-field). No element ships
48
- unverified — testing.md "Completeness". If the slice has no test-plan inventory, derive the
49
- element/flow list from the slice's own UI surface and cover it the same way.
50
-
51
- Apply your documented discipline (orient RED implement smallest complete → verify →
52
- return). Frontend slice build to design-brief.md with devrites-frontend-craft and close
53
- the slice's visual-acceptance deltas before returning. Uncertain
54
- framework fact → verify at the source. Code + tests only — do NOT write the workspace
55
- bookkeeping files; return that data. Return your structured artifact, not your transcript.
71
+
72
+ - Reconcile `5`: reject the result. Preserve pre-snapshot user work; restore only the
73
+ unauthorized slice delta; never widen scope from the writer's self-report.
74
+ - Test integrity `3`: a test was deleted, muted, focused, or de-asserted. Treat it as a
75
+ Critical protocol failure and correct it through the wright.
76
+ - Package existence `3`: verify the exact package/version and fix the bounded workflow
77
+ or dependency defect through recovery. It is not a reason to ask for retry approval.
78
+ - A setup/corrupt-baseline error blocks acceptance; never fall back silently to `HEAD`.
79
+
80
+ The clean reconcile check records that source has not changed since inspection. The
81
+ baseline and private object database stay open until every later gate succeeds.
82
+
83
+ ## Decisions, failures, and bounded recovery
84
+
85
+ After the immediate check, independently doubt every `Decisions stood` item. Human-owned
86
+ product, policy, public-contract, irreversible-risk, or human-only access decisions use
87
+ their real gate. Objective red tests, browser/runtime failures, missing technical
88
+ coverage, package-scanner defects, and review corrections stay agent-owned.
89
+
90
+ Classify each causal fingerprint through
91
+ [`cleanup-and-classify.md`](../../devrites-debug-recovery/reference/cleanup-and-classify.md).
92
+ The engine route is canonical; technical defects stay agent-owned.
93
+ Each objective root cause then shares one durable three-attempt budget:
94
+
95
+ ```bash
96
+ devrites-engine recovery route <class>
97
+ devrites-engine recovery record --class <class> "<root cause>" "<exact failure>" <slug>
98
+ devrites-engine recovery check "<root cause>" <slug>
56
99
  ```
57
100
 
58
- Rules:
59
- - **One `Task` call, one wright.** Never dispatch two writers on the same slice.
60
- - **No author reasoning beyond the contract.** Give the slice spec, not your analysis of *how*
61
- to code it: a clean, undirected read is the point.
62
- - **Name the boundary explicitly.** The scope boundary is the single most load-bearing field; an
63
- underspecified one is the main cause of drift.
64
-
65
- ## On return: the orchestrator's job (don't delegate these)
66
- **You never edit source here.** The wright is the only writer of code + tests; you write only
67
- `.devrites/` bookkeeping. Every remedy below is **continue the same wright once** or **stop +
68
- escalate**: never an inline patch. You snapshotted the tree before dispatch (`devrites-engine reconcile snapshot`); the reconcile check in step 4 proves no source changed outside the wright's claimed
69
- set.
70
-
71
- 1. **Doubt the surfaced decisions.** For each entry in the wright's `Decisions stood`, apply
72
- `devrites-doubt` (→ `devrites-doubt-reviewer`) before accepting: the writer must not grade
73
- its own decisions. The wright's return is the not-yet-load-bearing moment (slice not `built`,
74
- not merged), so this post-return doubt is still pre-commit. Irreversible-risk items always
75
- pause, and an irreversible item that the wright filed under `Decisions stood` instead of
76
- `Escalation` is a protocol violation: pause and re-dispatch with it flagged out-of-bounds,
77
- don't doubt-and-accept.
78
- 2. **Honor escalations.** A non-empty `Escalation` do **not** mark the slice built. Write the
79
- `questions.md` entry + `state.md` `Awaiting human` (blocking gate), or route a scope change
80
- through `/rite-plan repair` (Spec Drift Guard). You are the canonical writer of these files.
81
- 3. **Fail-on-red.** If `Gates` show red (or the wright couldn't verify), the slice is **not
82
- built**, and you do **not** fix the code. First remedy: **continue the same wright once**
83
- (`SendMessage`, carrying the failing gate + real output) so it fixes in its own context:
84
- objective failures only (red gate / type / lint / missing coverage / UI browser-proof fail),
85
- never a contested decision. Still red after that one retry blocking question (AFK) or
86
- blocking gate (HITL); `Next: /rite-plan unblock`.
87
- An interactive element or user flow in the slice's test-plan interaction inventory left with
88
- **no asserting test** has the same standing as red: an unverified-element gap blocks the
89
- slice (don't mark it built). Continue the same wright to cover it, or record a blocker.
90
- 4. **Reconcile, then record.** First prove A1 held: write the wright's `Files changed` paths
91
- (one per line) to `.devrites/work/<slug>/.reconcile-claimed` and run `devrites-engine reconcile check`.
92
- **Exit 5 STOP**: a source file changed outside the wright's claimed set (A1 breach); revert
93
- it and re-dispatch, don't mark the slice built. Then persist the wright's artifact to
94
- `state.md`, `evidence.md`, `touched-files.md` (and `browser-evidence.md` for UI) per
95
- [`evidence-standard.md`](evidence-standard.md). Evidence is the wright's real command output,
96
- not its say-so. Add a concern-ordered `## Review trail` to `touched-files.md` from the wright's changed paths and summary so a human can review by design intent instead of file order. **Persist every `Decisions stood` entry to a `## Decisions stood` section in
97
- `decisions.md`, one line each ending `— doubt: <accept | reject-resolved | MISSING>`**:
98
- independent of the doubt step (step 1 above), so a skipped decision still lands on record for
99
- the seal's doubt-coverage cross-check (`- none` when the wright stood nothing). Then tick AFK if
100
- `.devrites/AFK` is present (`devrites-engine tick-afk`; exit 3 → STOP).
101
-
102
- ## Forge: competing candidates (the deliberate exception)
103
-
104
- The single-writer rule forbids parallel writers **sharing one tree**. A `Forge: yes` slice
105
- (flagged by `/rite-vet` as a genuine architecture fork at Complexity ≥4) is the one sanctioned
106
- fan-out, and it keeps the rule intact by **isolation**: each candidate wright works in its own
107
- `git worktree`, sees the identical slice contract plus one **distinct strategy**, and never
108
- touches another candidate's tree. A read-only [`devrites-forge-judge`](../../../agents/devrites-forge-judge.md)
109
- then scores the finished candidates against acceptance + `test-plan.md` + `.devrites/principles.md`
110
- + the anti-slop charter, and the orchestrator lands **exactly one** winner's diff in the working
111
- tree. No tree ever has two authors; exactly one author's work ships. Everything downstream (doubt,
112
- fail-on-red, reconcile against the winner's claimed set, record) runs on the winner as if a single
113
- wright had built it.
114
-
115
- Full mechanics (strategy derivation, worktree setup, the judge contract, landing + grafting the
116
- winner, `forge-report.md`, AFK budgeting, and the worktree-unavailable fallback) live in
117
- [`forge.md`](forge.md).
118
-
119
- ## Fallback
120
- If the `Task` tool / sub-agent dispatch is unavailable, `/rite-build` runs the wright's
121
- discipline **inline** in its own context and flags it as a fallback (no clean-context benefit).
122
- The slice still gets the full one-slice cycle (orient → RED → implement → verify) under the
123
- same anti-slop charter; it just doesn't get the isolation. In this path the orchestrator is
124
- legitimately the writer, so write `.devrites/work/<slug>/.reconcile-inline` before editing: the
125
- reconcile gate (step 4) skips when that sentinel is present. Mirrors the reviewer-dispatch
126
- fallback in
127
- [`../../devrites-lib/reference/parallel-dispatch.md`](../../devrites-lib/reference/parallel-dispatch.md).
128
-
129
- ## Optional pre-block hook (defense in depth)
130
- `devrites-engine reconcile` is the **post-hoc** gate. It always runs and catches an A1 breach at record time.
131
- A companion **pre-block** hook, `devrites-engine hook a1-guard` (a `PreToolUse` matcher on
132
- `Edit|Write|MultiEdit`), stops the breach *before* the write lands. It is armed only inside the
133
- mid-build window (between `devrites-engine reconcile snapshot` and a clean `check`, keyed on `.reconcile-base`),
134
- allows the wright (subagent calls carry `agent_id`), the inline fallback (`.reconcile-inline`),
135
- and any `.devrites/` write, so it never touches `/rite-polish`, `/rite-quick`, or ordinary
136
- manual edits. It ships **observe-only** (logs would-be blocks to `.a1-guard.log`, never blocks);
137
- flip to enforce with `DEVRITES_A1_HOOK=enforce` or a `.devrites/work/<slug>/.a1-enforce` file once
138
- the log confirms it never flags the wright's own edits (older Claude Code builds may not populate
139
- `agent_id`: the log is the proof before you enforce). The post-hoc gate stands on its own; the
140
- hook is belt-and-suspenders.
101
+ Before every retry:
102
+
103
+ 1. update `.wright-allowlist` only for an accepted path still inside the settled slice;
104
+ 2. run `devrites-engine reconcile snapshot`.
105
+
106
+ That refresh requires the prior clean check, re-fingerprints root-owned state, and keeps
107
+ the original source baseline. Re-dispatch with the exact output, attempt count, and dead
108
+ ends. Then repeat reconcile and both integrity gates from zero. Clear recovery only after
109
+ green with `recovery clear --class <class> "<root cause>" <slug>`. An exhausted objective
110
+ failure becomes a technical blocker with its reproduction, not a `rite-resolve` question.
111
+
112
+ ## Close and record
113
+
114
+ When reconciliation, integrity, package, proof, and doubt gates all pass:
115
+
116
+ ```bash
117
+ devrites-engine reconcile close
118
+ ```
119
+
120
+ Only then persist `state.md`, `evidence.md`, `touched-files.md`, decision/doubt records,
121
+ and browser evidence. Keep the retained window across a genuine human wait that will
122
+ resume the same slice. Close it before abandoning the slice for a scope/plan transition.
123
+
124
+ ## Host fallback
125
+
126
+ Use named wright safely enforced generic fresh worker labelled inline fallback from
127
+ `standards/agents.md`. A generic worker is eligible only when the host preserves
128
+ recognized wright identity plus exact allowlist enforcement, or contains it in an
129
+ isolated/staged checkout. Post-hoc reconciliation alone cannot authorize an
130
+ instruction-only shared-tree writer.
131
+
132
+ When no safe fresh-context writer rung is callable, the root may execute the same bounded
133
+ wright discipline inline. Write `.reconcile-inline` after the initial snapshot so the legacy
134
+ A1 pre-hook recognizes the authorized fallback; reconciliation does **not** skip. The
135
+ same allowlist, baseline, integrity gates, and close command remain mandatory.
@@ -0,0 +1,90 @@
1
+ ---
2
+ name: rite-clarify
3
+ description: Run the topology-first decision-coverage scan after rite-spec and before strategy or architecture. Audit actors, journeys, states, data, integrations, operations, proof, assumptions, and must-NOT boundaries; close Partial/Missing rows and emit decision-coverage.md CLEAR. Use for missing/stale coverage or a missed pre-build product decision.
4
+ argument-hint: "[feature-slug]"
5
+ user-invocable: true
6
+ ---
7
+
8
+ # /rite-clarify: resolve product decisions
9
+
10
+ Run this required pass between spec and strategy. If the spec covers every material
11
+ decision, ask no questions. Otherwise stay until each material decision has an
12
+ owner. This phase settles behavior and constraints; `/rite-define` settles
13
+ implementation.
14
+
15
+ Reuse [`devrites-interview`](../devrites-interview/SKILL.md) in `/clarify mode`. Write
16
+ `decision-coverage.md` as scan evidence, not an interview transcript.
17
+
18
+ ## Rules consulted
19
+
20
+ Read `devrites-lib/reference/standards/core.md`, its `afk-hitl.md`, and
21
+ [`reference/decision-coverage.md`](reference/decision-coverage.md). Fresh evidence
22
+ dispatch uses
23
+ [`agents.md`](../devrites-lib/reference/standards/agents.md).
24
+
25
+ ## Rules
26
+
27
+ - Search code/docs/contracts first. Facts and reversible implementation/test choices
28
+ are agent-owned; ask only about product, scope, policy, irreversible risk, or human-only access.
29
+ - Enumerate the full topology before details so no sibling surface is omitted.
30
+ - Ask one coherent human-owned decision packet at a time. One packet may close several rows
31
+ only when owner and trade-off match; never ask permission for routine repair/retry.
32
+ - One scan may cap at five packets for cognitive load, but readiness has no question cap:
33
+ re-scan until clear.
34
+ - Material assumptions carry evidence, confidence, owner, validation, and consequence.
35
+
36
+ ## Workflow
37
+
38
+ 0. **Orient.** Run `devrites-engine preamble` and `snapshot`. Require `spec.md` plus
39
+ `Spec gate: passed`; otherwise STOP → `/rite-spec`. For a later-phase retrofit, run
40
+ `devrites-engine clarify-return enter <slug>` **before any pause**; this persists the
41
+ return cursor and enters `Phase: clarify`.
42
+ 1. **Enumerate topology** from the spec, references, live code, and prior decisions: actors,
43
+ journeys/components, states, data lifecycles, interfaces/integrations, operations, and
44
+ proof. Add omitted surfaces to the spec. **Completion:** every material surface appears
45
+ once with a source or canonical spec reference.
46
+ 2. **Scan coverage** with `devrites-interview /clarify mode` and the reference taxonomy.
47
+ Mark each surface Clear/Partial/Missing with evidence; include must-NOT and out-of-scope
48
+ behavior. Unmentioned never means not applicable. **Completion:** the matrix records every
49
+ surface with evidence.
50
+ 3. **Eliminate factual unknowns** through code intelligence, project/decision docs,
51
+ manifests/lockfiles, and authoritative external docs. Dispatch independent topology/fact
52
+ questions to `devrites-evidence-scout` (maximum three at once), await the cited dossiers,
53
+ and reconcile them in the root context. The root folds accepted facts into `spec.md` or
54
+ `assumptions.md`; the scout never asks or writes. **Completion:** each factual unknown is
55
+ source-backed or reclassified as an owned decision/assumption.
56
+ 4. **Audit assumptions and decisions.** Record the fields required above. For high-cost or
57
+ hard-to-reverse product/constraint choices, present two or three viable options, recommendation
58
+ first. A genuinely undecidable behavior may take one bounded `/rite-prototype` detour.
59
+ 5. **Close human-owned gaps** using the shared option-set contract: one highest-impact packet
60
+ per turn. Persist answers immediately in `spec.md` plus `decisions.md`/`questions.md`.
61
+ AFK remains within its gate ceiling; irreversible risk and principle exceptions pause.
62
+ 6. **Re-scan after edits** until each material row is `closed`, `agent-owned`,
63
+ `not-applicable`, or justified `deferred-nonblocking` with owner and validation gate.
64
+ Partial/Missing, an unowned material assumption, or an open blocking/escalating question
65
+ means `NEEDS CLARIFICATION`.
66
+ 7. **Write the verdict.** Update `decision-coverage.md`; success requires exactly one
67
+ `DevRites contract: devrites.readiness-artifacts.v2` field and exactly
68
+ `Decision coverage: CLEAR`. Normal state is `Phase: clarify`, `Next step: /rite-temper`.
69
+ A contract-neutral retrofit runs `devrites-engine clarify-return restore <slug>`; a
70
+ changed behavior/acceptance contract leaves the return cursor unconsumed, writes
71
+ `drift.md`, and routes `/rite-plan repair`. Normal first-pass flow sets `/rite-temper`.
72
+ 8. **STOP.** Run `devrites-engine progress`; hand off only on `CLEAR`.
73
+
74
+ ## Output
75
+
76
+ Run `devrites-engine progress`, then use the shared completion reply contract
77
+ ([`devrites-lib/reference/reply-contract.md`](../devrites-lib/reference/reply-contract.md)):
78
+
79
+ ```text
80
+ Done: decision coverage closed for <slug>; <n> topology surfaces scanned.
81
+ Changed: decision-coverage.md, spec.md, decisions.md, assumptions.md, questions.md
82
+ Evidence: Decision coverage: CLEAR; human packets <n>; agent-owned facts <n>
83
+ Open: none blocking; deferred-nonblocking <n>
84
+ Next: /rite-temper
85
+ Record: .devrites/work/<slug>/decision-coverage.md
86
+ ↻ Hygiene: /clear before /rite-temper
87
+ ```
88
+
89
+ If not clear, name the exact rows and next genuine decision packet. An objective spec defect
90
+ or factual search task never routes through `/rite-resolve`.
@@ -0,0 +1,61 @@
1
+ # Decision coverage contract
2
+
3
+ `decision-coverage.md` proves a topology-first scan ran; reference canonical IDs instead of
4
+ duplicating their prose.
5
+
6
+ ## Coverage taxonomy
7
+
8
+ For each material surface scan: outcome/scope/must-NOT; behavior, permissions, and all states;
9
+ domain/data lifecycle/invariants/order/concurrency; interfaces/integrations and failure
10
+ contracts; security/privacy/compliance/accessibility/performance/reliability/compatibility;
11
+ configuration/observability/support/rollout/rollback; and executable acceptance proof,
12
+ environment, credentials/approvals, and evidence limits.
13
+
14
+ ## Status vocabulary
15
+
16
+ - `closed`: the canonical artifact records the decision.
17
+ - `agent-owned`: a reversible technical choice is explicitly delegated to define/vet.
18
+ - `not-applicable`: evidence shows the dimension does not apply.
19
+ - `deferred-nonblocking`: pre-code evidence is impossible or the item is an explicit
20
+ non-goal; owner and validation gate are named.
21
+
22
+ `Partial`, `Missing`, open, unknown, or ownerless rows never produce `CLEAR`.
23
+
24
+ ## Artifact shape
25
+
26
+ ```markdown
27
+ # Decision coverage
28
+
29
+ DevRites contract: devrites.readiness-artifacts.v2
30
+ Decision coverage: <CLEAR | NEEDS CLARIFICATION>
31
+ Coverage inputs SHA-256: <exact value from `devrites-engine readiness-digest coverage <slug>`>
32
+
33
+ ## Topology
34
+ | Surface | Kind | Related IDs | Evidence |
35
+ | --- | --- | --- | --- |
36
+
37
+ ## Coverage matrix
38
+ | Surface | Dimension | Status | Canonical reference | Owner / validation gate | Consequence if wrong |
39
+ | --- | --- | --- | --- | --- | --- |
40
+
41
+ ## Assumption audit
42
+ | Assumption | Evidence | Confidence | Owner | Validation | Consequence if wrong |
43
+ | --- | --- | --- | --- | --- | --- |
44
+
45
+ ## Residual uncertainty
46
+ | Item | Why nonblocking | Owner | Validation gate |
47
+ | --- | --- | --- | --- |
48
+
49
+ ## Readiness verdict
50
+ No Partial, Missing, unowned material assumption, or unresolved blocking/escalating
51
+ question remains.
52
+ ```
53
+
54
+ Combine rows only when one decision and owner genuinely close them.
55
+
56
+ Run the digest command only after `brief.md`, `spec.md`, `decisions.md`,
57
+ `assumptions.md`, and `questions.md` are final for this clarification pass, then
58
+ write the current contract field exactly once and copy the digest's complete field line
59
+ verbatim. The build gate recomputes the digest and
60
+ rejects stale coverage. Any open blocking, validating, or escalating question
61
+ also prevents `CLEAR`.
@@ -5,20 +5,19 @@ argument-hint: "[feature-slug]"
5
5
  user-invocable: true
6
6
  ---
7
7
 
8
- # /rite-converge: make the code and the intent converge
8
+ # /rite-converge: compare live code with intent
9
9
 
10
- Read `spec.md` + `plan.md` + `tasks.md` as the **sole source of intent** (with
10
+ Read `spec.md`, `plan.md`, and `tasks.md` as the **sole source of intent** (with
11
11
  `.devrites/principles.md` as governing constraints), assess what the **live codebase**
12
12
  implements, and **append every unmet piece as a new traceable `SLICE-###`** at the
13
- bottom of `tasks.md` so `/rite-build` can finish it. The recovery bridge for work that fell
14
- out of sync with its plan: a half-built feature picked up cold, a `/rite-adopt`'d codebase
15
- that drifted from its derived spec, or a build that stalled mid-slice. **Read the active
13
+ bottom of `tasks.md` so `/rite-build` can finish it. Use this for a resumed half-built
14
+ feature, an adopted codebase that drifted from its derived spec, or a build that stalled
15
+ mid-slice. **Read the active
16
16
  workspace first**; if there's no `spec.md`/`plan.md`/`tasks.md`, tell the user which
17
17
  prerequisite skill to run.
18
18
 
19
- > **Not a diff tool.** `/rite-converge` assesses the **present state** of the code against
20
- > intent: no git, no branch comparison, no history. "What does this codebase do *now* vs
21
- > what the artifacts asked for", not "what changed since commit X". For a change-scoped
19
+ > **This is not a diff tool.** `/rite-converge` compares current code with intent. It
20
+ > does not use git history or compare branches. For a change-scoped
22
21
  > review use `/rite-review`; to prove a finished feature use `/rite-prove`.
23
22
 
24
23
  ## Rules consulted (read on demand from `.claude/skills/devrites-lib/reference/standards/`)
@@ -41,16 +40,20 @@ Pull on demand:
41
40
  - **Clean means byte-for-byte unchanged.** When the code already satisfies everything, leave
42
41
  `tasks.md` untouched (no empty convergence header) and report a clean result. Recommend
43
42
  `/rite-prove`.
44
- - **Intent is the artifacts, not your memory.** The spec/plan/tasks (+ principles) are the
43
+ - **Use artifacts as intent.** The spec, plan, tasks, and principles are the
45
44
  contract. If assessing reveals the *spec* is wrong (the code is right and the requirement is
46
45
  stale), that's **Spec Drift**: stop and route it through the Spec Drift Guard
47
46
  (`rite-build/reference/spec-drift-guard.md`) + a recorded decision; never paper over a spec
48
- bug by appending a task that "fixes" the code to a wrong requirement.
47
+ bug by appending a task that changes correct code to match a wrong requirement.
49
48
  - **Partial is not done.** Code that exists but is untested, half-wired, or covers only the
50
49
  happy path is an unmet gap: enqueue the remainder, don't round it up.
51
50
  - **Principles are non-negotiable.** A live violation of a declared invariant with no recorded
52
51
  exception is the top-severity gap, walked first. Absent/empty principles file → none declared
53
52
  → skip the check gracefully, never block for its absence.
53
+ - **Scout observes; root classifies and writes.** Use
54
+ [`agents.md`](../devrites-lib/reference/standards/agents.md). The evidence scout returns
55
+ live-code citations only; the controlling chat owns built/partial/absent calls and append-only
56
+ workspace changes.
54
57
 
55
58
  ## Workflow
56
59
  0. **Read `.claude/skills/devrites-lib/reference/standards/core.md`** first (the always-on
@@ -59,14 +62,16 @@ Pull on demand:
59
62
  any is missing, **STOP** and name the prerequisite (`/rite-spec` for a missing spec,
60
63
  `/rite-define` for a missing plan/tasks, `/rite-adopt` to onboard existing code). Do not
61
64
  produce partial output.
65
+ Require `decision-coverage.md` with `Decision coverage: CLEAR`; otherwise STOP →
66
+ `/rite-clarify`.
62
67
  2. **Load intent:** [`reference/convergence-assessment.md`](reference/convergence-assessment.md).
63
68
  From `spec.md`: buildable `AC-###` / `### Requirement:` scenarios (skip `## Success metrics`);
64
69
  from `plan.md`: architecture decisions + named touch-points (files/components the plan says
65
70
  get built); from `tasks.md`: existing slices + their `Satisfies:`; from
66
71
  `.devrites/principles.md`: the invariants.
67
72
  **Completion:** every buildable criterion, touch-point, slice output, and principle is in the assessment inventory.
68
- 3. **Run the mechanical backbone**, then read the code. `devrites-engine analyze` gives coverage +
69
- consistency; `devrites-engine coverage` gives the AC→slice→proven matrix. They catch *unmapped*
73
+ 3. **Run the mechanical checks**, then read the code. `devrites-engine analyze` gives coverage
74
+ and consistency; `devrites-engine coverage` gives the AC→slice→proven matrix. They catch *unmapped*
70
75
  criteria; they do **not** see whether mapped code is built and correct, for that,
71
76
  read the live code (code-intelligence index per `tooling.md`).
72
77
  ```bash
@@ -78,7 +83,9 @@ Pull on demand:
78
83
  [`reference/convergence-assessment.md`](reference/convergence-assessment.md)): every
79
84
  acceptance criterion / scenario, every plan touch-point, and every existing slice's stated
80
85
  Produces. A principle violated in the current code is its own top-severity gap.
81
- **Completion:** every inventory unit is classified once with live-code evidence.
86
+ Dispatch up to three independent inventory partitions to `devrites-evidence-scout` on the
87
+ same frozen candidate, await their dossiers, then reconcile the cited facts in the root
88
+ context. **Completion:** every inventory unit is classified once with live-code evidence.
82
89
  5. **Enqueue the remainder as new slices.** For each *partial* or *absent* unit, append a
83
90
  `## SLICE-###` (continue the numbering after the highest existing id) in the `rite-define`
84
91
  slice grammar, each with a `Satisfies:` line tracing to the AC/REQ it closes and a
@@ -87,10 +94,14 @@ Pull on demand:
87
94
  **Completion:** every partial/absent unit has one traceable appended slice, or the file is byte-for-byte unchanged.
88
95
  6. **Write append-only + bookkeeping.** Append the slice batch to `tasks.md` (nothing else in
89
96
  that file changes); refresh `traceability.md` (`devrites-engine coverage` → new rows for the
90
- appended slices); update `state.md` (`Phase: converge`, `Next step: /rite-build`; or, when
91
- nothing was unmet, `Next step: /rite-prove`). Append `decisions.md` for any material call.
97
+ appended slices). Appending a slice changes the plan input, so invalidate the prior vet:
98
+ update `state.md` to `Phase: plan`, `Next step: /rite-vet`, and set an existing
99
+ `eng-review.md` field to `Implementation readiness: NEEDS REPLAN`. When nothing was unmet,
100
+ leave the plan/vet verdict untouched and set `Next step: /rite-prove`. Append
101
+ `decisions.md` for any material call.
92
102
  7. **STOP.** Report units assessed, built / partial / absent counts, slices appended, and any
93
- principle violation found; recommend `/rite-build` (or `/rite-prove` if the code already
103
+ principle violation found; recommend `/rite-vet` when slices were appended (or
104
+ `/rite-prove` if the code already
94
105
  converged).
95
106
 
96
107
  ## Appended slice format
@@ -105,11 +116,9 @@ Convergence: 2026-07-07 # marks this as a convergence-appended slice, not a
105
116
  <all remaining canonical slice fields>
106
117
  ```
107
118
 
108
- > **Mid-flight discipline.** When tempted to rewrite an existing slice instead of appending, to
109
- > edit the code directly "while you're in there", to mark a happy-path-only implementation as
110
- > built, or to enqueue a task that bends the code to a spec you suspect is wrong: see
111
- > [`reference/anti-patterns.md`](reference/anti-patterns.md). Load it the moment you reach for
112
- > the excuse.
119
+ > **Mid-flight discipline.** Do not rewrite an existing slice, edit source, mark a
120
+ > happy-path-only implementation as built, or add work for a spec you suspect is wrong.
121
+ > See [`reference/anti-patterns.md`](reference/anti-patterns.md).
113
122
 
114
123
  ## Output
115
124
 
@@ -118,14 +127,15 @@ Convergence: 2026-07-07 # marks this as a convergence-appended slice, not a
118
127
  Default success shape:
119
128
  ```
120
129
  Done: convergence assessed for <slug>; <n> slices appended.
121
- Changed: tasks.md <appended|unchanged>, traceability.md, state.md
130
+ Changed: tasks.md <appended|unchanged>, traceability.md, state.md, eng-review.md <invalidated|unchanged>
122
131
  Evidence: units <built>/<total> built · <partial> partial · <absent> absent · principle violations 0
123
132
  Open: none
124
- Next: /rite-build
133
+ Next: /rite-vet
125
134
  Record: .devrites/work/<slug>/tasks.md
126
- ↻ Hygiene: /clear before /rite-build
135
+ ↻ Hygiene: /clear before /rite-vet
127
136
  ```
128
137
  When nothing was unmet, render the same green form with `Next: /rite-prove`.
129
138
  If spec drift or another blocker remains, use the shared `Stopped / blocked` form
130
139
  and route `Fix:` to `/rite-plan`; do not recommend `/rite-build`.
131
- **DO NOT write application code, rewrite existing slices, or edit spec.md/plan.md here**: convergence assesses and enqueues; `/rite-build` implements.
140
+ **DO NOT write application code, rewrite existing slices, or edit spec.md/plan.md here.**
141
+ This phase assesses and enqueues; `/rite-build` implements.