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
@@ -0,0 +1,77 @@
1
+ # ADR-0012: Separate semantic workspace upgrades from structural migration
2
+
3
+ - **Status:** Accepted
4
+ - **Date:** 2026-07-24
5
+
6
+ ## Context
7
+
8
+ Updating DevRites replaces the installed engine, skills, agents, and hooks. It
9
+ does not prove that an active workspace was planned under the rules shipped by
10
+ that update.
11
+
12
+ The existing `devrites-engine migrate` command has a narrower job: it repairs
13
+ workspace layout, aliases, and state schema. Extending it to rewrite plans would
14
+ mix structural storage changes with product decisions and could damage completed
15
+ work.
16
+
17
+ This distinction matters most for long-running workspaces. A plan may still be
18
+ internally consistent while carrying an obsolete proof recipe, a local command
19
+ wrapper, or readiness evidence produced by an older workflow. Byte hashes alone
20
+ cannot tell us that those instructions remain valid.
21
+
22
+ ## Decision
23
+
24
+ DevRites will keep three upgrade operations separate:
25
+
26
+ | Operation | Responsibility |
27
+ | --- | --- |
28
+ | `devrites-engine update` | Update the installed engine and workflow pack. |
29
+ | `devrites-engine migrate` | Normalize workspace layout and structural state schema. |
30
+ | `/rite-upgrade [slug]` | Reconcile an active workspace with the current semantic planning contract. |
31
+
32
+ Semantic compatibility is versioned by the readiness-artifact contract, not by
33
+ the DevRites release number or workspace state schema. The current contract is
34
+ `devrites.readiness-artifacts.v2`.
35
+
36
+ `decision-coverage.md`, `eng-review.md`, and `test-plan.md` declare the semantic
37
+ contract that produced them. Build readiness returns code `8`
38
+ (`upgrade-required`) when existing readiness artifacts use an older, missing,
39
+ or incompatible contract, and routes the workspace to `/rite-upgrade`.
40
+
41
+ `/rite-upgrade` is desired-state reconciliation, not a replay of historical
42
+ migrations. It:
43
+
44
+ - works only on the active unfinished planning surface;
45
+ - preserves product source, completed slice bodies, proof, evidence, and
46
+ accepted decisions;
47
+ - removes obsolete engine-repair recipes and machine-local command wrappers
48
+ from active canonical plans;
49
+ - reruns current coverage, planning, and engineering-readiness checks;
50
+ - asks the user only when the current contract exposes a real product or risk
51
+ decision; and
52
+ - makes no changes when the workspace is already current and ready, completed,
53
+ or archived.
54
+
55
+ A fresh read-only `devrites-upgrade-planner` classifies the gap before any
56
+ mutation. The public skill remains the sole writer and verifies the resulting
57
+ workspace before build resumes.
58
+
59
+ ## Alternatives considered
60
+
61
+ | Option | Why not |
62
+ | --- | --- |
63
+ | Treat the installed DevRites release as the workspace contract | Release numbers describe the whole product and do not say which planning semantics produced an artifact. |
64
+ | Extend `devrites-engine migrate` to rewrite planning artifacts | Structural migration cannot safely make product judgments or distinguish completed evidence from unfinished instructions. |
65
+ | Replay one migration for every historical release | It would preserve obsolete intermediate mechanics and make long-lived workspaces depend on an ever-growing migration chain. Desired-state reconciliation is smaller and safer. |
66
+ | Force users to restart old workspaces | It discards trustworthy completed work and evidence without improving the unfinished plan. |
67
+
68
+ ## Consequences
69
+
70
+ - Updating DevRites cannot silently certify an old plan as current.
71
+ - Structural migration stays deterministic and safe to run independently.
72
+ - Active work can move forward without discarding trustworthy completed
73
+ evidence or recreating an old engine.
74
+ - New semantic rules require a readiness-contract revision and a bounded
75
+ desired-state upgrade path.
76
+ - Archived workspaces remain historical records rather than being rewritten to
77
+ match current conventions.
@@ -54,3 +54,7 @@ architecture; per-feature `decisions.md` files stay scoped to that feature.
54
54
  | [0006](0006-clock-seam-and-engine-ci-gates.md) | Clock seam + Go static-analysis CI gates | Accepted | `tests/adr_0006_clock_seam_test.go` |
55
55
  | [0007](0007-canonical-live-workspace-filenames.md) | Canonical live workspace filenames | Accepted | `internal/migrate/migrate_test.go`, `tests/migrate_cli_test.go` |
56
56
  | [0008](0008-sanctioned-engine-network-boundary.md) | Sanctioned engine network boundary | Accepted | `tests/meta_test.go` |
57
+ | [0009](0009-prebuild-decision-coverage-and-readiness.md) | Pre-build decision coverage and implementation readiness | Accepted | `internal/state/state_test.go`, `tests/parity_buildreadiness_test.go` |
58
+ | [0010](0010-agent-first-fresh-context-orchestration.md) | Agent-first fresh-context orchestration | Accepted | `tests/hook_test.go`, `tests/codex-agent-generation-test.sh` |
59
+ | [0011](0011-define-plan-transition-rights.md) | Separate Define authoring from the Plan checkpoint | Accepted | `internal/state/state_test.go`, `tests/adr_0011_define_plan_test.go` |
60
+ | [0012](0012-semantic-workspace-upgrades.md) | Separate semantic workspace upgrades from structural migration | Accepted | `tests/parity_buildreadiness_test.go` |
@@ -2,13 +2,13 @@
2
2
 
3
3
  The skills speak in terms of five canonical triage roles. This file maps those roles to the actual label strings used in this repo's issue tracker.
4
4
 
5
- | Label in mattpocock/skills | Label in our tracker | Meaning |
6
- | -------------------------- | -------------------- | ---------------------------------------- |
7
- | `needs-triage` | `needs-triage` | Maintainer needs to evaluate this issue |
8
- | `needs-info` | `needs-info` | Waiting on reporter for more information |
9
- | `ready-for-agent` | `ready-for-agent` | Fully specified, ready for an AFK agent |
10
- | `ready-for-human` | `ready-for-human` | Requires human implementation |
11
- | `wontfix` | `wontfix` | Will not be actioned |
5
+ | Canonical role | Label in our tracker | Meaning |
6
+ | ----------------- | -------------------- | ---------------------------------------- |
7
+ | `needs-triage` | `needs-triage` | Maintainer needs to evaluate this issue |
8
+ | `needs-info` | `needs-info` | Waiting on reporter for more information |
9
+ | `ready-for-agent` | `ready-for-agent` | Fully specified, ready for an AFK agent |
10
+ | `ready-for-human` | `ready-for-human` | Requires human implementation |
11
+ | `wontfix` | `wontfix` | Will not be actioned |
12
12
 
13
13
  When a skill mentions a role (e.g. "apply the AFK-ready triage label"), use the corresponding label string from this table.
14
14
 
@@ -1,11 +1,11 @@
1
1
  # DevRites architecture
2
2
 
3
- DevRites is a **distributed but coordinated** set of project-local Claude Code
4
- and Codex skill surfaces backed by one Go control plane. It makes an AI coding
5
- agent behave like a disciplined senior engineer: framespecoptional temper
6
- definemandatory vetbuild one verified slice prove with evidence →
7
- polish → review → seal → ship. `converge` is the recovery state when live code
8
- and recorded intent need to meet again.
3
+ DevRites combines project-local Claude Code and Codex skills with one Go control
4
+ plane. It gives AI coding agents a defined engineering process: frame spec
5
+ mandatory adaptive clarify optional temper definemandatory vet build
6
+ one verified slice prove with evidence polish reviewseal ship.
7
+ `converge` is the recovery state for bringing live code and recorded intent
8
+ back into agreement.
9
9
 
10
10
  For the `.devrites/` load order, file budgets, artifact schema, aliases,
11
11
  traceability rules, and phase-relative completeness model, see
@@ -15,60 +15,59 @@ traceability rules, and phase-relative completeness model, see
15
15
 
16
16
  1. **Public lifecycle and workspace skills**: `.claude/skills/rite-*`,
17
17
  `user-invocable: true`. Each owns one bounded phase or workspace transition.
18
- Sequence: `rite-spec`, optional `rite-temper`, `rite-define`, mandatory
18
+ Sequence: `rite-spec`, mandatory adaptive `rite-clarify`, optional `rite-temper`, `rite-define`, mandatory
19
19
  `rite-vet`, `rite-build`, recovery `rite-converge`, `rite-prove`,
20
- `rite-polish`, `rite-review`, `rite-seal`, `rite-ship`; `rite-plan` repairs
21
- or reslices an active plan,
22
- plus the resume verb `rite-resolve` (answer a HITL gate and clear
23
- `Awaiting human`). The thin `/rite` menu and read-only `rite-status` live in
24
- the public utility layer below.
20
+ `rite-polish`, `rite-review`, `rite-seal`, and `rite-ship`. `rite-plan`
21
+ repairs or reslices an active plan. The resume verb `rite-resolve` answers a
22
+ HITL gate and clears `Awaiting human`. `rite-upgrade` is a conditional
23
+ maintenance route for semantically stale active workspaces, not a lifecycle
24
+ phase. The thin `/rite` menu and read-only `rite-status` live in the public
25
+ utility layer below.
25
26
  `/rite-seal` **decides** GO/NO-GO and writes the verdict to `seal.md`;
26
- `/rite-ship` is the eighth core lifecycle rite that **executes** the
27
- irreversible git ladder and **closes** the task (archives the workspace,
28
- clears `ACTIVE`). Keeping the decision and the irreversible action as two
29
- separately-auditable steps is the point.
27
+ `/rite-ship` is the final core lifecycle rite that **executes** the
28
+ irreversible git ladder and **closes** the task by archiving the workspace
29
+ and clearing `ACTIVE`. Separate steps let users audit the release decision
30
+ before any irreversible action.
30
31
  2. **Public utility and on-ramp skills**: `rite-adopt`, `rite-quick`,
31
- `rite-frame`, `rite-status`, `rite-doctor`, `rite-learn`, `rite-explain`,
32
+ `rite-frame`, `rite-status`, `rite-doctor`, `rite-upgrade`, `rite-learn`, `rite-explain`,
32
33
  `rite-customize`, `rite-zoom-out`, `rite-prototype`, `rite-handoff`,
33
34
  `rite-pressure-test`, `rite-pov`, `rite-dogfood`, `rite-pr-feedback`, and
34
35
  `rite-autocomplete`. These are public commands. `rite-autocomplete` is the
35
- unattended orchestrator: it drives the whole lifecycle (spec → … → seal →
36
- ship) end-to-end, choosing the best option at each soft gate, pausing only
37
- on hard irreversible-risk / blocking / escalating gates or a NO-GO. The
38
- `devrites-` prefix is **namespace** (collision avoidance against bundled
39
- Claude Code skill names like `prototype`, `handoff`, `triage`, `diagnose`),
40
- not a visibility marker; `rite-pressure-test` carries no prefix because it
41
- doesn't collide.
36
+ unattended orchestrator. It drives the whole lifecycle (spec → … → seal →
37
+ ship), chooses the recommended option at each soft gate, and pauses only for
38
+ hard irreversible-risk, blocking, or escalating gates, or a NO-GO. The
39
+ `devrites-` prefix prevents collisions with bundled Claude Code skill names
40
+ such as `prototype`, `handoff`, `triage`, and `diagnose`; it does not mark
41
+ visibility. `rite-pressure-test` needs no prefix because it does not collide.
42
42
  3. **Internal specialist skills**: `.claude/skills/devrites-*` with
43
43
  `user-invocable: false`: `devrites-interview`, `-source-driven`,
44
44
  `-doubt`, `-ux-shape` (plans UX/UI into `design-brief.md` at `/rite-spec`),
45
45
  `-frontend-craft`, `-browser-proof`, `-debug-recovery`,
46
46
  `-api-interface`, `-audit` (dispatches the security / perf / simplify
47
- reviewer subagent on an axis argument), `-prose-craft`, and
48
- `-refresh-indexes`. These 11 specialists are model-invoked by public skills
49
- or host auto-selection; not menu noise. Whether a skill is public or
50
- internal is governed by the `user-invocable:` flag, not by the name
51
- prefix.
47
+ fresh-context reviewer on an axis argument), `-prose-craft`, and
48
+ `-refresh-indexes`. Public skills or host auto-selection invoke these 11
49
+ specialists. They do not appear in the menu. The `user-invocable:` flag,
50
+ rather than the name prefix, determines whether a skill is public.
52
51
 
53
52
  Engineering rules live at `.claude/skills/devrites-lib/reference/standards/`.
54
- Workspace-operating lifecycle rites load `core.md` first and disclose phase-specific
55
- files on demand; compact utilities keep a narrower local contract. Parallel
53
+ Workspace-operating lifecycle rites load `core.md` first and read
54
+ phase-specific files on demand. Compact utilities keep a narrower local
55
+ contract. Parallel
56
56
  reviewer fan-out at `/rite-seal` is the shared reference file
57
57
  `devrites-lib/reference/parallel-dispatch.md`, not a skill.
58
58
  4. **Supporting references**: `reference/*.md` inside each skill. Long checklists,
59
59
  templates, and anti-rationalization tables loaded on demand (progressive
60
60
  disclosure) so `SKILL.md` bodies stay small.
61
- 5. **Agents**: `.claude/agents/devrites-*` fresh-context subagents: **13 read-only + 1
62
- write-capable**. The read-only set is twelve reviewers: the post-build fan-out used by
63
- `/rite-seal` and the doubt loop (`devrites-spec-reviewer`, `-code-reviewer`, `-test-analyst`,
64
- `-frontend-reviewer`, `-security-auditor`, `-performance-reviewer`, `-devex-reviewer`,
65
- `-doubt-reviewer`, `-simplifier-reviewer`), the **pre-plan** `devrites-strategy-reviewer`
66
- (`/rite-temper`), the **pre-build** `devrites-plan-reviewer` (`/rite-vet`), and the
67
- **build-time** `devrites-forge-judge` (scores competing candidate builds on a `Forge: yes`
68
- slice), plus the cross-feature `devrites-retrospector` (mines the shipped archive at
69
- `/rite-ship` close). The one **write-capable** executor, `devrites-slice-wright`, is
70
- dispatched by `/rite-build` to write one slice in a clean context (the write-side mirror of
71
- the reviewers).
61
+ 5. **Agents**: `.claude/agents/devrites-*` contains **18 flat depth-one roles**:
62
+ 17 read-only leaves and the sole source/test writer,
63
+ `devrites-slice-wright`. The read-only set includes three bounded work
64
+ leaves (`devrites-evidence-scout`, `devrites-plan-drafter`, and
65
+ `devrites-proof-runner`), the fresh `devrites-upgrade-planner`, plus the
66
+ existing reviewers, auditors, judge, and retrospector. Public rites remain
67
+ authoritative: leaves return typed
68
+ evidence, never ask the human, change phase, or write canonical
69
+ `.devrites/**` state. See [`orchestration.md`](orchestration.md) for the
70
+ dispatch, fallback, identity, and reconciliation contract.
72
71
  6. **Engineering rules**: DevRites' own stack-agnostic rules installed to
73
72
  `.claude/skills/devrites-lib/reference/standards/`. Workspace-operating lifecycle
74
73
  skills read `core.md` in step 0; compact utilities load only their local or conditional
@@ -85,37 +84,54 @@ traceability rules, and phase-relative completeness model, see
85
84
  `test-proof-checklist.md` · `browser-proof-checklist.md` · `security-checklist.md`.
86
85
  - **Index:** `README.md` (phase mapping, loading model).
87
86
 
88
- State lives in `.devrites/` as human-readable Markdown so it survives context
89
- compaction and new sessions. The optional `.devrites/AFK` sentinel toggles
90
- the session-level run mode (see "Run modes" below). See `usage.md` for the
91
- workspace file list, [`command-map.md`](command-map.md) for the full
92
- per-skill catalog with triggers + I/O, and
87
+ State lives in `.devrites/` as human-readable Markdown so later sessions can
88
+ reload it after context compaction. The optional `.devrites/AFK` sentinel
89
+ toggles the session-level run mode (see "Run modes" below). See `usage.md` for
90
+ the workspace file list, [`command-map.md`](command-map.md) for the full
91
+ per-skill catalog with triggers and I/O, and
93
92
  [`capability-surface-selection.md`](capability-surface-selection.md) for where future
94
93
  capabilities belong.
95
94
 
96
95
  ## Design rationale
97
96
 
98
97
  ### Why the engine owns shared orientation (`devrites-lib`)
99
- Every workspace-operating skill starts by reading the active feature's slug,
100
- phase, present artifacts, run mode, and open-question tally. Re-deriving
101
- that from raw Markdown in each skill was duplicated (step-0 prose across ~20 skills),
102
- token-heavy (counting open gates meant re-reading the append-only `questions.md`, which
103
- only grows), and error-prone (a missed AFK sentinel or a miscounted gate changes behavior).
104
- So orientation is computed once by the `devrites-engine` binary, which prints a compact
105
- digest each skill reads at step 0. The same binary owns the read-only gates
98
+ Every workspace-operating skill needs the active feature's slug, phase, present
99
+ artifacts, run mode, and open-question tally. Parsing raw Markdown in each skill
100
+ duplicated the same setup across about 20 skills. Counting open gates also meant
101
+ rereading the append-only `questions.md`, and a missed AFK sentinel or
102
+ miscounted gate could change behavior. The `devrites-engine` binary now computes
103
+ orientation once and prints a compact digest that each skill reads at step 0.
104
+ The same binary owns the read-only gates
106
105
  (`build-readiness`, `evidence-fresh`, `check-acceptance`) and state mutators
107
106
  (`tick-afk`, `resolve`, `close-out`), so Claude Code, Codex, CI, and humans
108
- all exercise the same control plane. `devrites-lib` remains an internal library skill
109
- (`user-invocable: false`, not a command) for shared references. The orientation
110
- path is read-only; mutation stays in dedicated engine subcommands.
107
+ all exercise the same control plane. `devrites-lib` remains an internal library
108
+ skill (`user-invocable: false`, not a command) for shared references. The
109
+ orientation command only reads state; dedicated engine subcommands handle
110
+ mutations.
111
111
 
112
112
  ### Why the engine owns install/update/uninstall semantics
113
- Install/update/uninstall behavior lives in `engine/internal/install`: manifest writing
114
- and pruning, shared-file marker merge/removal, Codex hook merge/removal, dry-run output,
115
- binary lifecycle, and update flag replay all execute through `devrites-engine`. The
116
- shell entrypoints (`install.sh`, `uninstall.sh`, `update.sh`) and npm entrypoint
117
- (`bin/devrites.mjs`) remain bootstrap shims: they acquire a release bundle or engine
118
- binary, then pass arguments through.
113
+ `engine/internal/install` implements install, update, and uninstall behavior:
114
+ manifest writing and pruning, shared-file marker merging and removal, Codex hook
115
+ merging and removal, dry-run output, binary lifecycle, and update flag replay.
116
+ The shell entrypoints
117
+ (`install.sh`, `uninstall.sh`, `update.sh`) and npm entrypoint
118
+ (`bin/devrites.mjs`) remain bootstrap shims. They acquire a release bundle or
119
+ engine binary, then pass arguments through.
120
+
121
+ Directly managed manifest entries carry SHA-256 ownership records. Before the
122
+ first refresh, prune, or uninstall mutation, the engine classifies every
123
+ affected path. It preserves customized or legacy entries without hashes unless
124
+ `--force` is explicit, and it checks each path again immediately before a
125
+ destructive action. Marker-owned shared files retain their block or hook merge
126
+ policy. The engine rejects existing symlinks, junctions, and resolved target
127
+ escapes even under force.
128
+
129
+ Binary replacement is a separate transaction. Before replacement, the binary
130
+ at the exact staged path must report the requested release version. A backup in
131
+ the same directory remains until the binary at the installed path passes the
132
+ same check in a new process. On failure, the engine atomically restores the old
133
+ bytes and mode or removes a bad first install. It does not use `PATH` to
134
+ establish binary identity.
119
135
 
120
136
  Some duplication is intentionally preserved at host boundaries. Raw `curl | bash`
121
137
  install/uninstall must be self-contained enough to fetch the bundle before any sibling
@@ -125,31 +141,50 @@ generated into `pack/generated/**` and installed to `.agents/skills`, `.codex/ag
125
141
  different project-local conventions. Those generated host artifacts are delivered by the
126
142
  npm installer; Claude/Codex plugin packaging is intentionally not a distribution path.
127
143
 
144
+ ### Why semantic upgrade is separate from update and migration
145
+
146
+ Three operations solve different problems. `devrites-engine update` refreshes
147
+ the installed binary and pack. `devrites-engine migrate` normalizes workspace
148
+ layout and structural state schema. Neither one can claim that an active plan
149
+ still follows the current planning rules.
150
+
151
+ `/rite-upgrade [slug]` owns that semantic reconciliation. Build readiness uses
152
+ the `devrites.readiness-artifacts.v2` contract declared by
153
+ `decision-coverage.md`, `eng-review.md`, and `test-plan.md`; it returns code `8`
154
+ when those existing artifacts are stale. The rite then asks a fresh read-only
155
+ `devrites-upgrade-planner` to classify the gap before the root changes anything.
156
+ It preserves completed source, slice bodies, decisions, and evidence, repairs
157
+ only active unfinished planning, removes obsolete proof recipes and local
158
+ wrappers, and reruns the current readiness gates. Already-current workspaces
159
+ that pass readiness, completed workspaces, and archives remain untouched. See
160
+ [ADR-0012](adr/0012-semantic-workspace-upgrades.md).
161
+
128
162
  ### Why `/engine` was rejected
129
- A single `/engine` (or `/devrites`) mega-command would load every phase's instructions
130
- into one context, creating constant context pressure and hiding the intent of each
131
- step. It also makes "do only this phase" hard to enforce and bloats the recurring
132
- token cost (skill bodies stay in context once loaded). DevRites splits the lifecycle
133
- into small skills that load only what the current phase needs.
163
+ A single `/engine` (or `/devrites`) command would load every phase's
164
+ instructions into one context. That would increase context pressure, obscure
165
+ the purpose of each step, and make phase boundaries harder to enforce. Skill
166
+ bodies stay in context once loaded, so the recurring token cost would also
167
+ grow. Separate skills load only what the current phase needs.
134
168
 
135
169
  ### Why `rite-*` names
136
- Short, memorable, brand-aligned ("rites" = disciplined steps), and **collision-free**.
137
- Built-in / bundled Claude Code commands include `/plan`, `/review`, `/run`, `/verify`,
138
- `/code-review`, `/simplify`, `/security-review`, `/init`, `/compact`, `/debug`. The
139
- `rite-` prefix avoids all of them. (Collision audit: `research/claude-code-skills-notes.md`.)
170
+ The team chose `rite-` because it is short, easy to remember, and matches the
171
+ product's use of "rites" for disciplined steps. The prefix also avoids
172
+ collisions. Built-in or bundled Claude Code commands include `/plan`, `/review`,
173
+ `/run`, `/verify`, `/code-review`, `/simplify`, `/security-review`, `/init`,
174
+ `/compact`, and `/debug`. (Collision audit:
175
+ `research/claude-code-skills-notes.md`.)
140
176
 
141
177
  ### Why a thin menu skill, not a mega-router
142
- `/rite` is **only** an entrypoint: it shows a compact phase-grouped menu, prints
178
+ `/rite` is an entrypoint. It shows a compact phase-grouped menu, prints
143
179
  recommended-start guidance from `devrites-engine first-task`, and dispatches a
144
180
  named verb to its owning skill. Menu mode does not read raw workspace state;
145
- `/rite-status` owns detailed status. `/rite` deliberately does **not** duplicate
146
- workflow logic. Doing so would recreate the mega-command problem. DevRites keeps
147
- selection thin and lets each phase own its context.
181
+ `/rite-status` owns detailed status. `/rite` does not duplicate workflow logic,
182
+ which keeps selection small and leaves each phase in control of its context.
148
183
 
149
184
  ### Why internal skills exist
150
- Specialist processes (doubt, source-driven, frontend craft, browser proof, audits)
151
- are **disciplines**, not user commands. As `user-invocable: false` specialist
152
- skills they:
185
+ Specialist processes such as doubt, source-driven research, frontend craft,
186
+ browser proof, and audits are not direct user commands. As
187
+ `user-invocable: false` skills they:
153
188
  - stay out of the command menu (less cognitive load);
154
189
  - are invoked automatically by the host model or explicitly by a public skill when their
155
190
  trigger conditions hit;
@@ -157,16 +192,23 @@ skills they:
157
192
 
158
193
  ### Why spec, architecture, plan, tasks, and traceability are separate artifacts
159
194
  Combining investigation, specification, planning, and slicing makes it easier
160
- to miss a question, guess at placement, or leave a requirement out of a slice.
161
- DevRites splits them so each
162
- is focused and gated. `/rite-spec` **investigates deeply and writes `spec.md`** (product
163
- what/why, requirements, acceptance, non-goals, measurable success) and must pass its
164
- readiness gate. `/rite-define` then turns that **approved spec** into `architecture.md`
195
+ to miss a question, choose the wrong placement, or omit a requirement from a
196
+ slice. Each concern therefore has its own artifact and gate. `/rite-spec`
197
+ investigates the request and codebase in depth, then writes `spec.md` with the
198
+ product what and why, requirements, acceptance criteria, non-goals, and
199
+ measurable success. The spec
200
+ must pass its readiness gate. `/rite-clarify` then audits the full actor,
201
+ journey, data, interface, and operations topology and writes
202
+ `decision-coverage.md`. A complete spec needs no questions.
203
+ `/rite-define` turns that **approved, clarified spec** into `architecture.md`
165
204
  (technical map), `plan.md` (approach), `tasks.md` (vertical `SLICE-###` work), and
166
- `traceability.md` (AC/REQ → slice → proof → evidence → files). The spec is fully covered
167
- before any building begins, but it does not become a long technical omnibus. `/rite-plan`
168
- is the separate repair/reslice/re-order tool for an *active* plan when it goes stale or
169
- drifts.
205
+ `traceability.md` (AC/REQ → slice → proof → evidence → files). `/rite-vet` then records
206
+ `Implementation readiness: READY` before build. Both verdict artifacts are
207
+ semantically validated and bound to their canonical inputs by SHA-256 digest;
208
+ marker text alone or a stale digest cannot pass. This checks the full spec
209
+ before Build without turning `spec.md` into a long technical document.
210
+ `/rite-plan` separately repairs, reslices, or reorders an active plan when it
211
+ goes stale or drifts.
170
212
 
171
213
  ### Why `/rite-polish` is one skill with two progressive-disclosure halves
172
214
  Polish has two natural halves: **code** (simplify, dead code, naming, plus
@@ -189,37 +231,42 @@ to run Phase 4 before Phase 3 because detail work would otherwise reinforce
189
231
  patterns that do not match the project's design system.
190
232
 
191
233
  ### Why seal and ship are separate phases (`/rite-seal`, `/rite-ship`)
192
- Deciding "is this safe to ship" and *shipping it* are different acts with
193
- different blast radii. `/rite-seal` is a **pure decision gate**: it walks acceptance
194
- against evidence, fans out the fresh-context reviewers, and writes the GO / NO-GO
195
- verdict to `seal.md` and runs no git. On GO it sets `state.md` `Next step:
196
- /rite-ship` and stops. `/rite-ship` is the eighth core lifecycle rite: it refuses to run
197
- without a GO recorded in `seal.md`, renders the type-`GO` prompt, runs the irreversible
198
- git ladder (commit → push → tag/PR per the project's convention), writes `ship.md`,
199
- then **closes the task** by setting phase `done` and archiving `.devrites/work/<slug>/`
200
- `.devrites/archive/<slug>/` (every `.md` preserved, never deleted) and clears
201
- `.devrites/ACTIVE`. A GO seal is a verdict, not an authorization to push; keeping the
202
- decision and the irreversible action as two separately-auditable steps is the point.
234
+ Deciding whether a change is safe to ship has a smaller blast radius than
235
+ shipping it. `/rite-seal` checks acceptance against evidence, dispatches the
236
+ fresh-context reviewers, writes the GO or NO-GO verdict to `seal.md`, and runs
237
+ no git commands. On GO, it sets `state.md` to `Next step: /rite-ship` and stops.
238
+ `/rite-ship` refuses to run without a GO in `seal.md`. It renders the type-`GO`
239
+ prompt, runs the irreversible git ladder (commit push tag/PR under the
240
+ project's convention), and writes `ship.md`. It then sets phase `done`, moves
241
+ `.devrites/work/<slug>/` to `.devrites/archive/<slug>/` with every `.md` file
242
+ preserved, and clears `.devrites/ACTIVE`. The GO verdict does not authorize a
243
+ push; the separate Ship step does.
203
244
 
204
245
  ### Why `/rite-autocomplete` exists (the unattended orchestrator)
205
- Some features are routine enough to run end-to-end without per-phase human iteration.
206
- `/rite-autocomplete` drives the whole lifecycle (spec → temper → define → vet →
246
+ Some features are routine enough to run without human input at every phase.
247
+ `/rite-autocomplete` drives the whole lifecycle (spec → clarify → temper → define → vet →
207
248
  build×N → prove → polish → review → seal → ship) by reading each phase's
208
249
  `SKILL.md` and executing its
209
- workflow, carrying state through the workspace files rather than chat. A vague prompt
210
- triggers an up-front `devrites-interview`, which is the only interactive window.
211
- After that it runs unattended, choosing the best option at each soft gate and recording the rationale
212
- in `decisions.md`. It does **not** weaken the safety gates: hard irreversible-risk
213
- (auth / migration / public-API / red tests), blocking / escalating gates, an open
214
- `gate: validating`, a NO-GO, exhausted `max_slices`, or low confidence all still pause.
215
- By default it stops at the final type-`GO`; the `--ship` flag (alias `--yolo`)
216
- auto-confirms it for a zero-touch push.
250
+ workflow. It carries state through workspace files rather than chat. A vague
251
+ prompt starts `devrites-interview`; `/rite-spec` and `/rite-clarify` then
252
+ finish the only interactive window. After decision coverage is CLEAR it runs unattended,
253
+ choosing the recommended option at each soft gate and recording the rationale
254
+ in `decisions.md`. It does **not** weaken the safety gates: genuine
255
+ product/scope/policy decisions, irreversible risk, human-only access/actions,
256
+ an open human-owned gate, a NO-GO, exhausted `max_slices`, or low confidence
257
+ still pause. Agents use bounded recovery for red tests, runtime failures, and
258
+ missing technical coverage. By default the workflow stops at the final
259
+ type-`GO`; the `--ship` flag (alias `--yolo`) confirms it and pushes without
260
+ another prompt.
217
261
 
218
262
  ### Why persistent `.devrites/` state
219
263
  Long features outlive a single context window. Durable Markdown for the spec,
220
264
  plan, tasks, state, evidence, drift, and decisions lets any phase reload the
221
- current position in any session, even after compaction. This is the main thing DevRites adds over typical
222
- session-scoped workflows, which don't persist feature state.
265
+ current position in any session, even after compaction. Later-phase
266
+ clarification stores `return_phase` and `return_next_action` in `state.md`;
267
+ technical recovery stores a fingerprinted three-attempt budget in
268
+ `recovery-attempts.jsonl`. Session-scoped workflows cannot provide the same
269
+ resume behavior because they do not persist feature state.
223
270
 
224
271
  ### Run modes: HITL & AFK
225
272
 
@@ -238,38 +285,27 @@ an `Awaiting human` block to `state.md` and a question to `questions.md`, then s
238
285
  `/rite-resolve` is the canonical resume verb. Restarting a session reads the workspace
239
286
  back into a consistent state because the pause is durable Markdown, not chat memory.
240
287
 
241
- Why a four-gate taxonomy (instead of a single "ask the user" pause): a single gate
242
- becomes a queue under load. Mixing `advisory` (audit-only log) with `validating`
243
- (async: build continues, merge blocks) and reserving `blocking` for synchronous halts
244
- keeps the loop alive when the answer can wait, and pauses hard when it cannot.
245
- AFK always pauses for destructive migrations, auth/authz boundaries, public API
246
- breaks, and failed tests, type checks, or lint, regardless of the sentinel. See
288
+ Why a four-gate taxonomy (instead of a single "ask the user" pause): a single
289
+ gate becomes a queue under load. `advisory` writes only an audit log.
290
+ `validating` lets the build continue but blocks the merge. `blocking` stops
291
+ synchronously. This lets work continue when an answer can wait and pauses it
292
+ when the answer is required.
293
+ AFK always pauses for genuine product/scope/policy choices, irreversible risk,
294
+ and human-only access or actions, regardless of the sentinel. Objective test,
295
+ type, lint, runtime, and coverage failures stay inside bounded technical
296
+ recovery; exhaustion records a blocker without inventing a question. See
247
297
  [`pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md`](../pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md) for the full
248
298
  contract.
249
299
 
250
300
  ## Design choices at a glance
251
301
 
252
- - **Surface**: 29 public `rite-*` skills (42 total): the thin `/rite` menu
253
- (carries the routing) + 8 lifecycle phases (`rite-spec`, `rite-define`,
254
- `rite-build`, `rite-prove`, `rite-polish`, `rite-review`, `rite-seal`,
255
- `rite-ship`: seal **decides**, ship **executes + closes**) + the
256
- `rite-temper` (strategic, optional) and `rite-vet` (engineering, every plan)
257
- reviews + the `rite-quick` express lane and `rite-frame` pre-flight/self-audit
258
- lens + `rite-adopt` (onboard an existing codebase) + `rite-learn` (cross-feature
259
- lessons) + `rite-status` + `rite-doctor` (install health) +
260
- `rite-customize` (project-local overrides/extensions) +
261
- `rite-explain` (grounded concept/diff/idea/recap explanation) +
262
- `rite-pov` (external-option verdicts) + `rite-dogfood` (browser QA) +
263
- `rite-pr-feedback` (review-thread closure) +
264
- the `rite-plan` replan verb + `rite-converge` recovery + the `rite-resolve`
265
- resume verb + 4 ideation /
266
- handoff utilities (`rite-zoom-out`, `rite-prototype`, `rite-handoff`,
267
- `rite-pressure-test`) + `rite-autocomplete` (the unattended full-lifecycle
268
- orchestrator), plus 11 internal model-invoked `devrites-*` specialists and the
269
- `devrites-lib` library, not one mega-command. The `devrites-` prefix is a
270
- namespace (collision avoidance), not a public/internal marker.
271
- `user-invocable:` is. The 11 specialists are model-invoked;
272
- `devrites-lib` explicitly disables model invocation.
302
+ - **Surface**: 31 public `rite-*` skills (44 total), plus the thin `/rite`
303
+ menu: 32 public and 12 internal. The lifecycle
304
+ includes mandatory adaptive Clarify, optional Temper, mandatory Vet, and
305
+ Converge recovery; Seal **decides** and Ship **executes + closes**. Eleven
306
+ `devrites-*` specialists are model-invoked and `devrites-lib` is the shared
307
+ non-command library. Visibility comes from `user-invocable:`, not the
308
+ namespace prefix.
273
309
  - **Selection**: the `/rite` menu skill carries the routing table; every
274
310
  workflow skill enforces a "right skill, right time" rule in its body.
275
311
  - **State**: durable `.devrites/` Markdown that survives compaction and new sessions.
@@ -281,13 +317,15 @@ contract.
281
317
  - **Slice rule**: build **one vertical slice, then stop**. There is no automatic continuation.
282
318
  - **Drift**: an explicit **Spec Drift Guard** in build/prove/polish/review/seal.
283
319
  - **Design**: `devrites-frontend-craft` + a four-phase `/rite-polish` orchestrator (code + backend always; UI normalize + polish when UI is in scope).
284
- - **Review**: **feature-scoped** multi-axis review with severity labels +
285
- fresh-context subagents at the seal.
320
+ - **Agents**: 18 fresh-context roles at flat depth one: 17 read-only leaves and
321
+ one wright. Fallback order is named, generic, then labelled inline.
322
+ - **Review**: **feature-scoped** multi-axis review with severity labels and
323
+ fresh-context agents at the seal.
286
324
  - **Scope**: clarify → seal (decide) → ship (commit → push → tag or PR,
287
325
  following the project's convention) → close. The CI
288
326
  pipeline stays with the project.
289
327
  - **Install**: project-local, manifest-managed host artifacts; the optional
290
- shared engine binary is the sole sanctioned global artifact.
328
+ shared engine binary is the only allowed global artifact.
291
329
 
292
330
  ## Deviations from the original build brief (and why)
293
331