devrites 5.14.4 → 6.0.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 (637) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/NOTICE.md +6 -4
  3. package/README.md +77 -16
  4. package/SECURITY.md +25 -11
  5. package/bin/devrites.mjs +49 -15
  6. package/docs/adr/0001-go-engine-as-control-plane.md +6 -3
  7. package/docs/adr/0029-v5-workspace-schema-and-native-migration.md +9 -0
  8. package/docs/adr/README.md +3 -2
  9. package/docs/agents/issue-tracker.md +1 -1
  10. package/docs/architecture.md +6 -3
  11. package/docs/cli.md +32 -9
  12. package/docs/command-map.md +5 -3
  13. package/docs/engine/state-schema.md +1 -1
  14. package/docs/flow.md +1 -1
  15. package/docs/harness-compliance.md +2 -2
  16. package/docs/release.md +15 -11
  17. package/docs/usage.md +1 -1
  18. package/engine/commands.go +1 -1
  19. package/engine/go.mod +1 -1
  20. package/engine/help.go +41 -15
  21. package/engine/help_test.go +134 -0
  22. package/engine/internal/acceptance/acceptance_test.go +298 -7
  23. package/engine/internal/acceptance/approve.go +7 -2
  24. package/engine/internal/acceptance/cli.go +3 -0
  25. package/engine/internal/acceptance/evidence.go +69 -5
  26. package/engine/internal/acceptance/lint.go +1 -1
  27. package/engine/internal/acceptance/run.go +5 -3
  28. package/engine/internal/acceptance/scaffold.go +5 -16
  29. package/engine/internal/devritespaths/paths.go +7 -6
  30. package/engine/internal/devritespaths/paths_test.go +18 -0
  31. package/engine/internal/fsutil/copy.go +83 -49
  32. package/engine/internal/fsutil/copy_test.go +70 -109
  33. package/engine/internal/gate/gate.go +89 -16
  34. package/engine/internal/gate/gate_test.go +101 -0
  35. package/engine/internal/hostpack/hostpack.go +52 -2
  36. package/engine/internal/hostpack/hostpack_test.go +83 -2
  37. package/engine/internal/install/apply.go +59 -16
  38. package/engine/internal/install/binary.go +10 -1
  39. package/engine/internal/install/install_test.go +428 -0
  40. package/engine/internal/install/merge.go +69 -38
  41. package/engine/internal/install/preflight.go +7 -0
  42. package/engine/internal/install/uninstall.go +43 -4
  43. package/engine/internal/lib/claims.go +25 -4
  44. package/engine/internal/lib/claims_test.go +57 -0
  45. package/engine/internal/lib/closeout.go +41 -3
  46. package/engine/internal/lib/closeout_test.go +144 -0
  47. package/engine/internal/lib/context.go +8 -4
  48. package/engine/internal/lib/context_next_test.go +100 -0
  49. package/engine/internal/lib/detect.go +1 -1
  50. package/engine/internal/lib/detect_test.go +13 -0
  51. package/engine/internal/lib/diffscope.go +19 -9
  52. package/engine/internal/lib/dispatch.go +7 -0
  53. package/engine/internal/lib/dup.go +40 -37
  54. package/engine/internal/lib/dup_test.go +178 -0
  55. package/engine/internal/lib/manifest_union.go +4 -1
  56. package/engine/internal/lib/manifest_union_test.go +37 -0
  57. package/engine/internal/lib/metrics.go +4 -0
  58. package/engine/internal/lib/metrics_test.go +28 -0
  59. package/engine/internal/lib/migrate_test.go +59 -0
  60. package/engine/internal/lib/observe_budgets.go +25 -9
  61. package/engine/internal/lib/observe_budgets_test.go +254 -0
  62. package/engine/internal/lib/observe_summary.go +23 -2
  63. package/engine/internal/lib/open_visual.go +4 -2
  64. package/engine/internal/lib/open_visual_test.go +11 -0
  65. package/engine/internal/lib/regression.go +62 -23
  66. package/engine/internal/lib/regression_test.go +103 -0
  67. package/engine/internal/lib/resolve.go +36 -17
  68. package/engine/internal/lib/resolve_remediation_test.go +132 -0
  69. package/engine/internal/lib/skilltrust.go +0 -11
  70. package/engine/internal/lib/slicecheck.go +7 -5
  71. package/engine/internal/lib/slicecheck_test.go +18 -0
  72. package/engine/internal/lib/triggers.go +9 -3
  73. package/engine/internal/lib/triggers_test.go +23 -0
  74. package/engine/internal/lib/util.go +17 -3
  75. package/engine/internal/lib/util_test.go +104 -0
  76. package/engine/internal/lib/visual_outline.go +7 -3
  77. package/engine/internal/lib/visual_outline_test.go +28 -0
  78. package/engine/internal/lib/windows.go +13 -9
  79. package/engine/internal/lib/windows_test.go +98 -0
  80. package/engine/internal/lib/workspace_read.go +2 -11
  81. package/engine/internal/lib/workspace_read_test.go +102 -0
  82. package/engine/internal/markdowntext/markdowntext.go +194 -11
  83. package/engine/internal/markdowntext/testdata/structural.json +250 -0
  84. package/engine/internal/notes/cli.go +30 -12
  85. package/engine/internal/notes/notes.go +242 -39
  86. package/engine/internal/notes/notes_test.go +372 -0
  87. package/engine/internal/overhaul/admit/packet.go +89 -0
  88. package/engine/internal/overhaul/admit/packet_test.go +223 -0
  89. package/engine/internal/overhaul/admit/run.go +4 -0
  90. package/engine/internal/overhaul/bench/run.go +6 -0
  91. package/engine/internal/overhaul/bench/run_test.go +46 -0
  92. package/engine/internal/overhaul/overhaul.go +6 -1
  93. package/engine/internal/overhaul/ovio/ovio.go +10 -3
  94. package/engine/internal/overhaul/ovio/ovio_test.go +75 -0
  95. package/engine/internal/overhaul/packet/packet.go +208 -0
  96. package/engine/internal/overhaul/packet/packet_test.go +263 -0
  97. package/engine/internal/overhaul/records/check.go +6 -0
  98. package/engine/internal/overhaul/records/init.go +16 -5
  99. package/engine/internal/overhaul/records/records_test.go +4 -0
  100. package/engine/internal/overhaul/records/run.go +66 -0
  101. package/engine/internal/overhaul/records/run_test.go +77 -0
  102. package/engine/internal/overhaul/render/run.go +15 -11
  103. package/engine/internal/overhaul/render/run_test.go +463 -1
  104. package/engine/internal/overhaul/render/visual.go +95 -33
  105. package/engine/internal/overhaul/score/run.go +20 -0
  106. package/engine/internal/overhaul/score/run_test.go +156 -1
  107. package/engine/internal/overhaul/snapshot/run.go +78 -21
  108. package/engine/internal/overhaul/snapshot/run_test.go +344 -8
  109. package/engine/internal/parallel/cli.go +33 -20
  110. package/engine/internal/parallel/cli_test.go +59 -0
  111. package/engine/internal/parallel/git.go +39 -1
  112. package/engine/internal/parallel/ops.go +101 -11
  113. package/engine/internal/parallel/ops_test.go +552 -69
  114. package/engine/internal/parallel/parallel_test.go +31 -1
  115. package/engine/internal/parallel/pathdisjoint.go +19 -1
  116. package/engine/internal/parallel/pathdisjoint_test.go +72 -0
  117. package/engine/internal/parallel/select.go +6 -2
  118. package/engine/internal/release/release.go +13 -3
  119. package/engine/internal/release/release_test.go +208 -3
  120. package/engine/internal/rootfacts/facts.go +9 -0
  121. package/engine/internal/rootfacts/facts_test.go +38 -0
  122. package/engine/internal/state/acceptance.go +7 -1
  123. package/engine/internal/state/budgets.go +11 -10
  124. package/engine/internal/state/budgets_test.go +93 -0
  125. package/engine/internal/state/cursor.go +19 -8
  126. package/engine/internal/state/cursor_test.go +120 -0
  127. package/engine/internal/state/lock_unix.go +7 -1
  128. package/engine/internal/state/lock_windows.go +7 -1
  129. package/engine/internal/state/state_test.go +49 -18
  130. package/engine/internal/state/taskgraph.go +18 -4
  131. package/engine/internal/state/taskgraph_test.go +43 -0
  132. package/engine/internal/state/workspaceschema.go +16 -2
  133. package/engine/internal/state/workspaceschema_test.go +34 -0
  134. package/engine/internal/state/write.go +67 -6
  135. package/engine/internal/state/write_test.go +136 -0
  136. package/engine/internal/version/version_test.go +2 -0
  137. package/engine/main.go +8 -1
  138. package/engine/observation_contract_test.go +1 -1
  139. package/engine/root_routing_test.go +23 -1
  140. package/install.sh +132 -12
  141. package/pack/.claude/agents/devrites-spec-reviewer.md +2 -2
  142. package/pack/.claude/skills/devrites-browser-proof/SKILL.md +2 -2
  143. package/pack/.claude/skills/devrites-frontend-craft/reference/design-references.md +18 -18
  144. package/pack/.claude/skills/devrites-frontend-craft/reference/quality-standards.md +6 -4
  145. package/pack/.claude/skills/devrites-interview/SKILL.md +4 -4
  146. package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +1 -1
  147. package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +9 -1
  148. package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +3 -2
  149. package/pack/.claude/skills/devrites-lib/reference/standards/gates.md +6 -5
  150. package/pack/.claude/skills/devrites-lib/reference/standards/spec-grammar.md +1 -1
  151. package/pack/.claude/skills/devrites-lib/reference/standards/verification-methods.md +3 -3
  152. package/pack/.claude/skills/devrites-lib/reference/standards/windows.md +3 -3
  153. package/pack/.claude/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -2
  154. package/pack/.claude/skills/devrites-lib/reference/visual-playbooks/outline-template.md +1 -1
  155. package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +4 -4
  156. package/pack/.claude/skills/devrites-ux-shape/SKILL.md +11 -12
  157. package/pack/.claude/skills/devrites-ux-shape/reference/visual-direction-probe.md +3 -1
  158. package/pack/.claude/skills/overhaul/SKILL.md +1 -1
  159. package/pack/.claude/skills/overhaul/references/orchestration.md +5 -3
  160. package/pack/.claude/skills/overhaul/references/records.md +39 -0
  161. package/pack/.claude/skills/overhaul/references/scoring.md +14 -4
  162. package/pack/.claude/skills/rite/reference/menu.md +1 -1
  163. package/pack/.claude/skills/rite-adopt/SKILL.md +8 -2
  164. package/pack/.claude/skills/rite-autocomplete/SKILL.md +11 -6
  165. package/pack/.claude/skills/rite-autocomplete/reference/decision-policy.md +3 -2
  166. package/pack/.claude/skills/rite-autocomplete/reference/loop.md +1 -1
  167. package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +6 -3
  168. package/pack/.claude/skills/rite-build/SKILL.md +2 -1
  169. package/pack/.claude/skills/rite-build/reference/afk-discipline.md +1 -1
  170. package/pack/.claude/skills/rite-build/reference/checkpoint-protocol.md +1 -1
  171. package/pack/.claude/skills/rite-build/reference/checkpoint.md +5 -0
  172. package/pack/.claude/skills/rite-build/reference/parallel-batch.md +2 -2
  173. package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +3 -2
  174. package/pack/.claude/skills/rite-clarify/SKILL.md +5 -4
  175. package/pack/.claude/skills/rite-clarify/reference/anti-patterns.md +2 -2
  176. package/pack/.claude/skills/rite-clarify/reference/decision-coverage.md +3 -2
  177. package/pack/.claude/skills/rite-converge/SKILL.md +2 -0
  178. package/pack/.claude/skills/rite-customize/SKILL.md +6 -4
  179. package/pack/.claude/skills/rite-define/SKILL.md +2 -0
  180. package/pack/.claude/skills/rite-define/reference/gates.md +8 -7
  181. package/pack/.claude/skills/rite-explain/SKILL.md +1 -1
  182. package/pack/.claude/skills/rite-explain/reference/intake.md +1 -1
  183. package/pack/.claude/skills/rite-fast/SKILL.md +1 -1
  184. package/pack/.claude/skills/rite-plan/SKILL.md +4 -3
  185. package/pack/.claude/skills/rite-plan/reference/replan-and-repair.md +4 -4
  186. package/pack/.claude/skills/rite-polish/reference/anti-ai-slop.md +1 -1
  187. package/pack/.claude/skills/rite-prove/reference/browser-proof.md +5 -5
  188. package/pack/.claude/skills/rite-resolve/SKILL.md +3 -3
  189. package/pack/.claude/skills/rite-seal/SKILL.md +4 -3
  190. package/pack/.claude/skills/rite-seal/reference/phase-contract.md +3 -2
  191. package/pack/.claude/skills/rite-seal/reference/seal-template.md +2 -0
  192. package/pack/.claude/skills/rite-ship/SKILL.md +4 -2
  193. package/pack/.claude/skills/rite-ship/reference/git-ship.md +8 -2
  194. package/pack/.claude/skills/rite-ship/reference/ship-template.md +2 -1
  195. package/pack/.claude/skills/rite-spec/SKILL.md +2 -2
  196. package/pack/.claude/skills/rite-spec/reference/spec-checklists.md +1 -1
  197. package/pack/.claude/skills/rite-spec/reference/spec-template.md +7 -3
  198. package/pack/.claude/skills/rite-spec/reference/state-workspace.md +2 -0
  199. package/pack/.claude/skills/rite-temper/SKILL.md +12 -9
  200. package/pack/.claude/skills/rite-temper/reference/scope-modes.md +1 -1
  201. package/pack/.claude/skills/rite-temper/reference/significance.md +10 -3
  202. package/pack/.claude/skills/rite-temper/reference/strategy-template.md +13 -2
  203. package/pack/.claude/skills/rite-vet/SKILL.md +4 -3
  204. package/pack/.claude/skills/rite-vet/reference/artifacts.md +1 -1
  205. package/pack/.claude/workflows/devrites-readonly-review.js +5 -4
  206. package/pack/generated/claude/agents/devrites-spec-reviewer.md +2 -2
  207. package/pack/generated/claude/skills/devrites-browser-proof/SKILL.md +2 -2
  208. package/pack/generated/claude/skills/devrites-frontend-craft/reference/design-references.md +18 -18
  209. package/pack/generated/claude/skills/devrites-frontend-craft/reference/quality-standards.md +6 -4
  210. package/pack/generated/claude/skills/devrites-interview/SKILL.md +4 -4
  211. package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +1 -1
  212. package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +9 -1
  213. package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +3 -2
  214. package/pack/generated/claude/skills/devrites-lib/reference/standards/gates.md +6 -5
  215. package/pack/generated/claude/skills/devrites-lib/reference/standards/spec-grammar.md +1 -1
  216. package/pack/generated/claude/skills/devrites-lib/reference/standards/verification-methods.md +3 -3
  217. package/pack/generated/claude/skills/devrites-lib/reference/standards/windows.md +3 -3
  218. package/pack/generated/claude/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -2
  219. package/pack/generated/claude/skills/devrites-lib/reference/visual-playbooks/outline-template.md +1 -1
  220. package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +4 -4
  221. package/pack/generated/claude/skills/devrites-ux-shape/SKILL.md +11 -12
  222. package/pack/generated/claude/skills/devrites-ux-shape/reference/visual-direction-probe.md +3 -1
  223. package/pack/generated/claude/skills/overhaul/SKILL.md +1 -1
  224. package/pack/generated/claude/skills/overhaul/references/orchestration.md +5 -3
  225. package/pack/generated/claude/skills/overhaul/references/records.md +39 -0
  226. package/pack/generated/claude/skills/overhaul/references/scoring.md +14 -4
  227. package/pack/generated/claude/skills/rite/reference/menu.md +1 -1
  228. package/pack/generated/claude/skills/rite-adopt/SKILL.md +8 -2
  229. package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +11 -6
  230. package/pack/generated/claude/skills/rite-autocomplete/reference/decision-policy.md +3 -2
  231. package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +1 -1
  232. package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +6 -3
  233. package/pack/generated/claude/skills/rite-build/SKILL.md +2 -1
  234. package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +1 -1
  235. package/pack/generated/claude/skills/rite-build/reference/checkpoint-protocol.md +1 -1
  236. package/pack/generated/claude/skills/rite-build/reference/checkpoint.md +5 -0
  237. package/pack/generated/claude/skills/rite-build/reference/parallel-batch.md +2 -2
  238. package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +3 -2
  239. package/pack/generated/claude/skills/rite-clarify/SKILL.md +5 -4
  240. package/pack/generated/claude/skills/rite-clarify/reference/anti-patterns.md +2 -2
  241. package/pack/generated/claude/skills/rite-clarify/reference/decision-coverage.md +3 -2
  242. package/pack/generated/claude/skills/rite-converge/SKILL.md +2 -0
  243. package/pack/generated/claude/skills/rite-customize/SKILL.md +6 -4
  244. package/pack/generated/claude/skills/rite-define/SKILL.md +2 -0
  245. package/pack/generated/claude/skills/rite-define/reference/gates.md +8 -7
  246. package/pack/generated/claude/skills/rite-explain/SKILL.md +1 -1
  247. package/pack/generated/claude/skills/rite-explain/reference/intake.md +1 -1
  248. package/pack/generated/claude/skills/rite-fast/SKILL.md +1 -1
  249. package/pack/generated/claude/skills/rite-plan/SKILL.md +4 -3
  250. package/pack/generated/claude/skills/rite-plan/reference/replan-and-repair.md +4 -4
  251. package/pack/generated/claude/skills/rite-polish/reference/anti-ai-slop.md +1 -1
  252. package/pack/generated/claude/skills/rite-prove/reference/browser-proof.md +5 -5
  253. package/pack/generated/claude/skills/rite-resolve/SKILL.md +3 -3
  254. package/pack/generated/claude/skills/rite-seal/SKILL.md +4 -3
  255. package/pack/generated/claude/skills/rite-seal/reference/phase-contract.md +3 -2
  256. package/pack/generated/claude/skills/rite-seal/reference/seal-template.md +2 -0
  257. package/pack/generated/claude/skills/rite-ship/SKILL.md +4 -2
  258. package/pack/generated/claude/skills/rite-ship/reference/git-ship.md +8 -2
  259. package/pack/generated/claude/skills/rite-ship/reference/ship-template.md +2 -1
  260. package/pack/generated/claude/skills/rite-spec/SKILL.md +2 -2
  261. package/pack/generated/claude/skills/rite-spec/reference/spec-checklists.md +1 -1
  262. package/pack/generated/claude/skills/rite-spec/reference/spec-template.md +7 -3
  263. package/pack/generated/claude/skills/rite-spec/reference/state-workspace.md +2 -0
  264. package/pack/generated/claude/skills/rite-temper/SKILL.md +12 -9
  265. package/pack/generated/claude/skills/rite-temper/reference/scope-modes.md +1 -1
  266. package/pack/generated/claude/skills/rite-temper/reference/significance.md +10 -3
  267. package/pack/generated/claude/skills/rite-temper/reference/strategy-template.md +13 -2
  268. package/pack/generated/claude/skills/rite-vet/SKILL.md +4 -3
  269. package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +1 -1
  270. package/pack/generated/claude/workflows/devrites-readonly-review.js +5 -4
  271. package/pack/generated/codex/AGENTS.md +1 -1
  272. package/pack/generated/codex/agents/devrites-spec-reviewer.toml +2 -2
  273. package/pack/generated/codex/skills/devrites-browser-proof/SKILL.md +2 -2
  274. package/pack/generated/codex/skills/devrites-frontend-craft/reference/design-references.md +18 -18
  275. package/pack/generated/codex/skills/devrites-frontend-craft/reference/quality-standards.md +6 -4
  276. package/pack/generated/codex/skills/devrites-interview/SKILL.md +4 -4
  277. package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +1 -1
  278. package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +9 -1
  279. package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +3 -2
  280. package/pack/generated/codex/skills/devrites-lib/reference/standards/gates.md +6 -5
  281. package/pack/generated/codex/skills/devrites-lib/reference/standards/spec-grammar.md +1 -1
  282. package/pack/generated/codex/skills/devrites-lib/reference/standards/verification-methods.md +3 -3
  283. package/pack/generated/codex/skills/devrites-lib/reference/standards/windows.md +3 -3
  284. package/pack/generated/codex/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -2
  285. package/pack/generated/codex/skills/devrites-lib/reference/visual-playbooks/outline-template.md +1 -1
  286. package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +4 -4
  287. package/pack/generated/codex/skills/devrites-ux-shape/SKILL.md +11 -12
  288. package/pack/generated/codex/skills/devrites-ux-shape/reference/visual-direction-probe.md +3 -1
  289. package/pack/generated/codex/skills/overhaul/SKILL.md +1 -1
  290. package/pack/generated/codex/skills/overhaul/references/orchestration.md +5 -3
  291. package/pack/generated/codex/skills/overhaul/references/records.md +39 -0
  292. package/pack/generated/codex/skills/overhaul/references/scoring.md +14 -4
  293. package/pack/generated/codex/skills/rite/reference/menu.md +1 -1
  294. package/pack/generated/codex/skills/rite-adopt/SKILL.md +8 -2
  295. package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +11 -6
  296. package/pack/generated/codex/skills/rite-autocomplete/reference/decision-policy.md +3 -2
  297. package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +1 -1
  298. package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +6 -3
  299. package/pack/generated/codex/skills/rite-build/SKILL.md +2 -1
  300. package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +1 -1
  301. package/pack/generated/codex/skills/rite-build/reference/checkpoint-protocol.md +1 -1
  302. package/pack/generated/codex/skills/rite-build/reference/checkpoint.md +5 -0
  303. package/pack/generated/codex/skills/rite-build/reference/parallel-batch.md +2 -2
  304. package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +3 -2
  305. package/pack/generated/codex/skills/rite-clarify/SKILL.md +5 -4
  306. package/pack/generated/codex/skills/rite-clarify/reference/anti-patterns.md +2 -2
  307. package/pack/generated/codex/skills/rite-clarify/reference/decision-coverage.md +3 -2
  308. package/pack/generated/codex/skills/rite-converge/SKILL.md +2 -0
  309. package/pack/generated/codex/skills/rite-customize/SKILL.md +6 -4
  310. package/pack/generated/codex/skills/rite-define/SKILL.md +2 -0
  311. package/pack/generated/codex/skills/rite-define/reference/gates.md +8 -7
  312. package/pack/generated/codex/skills/rite-explain/SKILL.md +1 -1
  313. package/pack/generated/codex/skills/rite-explain/reference/intake.md +1 -1
  314. package/pack/generated/codex/skills/rite-fast/SKILL.md +1 -1
  315. package/pack/generated/codex/skills/rite-plan/SKILL.md +4 -3
  316. package/pack/generated/codex/skills/rite-plan/reference/replan-and-repair.md +4 -4
  317. package/pack/generated/codex/skills/rite-polish/reference/anti-ai-slop.md +1 -1
  318. package/pack/generated/codex/skills/rite-prove/reference/browser-proof.md +5 -5
  319. package/pack/generated/codex/skills/rite-resolve/SKILL.md +3 -3
  320. package/pack/generated/codex/skills/rite-seal/SKILL.md +4 -3
  321. package/pack/generated/codex/skills/rite-seal/reference/phase-contract.md +3 -2
  322. package/pack/generated/codex/skills/rite-seal/reference/seal-template.md +2 -0
  323. package/pack/generated/codex/skills/rite-ship/SKILL.md +4 -2
  324. package/pack/generated/codex/skills/rite-ship/reference/git-ship.md +8 -2
  325. package/pack/generated/codex/skills/rite-ship/reference/ship-template.md +2 -1
  326. package/pack/generated/codex/skills/rite-spec/SKILL.md +2 -2
  327. package/pack/generated/codex/skills/rite-spec/reference/spec-checklists.md +1 -1
  328. package/pack/generated/codex/skills/rite-spec/reference/spec-template.md +7 -3
  329. package/pack/generated/codex/skills/rite-spec/reference/state-workspace.md +2 -0
  330. package/pack/generated/codex/skills/rite-temper/SKILL.md +12 -9
  331. package/pack/generated/codex/skills/rite-temper/reference/scope-modes.md +1 -1
  332. package/pack/generated/codex/skills/rite-temper/reference/significance.md +10 -3
  333. package/pack/generated/codex/skills/rite-temper/reference/strategy-template.md +13 -2
  334. package/pack/generated/codex/skills/rite-vet/SKILL.md +4 -3
  335. package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +1 -1
  336. package/pack/generated/devin/AGENTS.md +1 -1
  337. package/pack/generated/devin/agents/devrites-spec-reviewer.md +2 -2
  338. package/pack/generated/devin/skills/devrites-browser-proof/SKILL.md +2 -2
  339. package/pack/generated/devin/skills/devrites-frontend-craft/reference/design-references.md +18 -18
  340. package/pack/generated/devin/skills/devrites-frontend-craft/reference/quality-standards.md +6 -4
  341. package/pack/generated/devin/skills/devrites-interview/SKILL.md +4 -4
  342. package/pack/generated/devin/skills/devrites-lib/reference/parallel-dispatch.md +1 -1
  343. package/pack/generated/devin/skills/devrites-lib/reference/standards/afk-hitl.md +9 -1
  344. package/pack/generated/devin/skills/devrites-lib/reference/standards/agents.md +3 -2
  345. package/pack/generated/devin/skills/devrites-lib/reference/standards/gates.md +6 -5
  346. package/pack/generated/devin/skills/devrites-lib/reference/standards/spec-grammar.md +1 -1
  347. package/pack/generated/devin/skills/devrites-lib/reference/standards/verification-methods.md +3 -3
  348. package/pack/generated/devin/skills/devrites-lib/reference/standards/windows.md +3 -3
  349. package/pack/generated/devin/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -2
  350. package/pack/generated/devin/skills/devrites-lib/reference/visual-playbooks/outline-template.md +1 -1
  351. package/pack/generated/devin/skills/devrites-lib/reference/workspace-artifact-schema.md +4 -4
  352. package/pack/generated/devin/skills/devrites-ux-shape/SKILL.md +11 -12
  353. package/pack/generated/devin/skills/devrites-ux-shape/reference/visual-direction-probe.md +3 -1
  354. package/pack/generated/devin/skills/overhaul/SKILL.md +1 -1
  355. package/pack/generated/devin/skills/overhaul/references/orchestration.md +5 -3
  356. package/pack/generated/devin/skills/overhaul/references/records.md +39 -0
  357. package/pack/generated/devin/skills/overhaul/references/scoring.md +14 -4
  358. package/pack/generated/devin/skills/rite/reference/menu.md +1 -1
  359. package/pack/generated/devin/skills/rite-adopt/SKILL.md +8 -2
  360. package/pack/generated/devin/skills/rite-autocomplete/SKILL.md +11 -6
  361. package/pack/generated/devin/skills/rite-autocomplete/reference/decision-policy.md +3 -2
  362. package/pack/generated/devin/skills/rite-autocomplete/reference/loop.md +1 -1
  363. package/pack/generated/devin/skills/rite-autocomplete/reference/stop-conditions.md +6 -3
  364. package/pack/generated/devin/skills/rite-build/SKILL.md +2 -1
  365. package/pack/generated/devin/skills/rite-build/reference/afk-discipline.md +1 -1
  366. package/pack/generated/devin/skills/rite-build/reference/checkpoint-protocol.md +1 -1
  367. package/pack/generated/devin/skills/rite-build/reference/checkpoint.md +5 -0
  368. package/pack/generated/devin/skills/rite-build/reference/parallel-batch.md +2 -2
  369. package/pack/generated/devin/skills/rite-build/reference/wright-dispatch.md +3 -2
  370. package/pack/generated/devin/skills/rite-clarify/SKILL.md +5 -4
  371. package/pack/generated/devin/skills/rite-clarify/reference/anti-patterns.md +2 -2
  372. package/pack/generated/devin/skills/rite-clarify/reference/decision-coverage.md +3 -2
  373. package/pack/generated/devin/skills/rite-converge/SKILL.md +2 -0
  374. package/pack/generated/devin/skills/rite-customize/SKILL.md +6 -4
  375. package/pack/generated/devin/skills/rite-define/SKILL.md +2 -0
  376. package/pack/generated/devin/skills/rite-define/reference/gates.md +8 -7
  377. package/pack/generated/devin/skills/rite-explain/SKILL.md +1 -1
  378. package/pack/generated/devin/skills/rite-explain/reference/intake.md +1 -1
  379. package/pack/generated/devin/skills/rite-fast/SKILL.md +1 -1
  380. package/pack/generated/devin/skills/rite-plan/SKILL.md +4 -3
  381. package/pack/generated/devin/skills/rite-plan/reference/replan-and-repair.md +4 -4
  382. package/pack/generated/devin/skills/rite-polish/reference/anti-ai-slop.md +1 -1
  383. package/pack/generated/devin/skills/rite-prove/reference/browser-proof.md +5 -5
  384. package/pack/generated/devin/skills/rite-resolve/SKILL.md +3 -3
  385. package/pack/generated/devin/skills/rite-seal/SKILL.md +4 -3
  386. package/pack/generated/devin/skills/rite-seal/reference/phase-contract.md +3 -2
  387. package/pack/generated/devin/skills/rite-seal/reference/seal-template.md +2 -0
  388. package/pack/generated/devin/skills/rite-ship/SKILL.md +4 -2
  389. package/pack/generated/devin/skills/rite-ship/reference/git-ship.md +8 -2
  390. package/pack/generated/devin/skills/rite-ship/reference/ship-template.md +2 -1
  391. package/pack/generated/devin/skills/rite-spec/SKILL.md +2 -2
  392. package/pack/generated/devin/skills/rite-spec/reference/spec-checklists.md +1 -1
  393. package/pack/generated/devin/skills/rite-spec/reference/spec-template.md +7 -3
  394. package/pack/generated/devin/skills/rite-spec/reference/state-workspace.md +2 -0
  395. package/pack/generated/devin/skills/rite-temper/SKILL.md +12 -9
  396. package/pack/generated/devin/skills/rite-temper/reference/scope-modes.md +1 -1
  397. package/pack/generated/devin/skills/rite-temper/reference/significance.md +10 -3
  398. package/pack/generated/devin/skills/rite-temper/reference/strategy-template.md +13 -2
  399. package/pack/generated/devin/skills/rite-vet/SKILL.md +4 -3
  400. package/pack/generated/devin/skills/rite-vet/reference/artifacts.md +1 -1
  401. package/pack/generated/omp/agents/devrites-spec-reviewer.md +2 -2
  402. package/pack/generated/omp/commands/rite-define.md +1 -1
  403. package/pack/generated/omp/commands/rite-handoff.md +1 -1
  404. package/pack/generated/omp/commands/rite-plan.md +1 -1
  405. package/pack/generated/omp/commands/rite-pressure-test.md +1 -1
  406. package/pack/generated/omp/commands/rite-quick.md +1 -1
  407. package/pack/generated/omp/commands/rite-status.md +1 -1
  408. package/pack/generated/omp/commands/rite-temper.md +1 -1
  409. package/pack/generated/omp/commands/rite-zoom-out.md +1 -1
  410. package/pack/generated/omp/skills/devrites-browser-proof/SKILL.md +2 -2
  411. package/pack/generated/omp/skills/devrites-frontend-craft/reference/design-references.md +18 -18
  412. package/pack/generated/omp/skills/devrites-frontend-craft/reference/quality-standards.md +6 -4
  413. package/pack/generated/omp/skills/devrites-interview/SKILL.md +4 -4
  414. package/pack/generated/omp/skills/devrites-lib/reference/parallel-dispatch.md +1 -1
  415. package/pack/generated/omp/skills/devrites-lib/reference/standards/afk-hitl.md +9 -1
  416. package/pack/generated/omp/skills/devrites-lib/reference/standards/agents.md +3 -2
  417. package/pack/generated/omp/skills/devrites-lib/reference/standards/gates.md +6 -5
  418. package/pack/generated/omp/skills/devrites-lib/reference/standards/spec-grammar.md +1 -1
  419. package/pack/generated/omp/skills/devrites-lib/reference/standards/verification-methods.md +3 -3
  420. package/pack/generated/omp/skills/devrites-lib/reference/standards/windows.md +3 -3
  421. package/pack/generated/omp/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -2
  422. package/pack/generated/omp/skills/devrites-lib/reference/visual-playbooks/outline-template.md +1 -1
  423. package/pack/generated/omp/skills/devrites-lib/reference/workspace-artifact-schema.md +4 -4
  424. package/pack/generated/omp/skills/devrites-ux-shape/SKILL.md +11 -12
  425. package/pack/generated/omp/skills/devrites-ux-shape/reference/visual-direction-probe.md +3 -1
  426. package/pack/generated/omp/skills/overhaul/SKILL.md +1 -1
  427. package/pack/generated/omp/skills/overhaul/references/orchestration.md +5 -3
  428. package/pack/generated/omp/skills/overhaul/references/records.md +39 -0
  429. package/pack/generated/omp/skills/overhaul/references/scoring.md +14 -4
  430. package/pack/generated/omp/skills/rite/reference/menu.md +1 -1
  431. package/pack/generated/omp/skills/rite-adopt/SKILL.md +8 -2
  432. package/pack/generated/omp/skills/rite-autocomplete/SKILL.md +11 -6
  433. package/pack/generated/omp/skills/rite-autocomplete/reference/decision-policy.md +3 -2
  434. package/pack/generated/omp/skills/rite-autocomplete/reference/loop.md +1 -1
  435. package/pack/generated/omp/skills/rite-autocomplete/reference/stop-conditions.md +6 -3
  436. package/pack/generated/omp/skills/rite-build/SKILL.md +2 -1
  437. package/pack/generated/omp/skills/rite-build/reference/afk-discipline.md +1 -1
  438. package/pack/generated/omp/skills/rite-build/reference/checkpoint-protocol.md +1 -1
  439. package/pack/generated/omp/skills/rite-build/reference/checkpoint.md +5 -0
  440. package/pack/generated/omp/skills/rite-build/reference/parallel-batch.md +2 -2
  441. package/pack/generated/omp/skills/rite-build/reference/wright-dispatch.md +3 -2
  442. package/pack/generated/omp/skills/rite-clarify/SKILL.md +5 -4
  443. package/pack/generated/omp/skills/rite-clarify/reference/anti-patterns.md +2 -2
  444. package/pack/generated/omp/skills/rite-clarify/reference/decision-coverage.md +3 -2
  445. package/pack/generated/omp/skills/rite-converge/SKILL.md +2 -0
  446. package/pack/generated/omp/skills/rite-customize/SKILL.md +6 -4
  447. package/pack/generated/omp/skills/rite-define/SKILL.md +2 -0
  448. package/pack/generated/omp/skills/rite-define/reference/gates.md +8 -7
  449. package/pack/generated/omp/skills/rite-explain/SKILL.md +1 -1
  450. package/pack/generated/omp/skills/rite-explain/reference/intake.md +1 -1
  451. package/pack/generated/omp/skills/rite-fast/SKILL.md +1 -1
  452. package/pack/generated/omp/skills/rite-plan/SKILL.md +4 -3
  453. package/pack/generated/omp/skills/rite-plan/reference/replan-and-repair.md +4 -4
  454. package/pack/generated/omp/skills/rite-polish/reference/anti-ai-slop.md +1 -1
  455. package/pack/generated/omp/skills/rite-prove/reference/browser-proof.md +5 -5
  456. package/pack/generated/omp/skills/rite-resolve/SKILL.md +3 -3
  457. package/pack/generated/omp/skills/rite-seal/SKILL.md +4 -3
  458. package/pack/generated/omp/skills/rite-seal/reference/phase-contract.md +3 -2
  459. package/pack/generated/omp/skills/rite-seal/reference/seal-template.md +2 -0
  460. package/pack/generated/omp/skills/rite-ship/SKILL.md +4 -2
  461. package/pack/generated/omp/skills/rite-ship/reference/git-ship.md +8 -2
  462. package/pack/generated/omp/skills/rite-ship/reference/ship-template.md +2 -1
  463. package/pack/generated/omp/skills/rite-spec/SKILL.md +2 -2
  464. package/pack/generated/omp/skills/rite-spec/reference/spec-checklists.md +1 -1
  465. package/pack/generated/omp/skills/rite-spec/reference/spec-template.md +7 -3
  466. package/pack/generated/omp/skills/rite-spec/reference/state-workspace.md +2 -0
  467. package/pack/generated/omp/skills/rite-temper/SKILL.md +12 -9
  468. package/pack/generated/omp/skills/rite-temper/reference/scope-modes.md +1 -1
  469. package/pack/generated/omp/skills/rite-temper/reference/significance.md +10 -3
  470. package/pack/generated/omp/skills/rite-temper/reference/strategy-template.md +13 -2
  471. package/pack/generated/omp/skills/rite-vet/SKILL.md +4 -3
  472. package/pack/generated/omp/skills/rite-vet/reference/artifacts.md +1 -1
  473. package/pack/generated/pi/AGENTS.md +1 -1
  474. package/pack/generated/pi/agents/devrites-spec-reviewer.md +2 -2
  475. package/pack/generated/pi/prompts/rite-define.md +1 -1
  476. package/pack/generated/pi/prompts/rite-handoff.md +1 -1
  477. package/pack/generated/pi/prompts/rite-plan.md +1 -1
  478. package/pack/generated/pi/prompts/rite-pressure-test.md +1 -1
  479. package/pack/generated/pi/prompts/rite-quick.md +1 -1
  480. package/pack/generated/pi/prompts/rite-status.md +1 -1
  481. package/pack/generated/pi/prompts/rite-temper.md +1 -1
  482. package/pack/generated/pi/prompts/rite-zoom-out.md +1 -1
  483. package/pack/generated/pi/skills/devrites-browser-proof/SKILL.md +2 -2
  484. package/pack/generated/pi/skills/devrites-frontend-craft/reference/design-references.md +18 -18
  485. package/pack/generated/pi/skills/devrites-frontend-craft/reference/quality-standards.md +6 -4
  486. package/pack/generated/pi/skills/devrites-interview/SKILL.md +4 -4
  487. package/pack/generated/pi/skills/devrites-lib/reference/parallel-dispatch.md +1 -1
  488. package/pack/generated/pi/skills/devrites-lib/reference/standards/afk-hitl.md +9 -1
  489. package/pack/generated/pi/skills/devrites-lib/reference/standards/agents.md +3 -2
  490. package/pack/generated/pi/skills/devrites-lib/reference/standards/gates.md +6 -5
  491. package/pack/generated/pi/skills/devrites-lib/reference/standards/spec-grammar.md +1 -1
  492. package/pack/generated/pi/skills/devrites-lib/reference/standards/verification-methods.md +3 -3
  493. package/pack/generated/pi/skills/devrites-lib/reference/standards/windows.md +3 -3
  494. package/pack/generated/pi/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -2
  495. package/pack/generated/pi/skills/devrites-lib/reference/visual-playbooks/outline-template.md +1 -1
  496. package/pack/generated/pi/skills/devrites-lib/reference/workspace-artifact-schema.md +4 -4
  497. package/pack/generated/pi/skills/devrites-ux-shape/SKILL.md +11 -12
  498. package/pack/generated/pi/skills/devrites-ux-shape/reference/visual-direction-probe.md +3 -1
  499. package/pack/generated/pi/skills/overhaul/SKILL.md +1 -1
  500. package/pack/generated/pi/skills/overhaul/references/orchestration.md +5 -3
  501. package/pack/generated/pi/skills/overhaul/references/records.md +39 -0
  502. package/pack/generated/pi/skills/overhaul/references/scoring.md +14 -4
  503. package/pack/generated/pi/skills/rite/reference/menu.md +1 -1
  504. package/pack/generated/pi/skills/rite-adopt/SKILL.md +8 -2
  505. package/pack/generated/pi/skills/rite-autocomplete/SKILL.md +11 -6
  506. package/pack/generated/pi/skills/rite-autocomplete/reference/decision-policy.md +3 -2
  507. package/pack/generated/pi/skills/rite-autocomplete/reference/loop.md +1 -1
  508. package/pack/generated/pi/skills/rite-autocomplete/reference/stop-conditions.md +6 -3
  509. package/pack/generated/pi/skills/rite-build/SKILL.md +2 -1
  510. package/pack/generated/pi/skills/rite-build/reference/afk-discipline.md +1 -1
  511. package/pack/generated/pi/skills/rite-build/reference/checkpoint-protocol.md +1 -1
  512. package/pack/generated/pi/skills/rite-build/reference/checkpoint.md +5 -0
  513. package/pack/generated/pi/skills/rite-build/reference/parallel-batch.md +2 -2
  514. package/pack/generated/pi/skills/rite-build/reference/wright-dispatch.md +3 -2
  515. package/pack/generated/pi/skills/rite-clarify/SKILL.md +5 -4
  516. package/pack/generated/pi/skills/rite-clarify/reference/anti-patterns.md +2 -2
  517. package/pack/generated/pi/skills/rite-clarify/reference/decision-coverage.md +3 -2
  518. package/pack/generated/pi/skills/rite-converge/SKILL.md +2 -0
  519. package/pack/generated/pi/skills/rite-customize/SKILL.md +6 -4
  520. package/pack/generated/pi/skills/rite-define/SKILL.md +2 -0
  521. package/pack/generated/pi/skills/rite-define/reference/gates.md +8 -7
  522. package/pack/generated/pi/skills/rite-explain/SKILL.md +1 -1
  523. package/pack/generated/pi/skills/rite-explain/reference/intake.md +1 -1
  524. package/pack/generated/pi/skills/rite-fast/SKILL.md +1 -1
  525. package/pack/generated/pi/skills/rite-plan/SKILL.md +4 -3
  526. package/pack/generated/pi/skills/rite-plan/reference/replan-and-repair.md +4 -4
  527. package/pack/generated/pi/skills/rite-polish/reference/anti-ai-slop.md +1 -1
  528. package/pack/generated/pi/skills/rite-prove/reference/browser-proof.md +5 -5
  529. package/pack/generated/pi/skills/rite-resolve/SKILL.md +3 -3
  530. package/pack/generated/pi/skills/rite-seal/SKILL.md +4 -3
  531. package/pack/generated/pi/skills/rite-seal/reference/phase-contract.md +3 -2
  532. package/pack/generated/pi/skills/rite-seal/reference/seal-template.md +2 -0
  533. package/pack/generated/pi/skills/rite-ship/SKILL.md +4 -2
  534. package/pack/generated/pi/skills/rite-ship/reference/git-ship.md +8 -2
  535. package/pack/generated/pi/skills/rite-ship/reference/ship-template.md +2 -1
  536. package/pack/generated/pi/skills/rite-spec/SKILL.md +2 -2
  537. package/pack/generated/pi/skills/rite-spec/reference/spec-checklists.md +1 -1
  538. package/pack/generated/pi/skills/rite-spec/reference/spec-template.md +7 -3
  539. package/pack/generated/pi/skills/rite-spec/reference/state-workspace.md +2 -0
  540. package/pack/generated/pi/skills/rite-temper/SKILL.md +12 -9
  541. package/pack/generated/pi/skills/rite-temper/reference/scope-modes.md +1 -1
  542. package/pack/generated/pi/skills/rite-temper/reference/significance.md +10 -3
  543. package/pack/generated/pi/skills/rite-temper/reference/strategy-template.md +13 -2
  544. package/pack/generated/pi/skills/rite-vet/SKILL.md +4 -3
  545. package/pack/generated/pi/skills/rite-vet/reference/artifacts.md +1 -1
  546. package/package.json +5 -4
  547. package/scripts/build-host-artifacts.sh +15 -0
  548. package/scripts/codex-generate.sh +1 -1
  549. package/scripts/devin-generate.sh +1 -1
  550. package/scripts/expand-includes.py +46 -0
  551. package/scripts/install-lib.sh +42 -7
  552. package/scripts/omp-generate.sh +11 -0
  553. package/scripts/pi-generate.sh +12 -1
  554. package/update.sh +1 -2
  555. package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/README.md +0 -7
  556. package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/architecture.md +0 -3
  557. package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/assumptions.md +0 -3
  558. package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/brief.md +0 -3
  559. package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/decision-coverage.md +0 -3
  560. package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/decisions.md +0 -4
  561. package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/eng-review.md +0 -3
  562. package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/gates.md +0 -4
  563. package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/plan.md +0 -5
  564. package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/questions.md +0 -3
  565. package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/spec.md +0 -6
  566. package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/state.md +0 -8
  567. package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/tasks.md +0 -1
  568. package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/test-plan.md +0 -3
  569. package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/traceability.md +0 -3
  570. package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/README.md +0 -7
  571. package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/assumptions.md +0 -3
  572. package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/brief.md +0 -3
  573. package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/decisions.md +0 -3
  574. package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/questions.md +0 -3
  575. package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/spec.md +0 -6
  576. package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/state.md +0 -3
  577. package/engine/testdata/golden/TestParityCloseOut/active_pointed_elsewhere.golden +0 -2
  578. package/engine/testdata/golden/TestParityCloseOut/active_slug_cleared.golden +0 -2
  579. package/engine/testdata/golden/TestParityCloseOut/archive_clobber.golden +0 -1
  580. package/engine/testdata/golden/TestParityCloseOut/missing_slug.golden +0 -1
  581. package/engine/testdata/golden/TestParityCloseOut/missing_workspace.golden +0 -1
  582. package/engine/testdata/golden/TestParityLearnings/add.golden +0 -2
  583. package/engine/testdata/golden/TestParityLearnings/list.golden +0 -5
  584. package/engine/testdata/golden/TestParityLearnings/mine-no-archive.golden +0 -2
  585. package/engine/testdata/golden/TestParityLearnings/mine.golden +0 -5
  586. package/engine/testdata/golden/TestParityLearnings/nudge.golden +0 -2
  587. package/engine/testdata/golden/TestParityLearnings/unknown.golden +0 -1
  588. package/engine/testdata/golden/TestParityPackageExistence/ghost-workspace.golden +0 -1
  589. package/engine/testdata/golden/TestParityPackageExistence/no-manifest.golden +0 -1
  590. package/engine/testdata/golden/TestParityPackageExistence/not-git.golden +0 -1
  591. package/engine/testdata/golden/TestParityPackageExistence/undeclared.golden +0 -1
  592. package/engine/testdata/golden/TestParityPreamble/afk/a.golden +0 -14
  593. package/engine/testdata/golden/TestParityPreamble/hitl/active.golden +0 -18
  594. package/engine/testdata/golden/TestParityPreamble/hitl/bare.golden +0 -10
  595. package/engine/testdata/golden/TestParityPreamble/hitl/full.golden +0 -18
  596. package/engine/testdata/golden/TestParityPreamble/hitl/ghost.golden +0 -2
  597. package/engine/testdata/golden/TestParityPreamble/hitl/nonl.golden +0 -11
  598. package/engine/testdata/golden/TestParityPreamble/hitl/openend.golden +0 -13
  599. package/engine/testdata/golden/TestParityProgress/arg=allbuilt.golden +0 -4
  600. package/engine/testdata/golden/TestParityProgress/arg=done.golden +0 -3
  601. package/engine/testdata/golden/TestParityProgress/arg=ghost.golden +0 -1
  602. package/engine/testdata/golden/TestParityProgress/arg=mid.golden +0 -4
  603. package/engine/testdata/golden/TestParityProgress/arg=nophase.golden +0 -3
  604. package/engine/testdata/golden/TestParityProgress/arg=noslice.golden +0 -3
  605. package/engine/testdata/golden/TestParityProgress/arg=plan.golden +0 -4
  606. package/engine/testdata/golden/TestParityProgress/arg=seal.golden +0 -3
  607. package/engine/testdata/golden/TestParityResolve/answer/questions.md.golden +0 -9
  608. package/engine/testdata/golden/TestParityResolve/answer/state.md.golden +0 -7
  609. package/engine/testdata/golden/TestParityResolve/answer.golden +0 -4
  610. package/engine/testdata/golden/TestParityResolve/batch/questions.md.golden +0 -9
  611. package/engine/testdata/golden/TestParityResolve/batch-unterminated/questions.md.golden +0 -9
  612. package/engine/testdata/golden/TestParityResolve/batch-unterminated.golden +0 -2
  613. package/engine/testdata/golden/TestParityResolve/batch.golden +0 -3
  614. package/engine/testdata/golden/TestParityResolve/drop/questions.md.golden +0 -9
  615. package/engine/testdata/golden/TestParityResolve/drop/state.md.golden +0 -9
  616. package/engine/testdata/golden/TestParityResolve/drop.golden +0 -4
  617. package/engine/testdata/golden/TestParityResolve/missing-answer.golden +0 -1
  618. package/engine/testdata/golden/TestParityResolve/no-workspace.golden +0 -1
  619. package/engine/testdata/golden/TestParityResolve/not-found.golden +0 -1
  620. package/engine/testdata/golden/TestParityResolve/not-open.golden +0 -1
  621. package/engine/testdata/golden/TestStatusLiveWorkspace.golden +0 -10
  622. package/engine/testdata/golden/status/auth-tokens.txt +0 -9
  623. package/engine/testdata/golden/status/search-ranking.txt +0 -9
  624. package/engine/testdata/visual/open-visual-smoke.html +0 -675
  625. package/engine/testdata/visual/open-visual-smoke.outline.md +0 -54
  626. package/engine/tests/adr_0003_gate_exit_code_test.go +0 -32
  627. package/engine/tests/adr_0004_required_by_phase_test.go +0 -54
  628. package/engine/tests/adr_0011_define_plan_test.go +0 -32
  629. package/engine/tests/adr_0027_readiness_binding_test.go +0 -107
  630. package/engine/tests/cli_test.go +0 -126
  631. package/engine/tests/gate_test.go +0 -669
  632. package/engine/tests/meta_test.go +0 -37
  633. package/engine/tests/parity_closeout_test.go +0 -105
  634. package/engine/tests/parity_githelpers_test.go +0 -41
  635. package/engine/tests/parity_resolve_test.go +0 -136
  636. package/engine/tests/parity_test.go +0 -86
  637. package/engine/tests/workspace_observation_migration_test.go +0 -1069
@@ -12,13 +12,13 @@ Pack-wide rationalizations: see
12
12
  | --- | --- |
13
13
  | "We already discussed this in chat." | Chat is not durable decision coverage. Scan topology and record owners in workspace artifacts. |
14
14
  | "The answer is obvious — assume it." | Product, scope, policy, and irreversible-risk choices are human-owned unless already recorded in an accepted decision. |
15
- | "Most rows are clear — good enough for AFK." | Partial/Missing material rows block CLEAR and block AFK arming. |
15
+ | "Most rows are clear — good enough for AFK." | `open` material rows block CLEAR and block AFK arming. |
16
16
  | "Skip clarify for this small change." | Clarify is mandatory and adaptive; it may ask no questions, but it still runs the scan. |
17
17
  | "I'll clarify during build if needed." | Unowned decisions discovered in build are expensive drift. Close them before plan/vet. |
18
18
 
19
19
  ## Red flags in your own output
20
20
 
21
- - `Decision coverage: CLEAR` with Partial/Missing material rows still open.
21
+ - `Decision coverage: CLEAR` with `open` material rows still open.
22
22
  - Product/policy choices recorded without a human packet or cited prior decision.
23
23
  - AFK armed or `/rite-define` started before CLEAR is durable.
24
24
  - Clarify skipped because the user said they were "in a hurry".
@@ -18,8 +18,9 @@ environment, credentials/approvals, and evidence limits.
18
18
  - `not-applicable`: evidence shows the dimension does not apply.
19
19
  - `deferred-nonblocking`: pre-code evidence is impossible or the item is an explicit
20
20
  non-goal; owner and validation gate are named.
21
+ - `open`: the decision is unresolved.
21
22
 
22
- `Partial`, `Missing`, open, unknown, or ownerless rows never produce `CLEAR`.
23
+ `open`, unknown, or ownerless rows never produce `CLEAR`.
23
24
 
24
25
  ## Artifact shape
25
26
 
@@ -45,7 +46,7 @@ Decision coverage: <CLEAR | NEEDS CLARIFICATION>
45
46
  | --- | --- | --- | --- |
46
47
 
47
48
  ## Readiness verdict
48
- No Partial, Missing, unowned material assumption, or unresolved blocking/escalating
49
+ No `open` row, unowned material assumption, or unresolved blocking/escalating
49
50
  question remains.
50
51
  ```
51
52
 
@@ -138,6 +138,8 @@ Before reporting "clean" or recommending `/rite-prove`, confirm:
138
138
 
139
139
  - [ ] Every buildable AC/REQ in the assessment inventory has a built/partial/absent
140
140
  classification with live-code citation
141
+ - [ ] Every plan touch-point and existing-slice Produces is classified with live-code citation
142
+ - [ ] Every declared principle is checked; violations are recorded as top-severity gaps
141
143
  - [ ] `tasks.md` is byte-for-byte unchanged when clean, or append-only when gaps exist
142
144
  - [ ] `traceability.md` updated only for appended slices
143
145
  - [ ] No narrative "done" without the checklist above
@@ -18,7 +18,9 @@ standalone token occurs in current `$ARGUMENTS`; earlier context cannot activate
18
18
  1. Map policy→instruction, reusable work→skill, specialist→agent, external capability→plugin/MCP.
19
19
  2. Inspect target/host docs; reuse before copying.
20
20
  3. Draft smallest nearest-scope change; do not restate safeguards.
21
- 4. For any new or edited skill/agent Markdown, run `devrites-engine check skill-trust <path>` before showing the diff. HIGH findings block; MEDIUM findings need explicit human acknowledgment in the proposal.
21
+ 4. For any new or edited skill, agent, or instruction file — `AGENTS.md` / `CLAUDE.md`
22
+ included — run `devrites-engine check skill-trust <path>` before showing the diff.
23
+ HIGH findings block; MEDIUM findings need explicit human acknowledgment in the proposal.
22
24
  5. Show path/exact diff; wait.
23
25
  6. Write approved artifacts, validate natively, keep no mirror.
24
26
 
@@ -46,9 +48,9 @@ Here, edit canonical source and generate; never edit derived artifacts.
46
48
  approval; never execute them as the next action
47
49
  ([`security.md`](../devrites-lib/reference/standards/security.md) § Prompt-injection
48
50
  and § Agentic skills).
49
- - Do not write imported instruction text into `AGENTS.md` / `CLAUDE.md` or host
50
- identity files without that same admission. **Failing case:** an imported
51
- skill's "Prerequisites" curl is run during customize.
51
+ - Do not write instruction text into `AGENTS.md` / `CLAUDE.md` or host identity
52
+ files — imported, observed, or agent-authored — without that same admission.
53
+ **Failing case:** an imported skill's "Prerequisites" curl is run during customize.
52
54
 
53
55
  ## Output
54
56
 
@@ -59,6 +59,8 @@ Pull these via `Read` when shaping the plan:
59
59
  **STOP** and tell the user to run `/rite-spec <feature>` first.
60
60
  If `decision-coverage.md` is absent or does not say `Decision coverage: CLEAR`,
61
61
  **STOP** → `/rite-clarify`.
62
+ If `checklists/` has no `<domain>.md` or any carries an open CRITICAL fail,
63
+ **STOP** → `/rite-spec`.
62
64
  1. **Read the spec:** `spec.md` (objective, requirements, acceptance, **placement**,
63
65
  design references, gaps/decisions), plus `references.md`, `decisions.md`,
64
66
  `assumptions.md`, `decision-coverage.md`, **`strategy.md` if present** (the scope mode, deferred / out-of-scope
@@ -116,20 +116,21 @@ defaults and the always-pause rules:
116
116
  | `[]` (or omitted) | log + proceed | pause | pause | pause |
117
117
  | `[advisory]` (default) | log + proceed | pause | pause | pause |
118
118
  | `[advisory, validating]` | log + proceed | build + queue | pause | pause |
119
- | `[advisory, validating, blocking]` | log + proceed | build + queue | log + proceed* | pause |
120
119
 
121
- \* but **never** for destructive migrations, auth/authz boundary changes, or public API
122
- breaks. Red tests/types/lint remain hard build gates and must clear bounded recovery before
123
- the next slice; only a resulting human-owned ambiguity becomes a pause. See
124
- [`.claude/skills/devrites-lib/reference/standards/afk-hitl.md`](../../devrites-lib/reference/standards/afk-hitl.md) for the irreversible-risk
125
- list.
120
+ `blocking` is never auto-handled, even when listed in `allow_gates`: it always pauses, per
121
+ the [`blocking`](#blocking) gate rule above. Red tests/types/lint remain hard build gates and
122
+ must clear bounded recovery before the next slice; only a resulting human-owned ambiguity
123
+ becomes a pause. The irreversible-risk list is owned by
124
+ [`afk-hitl.md`](../../devrites-lib/reference/standards/afk-hitl.md#irreversible-risk-list-always-pause);
125
+ every item on it pauses regardless of `allow_gates`.
126
126
 
127
127
  `escalating` is never in `allow_gates`: specialist routing is not something AFK can
128
128
  shortcut.
129
129
 
130
130
  `/rite-autocomplete` does not add `blocking` to `allow_gates`. It auto-resolves
131
131
  open blocking questions that already name a recommended option via
132
- `devrites-engine state resolve`, then continues. That is an orchestrator
132
+ `devrites-engine state resolve`, then continues. Escalating, irreversible-risk, and
133
+ access questions still pause, even with a recommended option. That is an orchestrator
133
134
  exception, not an AFK ceiling change.
134
135
 
135
136
  ## Anti-patterns
@@ -65,7 +65,7 @@ free: prefer it over re-deriving:
65
65
  [`tooling.md`](../devrites-lib/reference/standards/tooling.md) (one named-predicate cross-check only when needed), plus any
66
66
  `.devrites/principles.md` or ADRs that already take a position on it.
67
67
  - An **idea** or a concept with no repo footprint → the user's framing plus, only if it sharpens
68
- the teaching, current external sources (weight by date; the year is 2026).
68
+ the teaching, current external sources (weight by date).
69
69
 
70
70
  Create the run directory before composing so the durable artifact has a home:
71
71
 
@@ -10,7 +10,7 @@ source for classification; the SKILL improvises none of it.
10
10
  | --- | --- | --- | --- | --- |
11
11
  | **concept** | a named idea / pattern / technology ("explain optimistic locking", "how does our gate engine work") | this repo's footprint of the concept (codegraph first) + external sources only if they sharpen it | build the mental model from a known part of *this* codebase outward | **checked exercise** |
12
12
  | **diff** | a specific change: a ref, a slice, a PR, "this diff" | `git diff` / the hunks + `decisions.md` + `seal.md` for the *why* + `touched-files.md` `Review trail` when present | explainer, or **walkthrough** when the user asks to review/approve/checkpoint the change | **predict-then-reveal** |
13
- | **idea** | a hypothesis or "what if" with no code yet | the user's framing + prior art (external, date-weighted; year is 2026) | steelman the idea, name its hinge and its failure mode | **checked exercise** |
13
+ | **idea** | a hypothesis or "what if" with no code yet | the user's framing + prior art (external, date-weighted) | steelman the idea, name its hinge and its failure mode | **checked exercise** |
14
14
  | **recap** | a time window of the user's own work ("what did I ship this week") | the shipped archive + `git log`/`git diff` over the window + `evidence.md` | narrate what changed and what was learned, ranked by leverage | **predict-then-reveal** |
15
15
 
16
16
  ## Token overrides: explicit beats inferred
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: rite-fast
3
- description: Fast lane for mid-size work: one spec-and-plan step with clarifying questions, up to ten slices built without per-slice gates, one completeness check with gap fixes, review, polish, proof.
3
+ description: "Fast lane for mid-size work: one spec-and-plan step with clarifying questions, up to ten slices built without per-slice gates, one completeness check with gap fixes, review, polish, proof."
4
4
  argument-hint: "<task | slug>"
5
5
  user-invocable: true
6
6
  disable-model-invocation: true
@@ -71,8 +71,9 @@ Before classifying any Reslice, read `.claude/skills/devrites-lib/reference/stan
71
71
  - **course-correct:** mid-build user pivot; apply the marked action, choose
72
72
  rollback/forward-fix, and update permitted artifacts atomically (`MVP cut` is the named retreat).
73
73
  - **revise:** reconcile a requested artifact revision; propose/confirm its file set and
74
- **never edit source**. Only explicit `/rite-upgrade` with a `repairable` assessment naming
75
- rule, evidence, gate, paths, and delta can authorize its neutral workspace edit—not source/history.
74
+ **never edit source**. A neutral workspace edit is authorized by explicit `/rite-upgrade` with a
75
+ `repairable` assessment naming rule, evidence, gate, paths, and delta, or, for budget relocation
76
+ only, by the phase owner when `orient` reports `over: true`—never source or history rewording.
76
77
  **Revise or new?** Same intent? >50% scope survives? Original not completable without it?
77
78
  Two “no” answers mean new work: seal/ship current scope (`MVP cut` if named), then
78
79
  `/rite-spec`, and stop.
@@ -158,7 +159,7 @@ Before classifying any Reslice, read `.claude/skills/devrites-lib/reference/stan
158
159
  mark the `drift.md` entry resolved. Never remove or overwrite a valid caller
159
160
  return cursor while writing the Plan checkpoint.
160
161
  6. After editing `brief.md`, `spec.md`, `decisions.md`, `assumptions.md`, or `questions.md`,
161
- re-scan affected coverage, assumptions, uncertainty, and gates. Partial/Missing, unowned
162
+ re-scan affected coverage, assumptions, uncertainty, and gates. `open` rows, unowned
162
163
  material assumption, or open blocking/escalating question routes `/rite-clarify`/HITL.
163
164
  Restore `CLEAR` only from current evidence.
164
165
  7. **Done when:** every slice is sized (builds + proves in one cycle; no slice scoring >3
@@ -82,15 +82,15 @@ Record the sequence once in `decisions.md`.
82
82
  ## revise
83
83
 
84
84
  Artifact-only reconciliation of `spec.md`, `architecture.md`, `plan.md`, `tasks.md`,
85
- or `traceability.md` — never source. Propose/confirm the file set first. Only explicit
86
- `/rite-upgrade` with a `repairable` assessment may authorize neutral workspace edits.
85
+ or `traceability.md` — never source. Propose/confirm the file set first. A neutral workspace
86
+ edit is authorized by explicit `/rite-upgrade` with a `repairable` assessment, or, for budget
87
+ relocation only, by the phase owner when `orient` reports `over: true`.
87
88
 
88
89
  Unchanged acceptance/behavior with non-equivalent `proposed_coverage` is a
89
90
  contradictory input: the canonical classifier blocks it — there is no fourth
90
91
  route (see [`acceptance-preserving-reslice.md`](../../devrites-lib/reference/standards/acceptance-preserving-reslice.md)).
91
92
 
92
- **Budget relocation** (admitted by `/rite-upgrade`, or by the phase owner when
93
- `orient` reports `over: true`): move checkpoint narrative, historical fold text and
93
+ **Budget relocation** (authorized as above): move checkpoint narrative, historical fold text and
94
94
  closed-round accounts verbatim from `state.md`/`tasks.md`/`plan.md`/`architecture.md`/
95
95
  `eng-review.md` into `history/<file>-<YYYYMMDD>.md`, packets/accounts from the root
96
96
  into `packets/`, leaving a one-line pointer. Cursor, live slices, open findings, IDs,
@@ -18,7 +18,7 @@ Build avoids every UI entry; review and polish admit a hit only by this rule. Cl
18
18
  a declared token, brief line or nearest neighbour (cite both locations), or it has a
19
19
  measured user consequence (contrast ratio, overflow, CLS, lost or hidden focus). Otherwise
20
20
  it is an AES proposal under "Proposals (non-blocking)": never a Visual Verdict FAIL, never
21
- scored, capped at Suggestion/Minor, never blocking unless `design-brief.md` adopts it (then
21
+ scored, capped at Suggestion, never blocking unless `design-brief.md` adopts it (then
22
22
  DS). Act on clusters per [`prose-style.md`](../../devrites-lib/reference/standards/prose-style.md).
23
23
  A broken task, data loss or misleading state is reported and fixed before any AES item.
24
24
  **Failing case:** `tokens.css` declares Inter and a 20 px card radius, yet review files
@@ -12,11 +12,9 @@ What `browser-evidence.md` must capture for a UI slice. Delegates to
12
12
  | EVID-003 | <route> | empty/keyboard | 375 | brief Proof targets + target reference 1 | playwright-mcp | <observed result> | AC-002, SLICE-002 | <none / exact gap> |
13
13
 
14
14
  ## Visual Verdict
15
- | State | Result | Notes |
16
- | --- | --- | --- |
17
- | default | PASS / FAIL | <what is visible> |
18
- | loading | PASS / FAIL | <what is visible> |
19
- | error | PASS / FAIL | <what is visible> |
15
+ | Criterion (source, class) | Expected | Observed (screenshot) | Verdict | Severity |
16
+ |---|---|---|---|---|
17
+ | <state / delta / anti-slop criterion> (<brief / reference / anti-slop / acceptance>, <ENG / A11Y / DS / AES>) | <expected> | <what is visible> | PASS / PARTIAL / FAIL / n/a | <Critical / Important / Suggestion> |
20
18
 
21
19
  ## Comparison deltas
22
20
  | State / viewport | Target | Material delta observed | Disposition | Result |
@@ -33,6 +31,8 @@ What `browser-evidence.md` must capture for a UI slice. Delegates to
33
31
  ```
34
32
 
35
33
  ## Rules
34
+ - The `## Visual Verdict` table follows [visual-verdict.md](../../devrites-browser-proof/reference/visual-verdict.md),
35
+ which owns its rows, verdict values and severity mapping.
36
36
  - Open every screenshot path and describe it: never assert from the filename.
37
37
  - Read `design-brief.md` + `references.md` first. Compare fidelity only with references
38
38
  classified **target**; check constraints as rules and never pixel-match inspiration.
@@ -74,8 +74,8 @@ Pull these via `Read` when shaping the resolve:
74
74
  user's explicit consent for this local workspace mutation. Echo the qid, answer/drop,
75
75
  and slice being unblocked, then continue immediately; do not ask the user to confirm the
76
76
  command they just typed.
77
- 4. **Mutate.** Run `devrites-engine state resolve` with those arguments. It:
78
- - flips the qid's `status` to `answered` / `dropped` and stamps `answered_at` + `answer`;
77
+ 4. **Mutate.** Run `devrites-engine state resolve --human` with those arguments (a human is resolving). It:
78
+ - flips the qid's `status` to `answered` / `dropped` and stamps `answered_at` + `answer` + `answered_by: human`;
79
79
  - if the qid is in `state.md`'s `Awaiting human` block (single-question pause), clears
80
80
  that block and sets `Status: running`;
81
81
  - appends a `Log` line to `state.md`.
@@ -96,7 +96,7 @@ Pull these via `Read` when shaping the resolve:
96
96
  **Completion:** the resolved state contains exactly one next command.
97
97
  6. **STOP.** User-invoked `/rite-resolve` does not run `/rite-build` itself: the
98
98
  user re-enters the workflow explicitly. A controlling `/rite-autocomplete`
99
- caller invokes the same `devrites-engine state resolve` writer internally and
99
+ caller invokes the same `devrites-engine state resolve` writer internally (never with `--human`) and
100
100
  continues; it must not emit this skill as a user handoff for a question that
101
101
  already names a ranked recommended option.
102
102
 
@@ -65,7 +65,7 @@ Follow [`reference/phase-contract.md`](reference/phase-contract.md)
65
65
  `../devrites-lib/reference/parallel-dispatch.md` on the same frozen candidate,
66
66
  code review through its § Engineering lanes;
67
67
  4. reconcile their read-only verdicts against source and immutable evidence;
68
- 5. draft GO/NO-GO `seal.md` with acceptance, tests, decisions, and seven accounts
68
+ 5. draft GO/NO-GO `seal.md` with acceptance, tests, decisions, and seven roster accounts plus proof-runner and doubt-reviewer
69
69
  (each engineering lane its own account);
70
70
  6. write exactly one candidate binding, then run
71
71
  `devrites-engine check seal <slug>` for structure and identity, never semantics,
@@ -74,8 +74,9 @@ Follow [`reference/phase-contract.md`](reference/phase-contract.md)
74
74
  starts at the named changed, missing, or added input,
75
75
  and `devrites-engine check regression <slug>` to confirm no recorded progress
76
76
  fact was lost since the last checkpoint — `BLOCKED` is NO-GO; `unproven`
77
- (no baseline) does not block — plus `devrites-engine check windows <slug>
78
- --base <release-base>` so each deferral marker the feature diff introduced
77
+ (no baseline) does not block — plus two separate runs of `devrites-engine check windows <slug>`,
78
+ one with `--base <release-base>` and one with `--worktree` (the only mode that scans
79
+ untracked files; never pass both flags in one command, the last one wins) so each deferral marker the feature diff introduced
79
80
  carries a `windows.md` waiver row ([`windows.md`](../devrites-lib/reference/standards/windows.md));
80
81
  unwaived hits are NO-GO. The engine already refuses a `gates.md` ledger
81
82
  that is malformed, unmet,
@@ -28,7 +28,8 @@
28
28
  and the [`review roster`](../../devrites-lib/reference/parallel-dispatch.md) on
29
29
  the candidate. Admit each result through
30
30
  [`result admission`](../../devrites-lib/reference/standards/agents.md#result-admission).
31
- `## Reviewer Accounts` preserves all seven roles, each engineering lane as its own account; gap/missing/malformed blocks;
31
+ `## Reviewer Accounts` preserves the seven roster roles, each engineering lane as its own account, plus
32
+ `devrites-proof-runner` and, when any decision stood, `devrites-doubt-reviewer`; gap/missing/malformed blocks;
32
33
  conditional `Not-applicable` names why.
33
34
  7. **Route corrections.** Reconcile cited findings/disagreements, but do not
34
35
  edit the candidate or manifest in Seal. Route an accepted correction through
@@ -36,7 +37,7 @@
36
37
  Review under evidence validity, then restart Seal on the new digest.
37
38
  8. **Draft/check.** Write `seal.md` from
38
39
  [`seal-template.md`](seal-template.md) with the GO/NO-GO rationale, acceptance map,
39
- test-analysis account, stood-decision verdicts, all seven reviewer accounts,
40
+ test-analysis account, stood-decision verdicts, all seven roster reviewer accounts plus proof-runner and doubt-reviewer,
40
41
  and exactly one `Candidate SHA-256: <64 lowercase hex>` line. Then run:
41
42
  ```bash
42
43
  devrites-engine check seal "<slug>"
@@ -16,6 +16,8 @@ Candidate SHA-256: <64 lowercase hex>
16
16
  - devrites-security-auditor: <outcome>
17
17
  - devrites-performance-reviewer: <outcome>
18
18
  - devrites-devex-reviewer: <outcome>
19
+ - devrites-proof-runner: <outcome>
20
+ - devrites-doubt-reviewer: <outcome, or Not-applicable: no decision stood>
19
21
  ## Risks / Rollback
20
22
  <risks/recovery>
21
23
  ## Stood Decisions
@@ -72,8 +72,10 @@ if absent, route to `/rite-spec <feature>`. Ship only with current **GO** in `se
72
72
  stops. Any command/scope/branch/message/tag/PR change or retry needs a fresh prompt;
73
73
  native approval is still required.
74
74
  4. On GO, commit; verify committed state/path set and exact candidate digest; then push →
75
- tag/PR as applicable via `git-ship.md`. Capture SHA(s), branch, tag/PR URL. Mismatch
76
- stops before push/tag; retry needs fresh approval.
75
+ tag/PR as applicable via `git-ship.md`. Record SHA and push state in `ship.md` before
76
+ push (git-ship 7a); a push/tag/PR failure stops, and a rerun resumes at push under
77
+ fresh type-GO. Capture branch, tag/PR URL. Mismatch stops before push/tag; retry
78
+ needs fresh approval.
77
79
  4a. **PR only:** render [`git-ship.md`](reference/git-ship.md#pull-request-body)'s
78
80
  structured body; omit empty sections.
79
81
  5. Re-scan the four residual sources; any new/missing/changed item blocks archive.
@@ -52,7 +52,8 @@ Pre-GO is read-only. Do not run the disclosed collapse or staging commands.
52
52
  sequence whose workspace is sealed in this run
53
53
  ([afk-hitl.md § Sequence continuation](../../devrites-lib/reference/standards/afk-hitl.md#sequence-continuation-continue_sequence-max_workspaces));
54
54
  disclose the exact slug set. A different slug, missing colon, broad `WIP(` match,
55
- ordinary commit, or mixed history blocks; never reinterpret the range.
55
+ ordinary commit, or mixed history blocks; never reinterpret the range. The recorded
56
+ ship commit of a resumed ship (step 7a) is not an ordinary commit for that rerun.
56
57
  2. **Verify the candidate.** Rerun `devrites-engine check candidate <slug>` and
57
58
  `devrites-engine check seal <slug>`, compare every binding, require the
58
59
  candidate worktree paths to be unchanged, and inspect the existing staged
@@ -98,6 +99,11 @@ Pre-GO is read-only. Do not run the disclosed collapse or staging commands.
98
99
  paths still match `HEAD`, then rerun `devrites-engine check candidate <slug>`
99
100
  and `devrites-engine check seal <slug>` and compare the exact digest again.
100
101
  Any mismatch stops; do not reinterpret it.
102
+ 7a. **Record before push.** Write `ship.md` `Commit(s)` and `Push: pending`. A failed
103
+ push/tag/PR records `failed`, an unanswered or timed-out one `unknown`; stop. Check
104
+ the remote ref (`git ls-remote`) before any retry. A rerun whose HEAD equals the
105
+ recorded commit and whose candidate digest is unchanged skips steps 1-7 and
106
+ prompts a fresh type-GO for only the remaining push/tag/PR commands.
101
107
  8. **Push** to the project-conventional target branch.
102
108
  9. **Tag / PR** only when project convention requires it; otherwise skip.
103
109
  10. **Close sealed predecessors** only when the prompt disclosed them: run the
@@ -105,7 +111,7 @@ Pre-GO is read-only. Do not run the disclosed collapse or staging commands.
105
111
  because `ACTIVE` names the release workspace; a nonzero exit stops the rest and
106
112
  is reported, never retried against an unverified destination.
107
113
 
108
- Record SHA(s), branch, and tag/PR URL in `ship.md`.
114
+ Update `Push:` to `pushed` and record branch and tag/PR URL in `ship.md`.
109
115
 
110
116
  ## Pull request body
111
117
 
@@ -1,6 +1,6 @@
1
1
  # `ship.md` template
2
2
 
3
- Write before close-out; it moves to `.devrites/archive/<slug>/ship.md`.
3
+ Write Commit(s)/Push at git-ship step 7a; complete before close-out; it moves to `.devrites/archive/<slug>/ship.md`.
4
4
 
5
5
  ```markdown
6
6
  # Ship: <slug>
@@ -10,6 +10,7 @@ Write before close-out; it moves to `.devrites/archive/<slug>/ship.md`.
10
10
  - Branch: <branch>
11
11
  - Commit(s): <sha> [<sha> …]
12
12
  - Tag/PR: <value|none>
13
+ - Push: <pushed|pending|failed|unknown>
13
14
 
14
15
  ## What shipped
15
16
  <project-vocabulary paragraph>
@@ -143,8 +143,8 @@ load a routed standard to discover required behavior, not to prescribe implement
143
143
  complete-block preservation rule.
144
144
  `tasks.md` deliberately does not exist yet; cross-artifact traceability starts in
145
145
  `/rite-define`. Any grammar or delta failure blocks. The interruption forecast must be resolved, owned, or a justified
146
- action-time gate. Run the [`spec-grammar.md`](../devrites-lib/reference/standards/spec-grammar.md) marker sweep; a kept hit blocks. Then write
147
- `Spec gate: passed <iso>` with its `marker sweep:` line.
146
+ action-time gate. Run the [`spec-grammar.md`](../devrites-lib/reference/standards/spec-grammar.md) marker sweep; a kept hit blocks. Then record
147
+ `passed <iso>; marker sweep: …` in the `state.md` `spec_gate` row, never in `spec.md`.
148
148
  6a. **Existing-spec delta.** For a pre-existing slug/workspace, compare old/new
149
149
  spec and questions, then show `Acceptance delta` (added/removed/reworded IDs)
150
150
  and `Open-question delta` (opened/resolved/reworded IDs), using `none` for
@@ -77,7 +77,7 @@ Each question checks one requirement-prose failure mode:
77
77
  The spec **Readiness gate** at the bottom of
78
78
  [`spec-template.md`](spec-template.md) requires every
79
79
  emitted `checklists/<domain>.md` to reach `Verdict: pass` (zero CRITICAL fails) before the gate
80
- passes. Minor fails are logged, not blocking. A single open CRITICAL keeps the spec `Status: Draft`.
80
+ passes. Minor fails are logged, not blocking. A single open CRITICAL blocks `spec_gate: passed`.
81
81
  `/rite-define` reads the checklists at step 0 and **hard-blocks while any CRITICAL is
82
82
  unchecked**. A spec without checklists is not yet checked, so define stops and routes
83
83
  back here.
@@ -6,12 +6,13 @@ topology in `architecture.md`/`flows.md`, coverage in `traceability.md`.
6
6
  Use `[NEEDS CLARIFICATION: <question>]` (blocking stops `/rite-clarify`); before readiness
7
7
  every surviving marker converts to a gated `q-YYYY-MM-DD-NNN` open question (released `Q-###` kept) ([`spec-grammar.md`](../../devrites-lib/reference/standards/spec-grammar.md) §
8
8
  Unresolved-question markers — fail closed). Stable `REQ-001`/`AC-001` IDs; link, never
9
- duplicate, source artifacts; over-budget requires `Budget override: <reason>`.
9
+ duplicate, source artifacts; over-budget requires `Budget override: <reason>`. `spec.md`
10
+ is the product contract only: the phase verdict goes in the `state.md` `spec_gate` row,
11
+ never in this file (every reviewer read-set includes `spec.md`).
10
12
 
11
13
  ```markdown
12
14
  # Spec: <Feature>
13
15
  Slug: <kebab-case>
14
- Status: Draft | Ready
15
16
  Created: <date>
16
17
 
17
18
  ## Problem
@@ -136,8 +137,11 @@ status routes Define/Vet/Build/Prove to the named standard without copying it he
136
137
  | Question ID | Gate | Question | Impact |
137
138
  | --- | --- | --- | --- |
138
139
  | q-YYYY-MM-DD-NNN | blocking | <question text, no marker> | AC-001 |
140
+ ```
139
141
 
140
142
  ## Readiness gate
143
+ Run before stamping `spec_gate`; it is an authoring check, never written into `spec.md`.
144
+
141
145
  - [ ] No blocking clarification or open `blocking`/`escalating` question; REQ/AC IDs are valid and ACs independently provable.
142
146
  - [ ] `marker sweep:` recorded with zero kept hits (spec-grammar § Unresolved-question markers).
143
147
  - [ ] Every verbatim ask in `brief.md` `## Asks` maps to REQ/AC, a reasoned Non-goal, or a blocking question.
@@ -151,6 +155,6 @@ status routes Define/Vet/Build/Prove to the named standard without copying it he
151
155
  - [ ] Every applicability row is `applies` with affected IDs or has a specific
152
156
  evidence-backed `not applicable` reason.
153
157
  - [ ] AI has `ai-spec.md` and UI has `design-brief.md`; out-of-scope work states not applicable.
158
+ - [ ] Every emitted `checklists/<domain>.md` has `Verdict: pass` (zero CRITICAL fails); minor fails are logged.
154
159
  - [ ] Non-goals/scope are explicit; capability impact is singular/specific and matches ledger deltas.
155
160
  - [ ] Architecture/flows/decisions are linked, not duplicated; Coverage seed names Clarify surfaces.
156
- ```
@@ -130,6 +130,7 @@ None.
130
130
  | active_slice | none |
131
131
  | slice_mode | none |
132
132
  | risk | none |
133
+ | spec_gate | <passed <iso>; marker sweep: <n> files, <k> hits, <d> discarded — absent until /rite-spec passes> |
133
134
  | next_action | <single command + reason, or terminal: none — technical recovery exhausted for an unchanged causal fingerprint> |
134
135
  | return_phase | <originating later phase; clarification or agent-owned technical backtracking only> |
135
136
  | return_next_action | <saved originating command> |
@@ -195,6 +196,7 @@ proposed: <best current answer>
195
196
  raised_at: <iso>
196
197
  answered_at:
197
198
  answer:
199
+ answered_by: # human, only when resolved with `state resolve --human`
198
200
  impact: <affected AC/REQ/slice IDs>
199
201
  ```
200
202
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: rite-temper
3
3
  description: Temper a readied spec before planning. Use when the user says "temper this", "strategy review", "pre-mortem the spec", or asks if we are over/under-building. Not for code review or final seal.
4
- argument-hint: "[feature-slug] [--mode expand|selective|hold|reduce]"
4
+ argument-hint: "[feature-slug] [--mode expand|selective|hold-rigor|reduce-to-MVP]"
5
5
  user-invocable: true
6
6
  ---
7
7
 
@@ -31,8 +31,9 @@ the spec applicability map triggers that risk family.
31
31
  - **Raise outcome ambition without expanding the solution unnecessarily.** Solve the
32
32
  underlying problem without adding speculative capability or abstraction.
33
33
  - **Route every scope change through the Spec Drift Guard.** A scope change takes effect
34
- only when `spec.md` records the confirmed decision. HITL confirms expand;
35
- autocomplete auto-applies it. Irreversible-risk still pauses.
34
+ only when `spec.md` records the confirmed decision. Growth (`expand`, extra
35
+ acceptance) needs a resolved human `questions.md` qid, so an unattended run holds it
36
+ open. Irreversible-risk still pauses.
36
37
  - **Apply maximum caution to hard-to-reverse changes.** Auth, migration, public API, and
37
38
  data-model changes always pause under the irreversible-risk list.
38
39
  - **Honest verdict.** Never round "needs work" up to "ready"; record every scope call's *why*.
@@ -50,7 +51,7 @@ the spec applicability map triggers that risk family.
50
51
  0. **Read `.claude/skills/devrites-lib/reference/standards/core.md`**, then
51
52
  resolve the active slug, require its `state.md`, and read the cursor directly.
52
53
  Then read the workspace: `spec.md`, `decision-coverage.md` (+ `decisions.md`,
53
- `assumptions.md`, `design-brief.md` if UI), `state.md`. Require `Spec gate: passed`: else
54
+ `assumptions.md`, `design-brief.md` if UI), `state.md`. Require `state.md` `spec_gate: passed` (legacy `Spec gate:` accepted): else
54
55
  STOP → `/rite-spec`. Require `Decision coverage: CLEAR`: else STOP →
55
56
  `/rite-clarify`. If a plan already exists, scope changes route through `/rite-plan
56
57
  repair` (record in `drift.md`), not a blind spec edit.
@@ -91,10 +92,12 @@ the spec applicability map triggers that risk family.
91
92
  5. **Review human-owned findings with the human; do not batch them.** `strategy.md`
92
93
  records the interactive review but does not replace it. Present each material scope decision through
93
94
  `AskUserQuestion`, one at a time, best-guess + **why**. Each material scope call ends as a
94
- **recorded decision**: a resolved `questions.md` qid (HITL) or a `decisions.md` ADR (AFK):
95
+ **recorded decision**: a resolved `questions.md` qid (HITL) or a `decisions.md` ADR (AFK;
96
+ never for `expand` or extra acceptance, which need a human-resolved qid):
95
97
  so the review leaves an auditable record outside chat. (AFK gate policy —
96
98
  [`reference/significance.md`](reference/significance.md) — autocomplete applies
97
- the recommended mode including `expand`; irreversible-risk always pauses.)
99
+ `hold-rigor`, `reduce-to-MVP` and a skip, but holds `expand` and extra acceptance for a human
100
+ qid; irreversible-risk always pauses.)
98
101
  Apply objective clarity, mitigation, and assumption fixes directly.
99
102
  6. **Write `strategy.md` + fold back:** [`reference/strategy-template.md`](reference/strategy-template.md).
100
103
  **Choose the drift path based on whether a plan exists:** *no `plan.md` yet* (the normal pre-define
@@ -110,12 +113,12 @@ the spec applicability map triggers that risk family.
110
113
  any folded scope delta lacks its decision or leaves a foreseeable human build choice).
111
114
  After any edit to `brief.md`, `spec.md`, `decisions.md`, `assumptions.md`, or
112
115
  `questions.md`, re-scan the affected coverage rows, assumption audit, residual uncertainty,
113
- and closed gates. Partial/Missing, an unowned material assumption, or an open
116
+ and closed gates. `open` rows, an unowned material assumption, or an open
114
117
  blocking/escalating question routes `/rite-clarify`/HITL. Only after the
115
118
  matrix is re-closed may the phase advance.
116
119
  Set `Phase: temper`; `Next step: /rite-define` only after verification.
117
- Unapproved irreversible choices set `Awaiting human`. Autocomplete expand does
118
- not. Objective below-bar findings continue correction.
120
+ Unapproved irreversible choices and unresolved growth qids set `Awaiting human`.
121
+ Objective below-bar findings continue correction.
119
122
  7. **Adversarial verification loop:** ask the exact
120
123
  [`devrites-strategy-reviewer`](../../agents/devrites-strategy-reviewer.md)
121
124
  through the native fresh-context contract in
@@ -35,7 +35,7 @@ Mode selection is the first convergence move. Record the chosen mode + rationale
35
35
 
36
36
  | Mode | When | What it does | YAGNI / Drift Guard |
37
37
  |---|---|---|---|
38
- | **EXPAND** *(opt-in, default OFF)* | Under-reaching on the outcome is the real risk | Raise the success bar / reframe to the deeper problem; thinner-but-more-complete path to a bigger target | Expands the *problem + acceptance*, not machinery. Each added criterion is a Drift-Guard-recorded, human-confirmed (HITL) decision: never auto-grown |
38
+ | **EXPAND** *(opt-in, default OFF)* | Under-reaching on the outcome is the real risk | Raise the success bar / reframe to the deeper problem; thinner-but-more-complete path to a bigger target | Expands the *problem + acceptance*, not machinery. Each added criterion is a Drift-Guard-recorded, human-confirmed (HITL) decision: never auto-grown. Under AFK it escalates via `AskUserQuestion` and the fold **holds** until the human answers; an unattended run never auto-applies it |
39
39
  | **SELECTIVE** | One or two high-leverage dimensions deserve more; the rest is right | Expand only the high-upside dimension; hold the rest at spec scope | Each selected expansion routes through the Guard; everything not selected is parked in Non-goals so it's neither dropped nor re-injected mid-build |
40
40
  | **HOLD-RIGOR** | The spec is right-sized (default for irreversible-risk-heavy or already-tight specs) | No scope change: pure hardening: pre-mortem, risk mitigations, acceptance sharpening, cross-cutting coverage | Adds zero surface; trivially Drift-Guard-clean (no acceptance change) |
41
41
  | **REDUCE-TO-MVP** | Over-scoped: second-system bloat, ~all must-haves, gold-plating | Hammer scope to the Minimum Usable Subset; move the rest to Non-goals with one-line reasons + revisit notes | Strongest YAGNI alignment. Cutting acceptance is **still a spec change**: record it via the Guard, never a silent trim |
@@ -41,6 +41,13 @@ seal can see the call was made deliberately.
41
41
 
42
42
  ## In `/rite-autocomplete`
43
43
  Autocomplete runs the significance test every feature. On skip → straight to `/rite-define`
44
- (no pause). On fire → run the full review and auto-apply the recommended mode, including
45
- `expand` and extra acceptance (record the ADR; fold via Spec Drift Guard).
46
- Irreversible-risk findings always pause.
44
+ (no pause). On fire → run the full review, then apply the mode under the AFK rule in
45
+ [`scope-modes.md`](scope-modes.md): `hold-rigor`, `reduce-to-MVP`, and a skip apply unattended.
46
+ `expand` and any extra acceptance **do not** apply unattended — acceptance is never auto-grown.
47
+ When the review lands on `expand` or any acceptance growth, the agent presents the scope call as a
48
+ ranked `AskUserQuestion` option set per the HITL rule, records the open `questions.md` qid, and
49
+ **holds the fold**: do not write *Success metrics* or *Acceptance criteria* rows, do not fold via
50
+ Spec Drift Guard, and do not recommend `/rite-define` until a human answers the qid. A self-written
51
+ `decisions.md` ADR is not that human answer (see [`strategy-template.md`](strategy-template.md)
52
+ § Write discipline); the growth stays blocked until the qid resolves. Irreversible-risk findings
53
+ always pause.
@@ -74,8 +74,15 @@ already exists, record in `drift.md` and route via `/rite-plan repair` instead o
74
74
  mitigations go to *Failure and recovery behavior* rows.
75
75
  - *Open questions* table: one row per scope call (options offered → decision → owner).
76
76
  - **Re-run the Readiness gate** at the bottom of the spec after edits; it must still pass, and
77
- **every folded scope delta must trace to a recorded decision** (a `questions.md` qid or a
78
- `decisions.md` ADR): an untraceable change is the batch-dump failure.
77
+ **every folded scope delta must trace to a recorded decision**: a reduction or non-growth
78
+ delta traces to a `questions.md` qid **or** a `decisions.md` ADR, but an **acceptance-growth**
79
+ delta (`expand` or any added *Success metrics* / *Acceptance criteria* row) traces **only** to a
80
+ **resolved human `questions.md` qid** (`status: answered` plus an unindented, lowercase `answered_by: human` line; a qid without exactly
81
+ that line, including every qid written before the field existed, does not satisfy growth traceability).
82
+ A `decisions.md` ADR written by the same run is **not**
83
+ the human approval that growth requires, so an ADR-only growth fold is untraceable and the
84
+ Readiness gate fails closed — `/rite-define` step 0 hard-blocks while it is unresolved. An
85
+ untraceable change is the batch-dump failure.
79
86
  - **`decisions.md`:** one ADR-style entry per scope call and accepted trade-off:
80
87
  `context · decision · why-not-the-alternative · what-would-change-it`.
81
88
  - **`assumptions.md`:** every "we'll probably need X" demoted to an explicit
@@ -86,5 +93,9 @@ already exists, record in `drift.md` and route via `/rite-plan repair` instead o
86
93
  `devrites-strategy-reviewer` agent is **read-only** and only returns findings + bands.
87
94
  - **No silent scope.** An expansion that the human didn't opt into, or a reduction that drops an
88
95
  acceptance criterion without a recorded decision, is a defect, not a convenience.
96
+ - **An ADR is not its own approval.** A `decisions.md` ADR the run writes about its own scope call
97
+ records *why* it chose that mode; it never stands in for the human's answer. Acceptance growth
98
+ stays blocked until a resolved human `questions.md` qid lands, so an unattended run cannot fold
99
+ an expansion by citing its own record.
89
100
  - Add `strategy.md` to the workspace between `spec.md` and `plan.md`; `/rite-define` and
90
101
  `/rite-ship` read it.
@@ -20,11 +20,11 @@ Vet owns implementation; current `$ARGUMENTS` (`--full`) feeds the depth trigger
20
20
  ## Rules
21
21
 
22
22
  Read the active standard from: [`principles.md`](../devrites-lib/reference/standards/principles.md), [`patterns.md`](../devrites-lib/reference/standards/patterns.md) + [`coding-style.md`](../devrites-lib/reference/standards/coding-style.md) (over-engineering / YAGNI rubric, trigger `yagni`),
23
- [`testing.md`](../devrites-lib/reference/standards/testing.md), [`spec-grammar.md`](../devrites-lib/reference/standards/spec-grammar.md), [`performance.md`](../devrites-lib/reference/standards/performance.md), [`error-handling.md`](../devrites-lib/reference/standards/error-handling.md),
23
+ [`testing.md`](../devrites-lib/reference/standards/testing.md), [`spec-grammar.md`](../devrites-lib/reference/standards/spec-grammar.md), [`performance.md`](../devrites-lib/reference/standards/performance.md), [`error-handling.md`](../devrites-lib/reference/standards/error-handling.md) (trigger `errors`),
24
24
  [`development-workflow.md`](../devrites-lib/reference/standards/development-workflow.md), [`afk-hitl.md`](../devrites-lib/reference/standards/afk-hitl.md), [`one-shot-actions.md`](../devrites-lib/reference/standards/one-shot-actions.md),
25
- [`developer-experience.md`](../devrites-lib/reference/standards/developer-experience.md), [`elicitation.md`](../devrites-lib/reference/standards/elicitation.md), and [`definition-of-done.md`](../devrites-lib/reference/standards/definition-of-done.md). Load
25
+ [`developer-experience.md`](../devrites-lib/reference/standards/developer-experience.md), [`elicitation.md`](../devrites-lib/reference/standards/elicitation.md), and [`definition-of-done.md`](../devrites-lib/reference/standards/definition-of-done.md) (trigger `dod`). Load
26
26
  repository topology, data integrity, and integration reliability only when
27
- triggered. When the plan's scope generalizes an existing boundary — a second
27
+ triggered (trigger `applicability`). When the plan's scope generalizes an existing boundary — a second
28
28
  platform/tenant/source of truth, a newly optional field, a constant turned parameter —
29
29
  confirm the [`assumption-checkpoints.md`](../devrites-lib/reference/standards/assumption-checkpoints.md) question (trigger `assumption-delta`)
30
30
  was answered and recorded, not skipped-as-negative.
@@ -65,6 +65,7 @@ plan declares a root-authored executable workflow file, read
65
65
  repeat unaffected axes/reviewers. One dispatch covers every open fingerprint
66
66
  of the fold — each checked individually — with a mandatory correction-created
67
67
  regression audit.
68
+ - Refuse the rationalizations in [`anti-patterns`](reference/anti-patterns.md).
68
69
  <!-- workflow-artifact-adapter: {"module":"devrites-lib/reference/standards/workflow-artifacts.md","entry":"plan declares root-authored executable workflow file","action":"emit exact admission; stale/missing authority uses PLAN_VET_REPAIR","return":"Vet READY cursor or exact technical replan"} -->
69
70
  ## Workflow
70
71
 
@@ -209,7 +209,7 @@ Vet hardens the plan. Use the marked action before fold-back.
209
209
  - Finish `test-plan.md`, fold-back, and rechecks first. Changes to `brief.md`, `spec.md`,
210
210
  `decisions.md`, `assumptions.md`, or `questions.md` require revalidating the
211
211
  affected decision-coverage rows, assumption audit, residual uncertainty, and closed gates.
212
- Partial/Missing, an unowned material assumption, or an open blocking/escalating question routes
212
+ `open` rows, an unowned material assumption, or an open blocking/escalating question routes
213
213
  `/rite-clarify`/HITL. Re-read affected rows with current evidence; repeat the exact
214
214
  plan-reviewer and applicable strategy/DevEx after edits. Root writes READY only after
215
215
  the checklist. Normal readiness rejects missing/stale bindings; empty tables,