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
package/CHANGELOG.md CHANGED
@@ -2,6 +2,23 @@
2
2
 
3
3
  All notable changes to DevRites are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and DevRites adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Releases are generated automatically by [semantic-release](https://semantic-release.gitbook.io/) from Conventional Commits on `main`.
4
4
 
5
+ ## [6.0.0](https://github.com/ViktorsBaikers/DevRites/compare/v5.14.4...v6.0.0) (2026-10-10)
6
+
7
+ ### ⚠ BREAKING CHANGES
8
+
9
+ * **repo:** install.sh and `npx devrites` verify the release's
10
+ build-provenance attestation with `gh` and refuse to install when `gh`
11
+ is missing or verification fails; `npx devrites` uses a devrites-engine
12
+ found on PATH only when its version matches the release; the npm
13
+ package no longer runs a prepack script and ships the committed
14
+ pack/generated; frontmatter validation requires PyYAML; overhaul
15
+ records reject malformed task ids; the engine toolchain is go1.27.2.
16
+
17
+ ### Fixed
18
+
19
+ * **no-release:** keep spec-phase gate verdicts out of spec.md ([#98](https://github.com/ViktorsBaikers/DevRites/issues/98)) ([5c62af3](https://github.com/ViktorsBaikers/DevRites/commit/5c62af3993945adc6d8035c86a7cf8436e696ebb))
20
+ * **repo:** apply verified audit repairs across engine, pack and tests ([#99](https://github.com/ViktorsBaikers/DevRites/issues/99)) ([f056b5e](https://github.com/ViktorsBaikers/DevRites/commit/f056b5e76d276e57e469ac288efd16c91d3fd7b1))
21
+
5
22
  ## [5.14.4](https://github.com/ViktorsBaikers/DevRites/compare/v5.14.3...v5.14.4) (2026-10-03)
6
23
 
7
24
  ### Fixed
package/NOTICE.md CHANGED
@@ -13,10 +13,12 @@ distributing it, distributing modified versions, or commercial/organizational us
13
13
  requires **approval on request**. See [`LICENSE`](LICENSE).
14
14
 
15
15
  ## Host runtimes
16
- DevRites integrates with **Claude Code** and **Codex** and follows each host's
17
- project-local skill, agent, and instruction conventions. "Claude" and "Claude
18
- Code" are products of Anthropic; "Codex" is a product of OpenAI. DevRites is
19
- independent and unaffiliated with Anthropic and OpenAI.
16
+ DevRites integrates with **Claude Code**, **Codex**, **omp**, **pi**, and
17
+ **Devin CLI** and follows each host's project-local skill, agent, and instruction
18
+ conventions. "Claude" and "Claude Code" are products of Anthropic; "Codex" is a
19
+ product of OpenAI; omp, pi, and Devin CLI are products of their respective
20
+ owners. DevRites is independent of, and not affiliated with or endorsed by, any
21
+ of these hosts or their makers.
20
22
 
21
23
  ## Framework identifiers
22
24
 
package/README.md CHANGED
@@ -31,7 +31,7 @@ history can't lose it. After you clear the conversation, switch hosts, or hand
31
31
  the feature to another engineer, the next session reads the same plan,
32
32
  decisions, and evidence before it continues.
33
33
 
34
- **Status:** [`v5.14.4`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v5.14.4): see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
34
+ **Status:** [`v6.0.0`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v6.0.0): see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
35
35
 
36
36
  This is the latest published release; `main` may contain unreleased work.
37
37
 
@@ -47,7 +47,15 @@ This is the latest published release; `main` may contain unreleased work.
47
47
 
48
48
  ## Quick start
49
49
 
50
- **1. Install** from the root of your project. Node.js 18 or later is required.
50
+ **1. Install** from the root of your project. Node.js 18 or later is required to
51
+ install and run DevRites. Development in this repository (`npm ci`, which
52
+ `.npmrc` runs with `engine-strict=true`) needs Node.js 22.22.2 or later within
53
+ 22.x, or 24.15 or later; Node 23.x and 24.0 through 24.14 fail with `EBADENGINE`.
54
+ `gh` (GitHub CLI) must also be installed and authenticated, not merely
55
+ installed, because DevRites verifies the build-provenance attestation of every
56
+ release asset it downloads. Run `gh auth login` once, then `gh auth status` to
57
+ confirm. See [Install, update, and remove](#install-update-and-remove) for
58
+ which routes fail without it and which fall back to a local build.
51
59
 
52
60
  ```bash
53
61
  npx devrites@latest
@@ -307,20 +315,22 @@ Run `npx devrites@latest --help` for common flags and
307
315
  <br>
308
316
 
309
317
  Download the release-owned installer and its checksum before executing it. It
310
- needs `curl`, `gzip`, and `tar`.
318
+ needs `curl`, `gzip`, and `tar`, plus `gh` (GitHub CLI) installed and
319
+ authenticated (`gh auth login`).
311
320
 
312
321
  ```bash
313
322
  bootstrap_dir="$(mktemp -d)"
323
+ project_dir="$PWD"
314
324
  (
315
325
  set -e
316
326
  trap 'rm -rf "$bootstrap_dir"' EXIT HUP INT TERM
317
327
  cd "$bootstrap_dir"
318
328
  release=https://github.com/ViktorsBaikers/DevRites/releases/latest/download
319
- curl -fL --proto '=https' --proto-redir '=https' --connect-timeout 10 --max-time 60 --max-filesize 1048576 "$release/install.sh" | head -c 1048577 > install.sh
329
+ curl -q -fL --proto '=https' --proto-redir '=https' --connect-timeout 10 --max-time 60 --max-filesize 1048576 "$release/install.sh" | head -c 1048577 > install.sh
320
330
  install_status="${PIPESTATUS[0]}"
321
331
  [ "$(wc -c < install.sh)" -le 1048576 ] || { echo 'error: install.sh exceeds 1 MiB' >&2; exit 1; }
322
332
  [ "$install_status" -eq 0 ] || { echo 'error: install.sh download failed' >&2; exit 1; }
323
- curl -fL --proto '=https' --proto-redir '=https' --connect-timeout 10 --max-time 30 --max-filesize 4096 "$release/install.sh.sha256" | head -c 4097 > install.sh.sha256
333
+ curl -q -fL --proto '=https' --proto-redir '=https' --connect-timeout 10 --max-time 30 --max-filesize 4096 "$release/install.sh.sha256" | head -c 4097 > install.sh.sha256
324
334
  sidecar_status="${PIPESTATUS[0]}"
325
335
  [ "$(wc -c < install.sh.sha256)" -le 4096 ] || { echo 'error: install.sh.sha256 exceeds 4 KiB' >&2; exit 1; }
326
336
  [ "$sidecar_status" -eq 0 ] || { echo 'error: install.sh.sha256 download failed' >&2; exit 1; }
@@ -339,13 +349,14 @@ bootstrap_dir="$(mktemp -d)"
339
349
  exit 1
340
350
  fi
341
351
  [ "$got" = "$want" ] || { echo 'error: install.sh checksum mismatch' >&2; exit 1; }
352
+ command -v gh >/dev/null 2>&1 || { echo 'error: gh (GitHub CLI) is required and was not found' >&2; exit 1; }
353
+ gh attestation verify install.sh --repo ViktorsBaikers/DevRites --signer-workflow ViktorsBaikers/DevRites/.github/workflows/ci.yml@refs/heads/main || { if gh auth status >/dev/null 2>&1; then echo 'error: install.sh attestation verification failed: no build provenance from ViktorsBaikers/DevRites/.github/workflows/ci.yml@refs/heads/main' >&2; else echo 'error: gh is not authenticated; run gh auth login' >&2; fi; exit 1; }
342
354
 
343
355
  # Choose one Node-free operation:
344
- bash ./install.sh # install here
345
- # bash ./install.sh --target /path/to/project
346
- # bash ./install.sh --dry-run
347
- # bash ./install.sh update
348
- # bash ./install.sh uninstall
356
+ bash ./install.sh --target "$project_dir" # install into the directory you ran this from
357
+ # bash ./install.sh --dry-run --target "$project_dir"
358
+ # bash ./install.sh update --target "$project_dir"
359
+ # bash ./install.sh uninstall --target "$project_dir"
349
360
  )
350
361
  ```
351
362
 
@@ -392,14 +403,59 @@ proof. `devrites-engine migrate` owns deterministic v5 schema normalization.
392
403
  See the [CLI contract](docs/cli.md) and
393
404
  [ADR-0029](docs/adr/0029-v5-workspace-schema-and-native-migration.md).
394
405
 
406
+ Every release asset is verified with `gh attestation verify` before it is
407
+ decompressed, extracted, or executed, so `gh` must be installed and
408
+ authenticated (`gh auth login`). Without that, the Bash bootstrap (`install.sh`
409
+ fetched with `curl`) and `devrites-engine update` are fatal: they stop with no
410
+ fallback. `npx devrites@latest` instead falls back to compiling the shipped
411
+ `engine/` with `go build` when Go is installed, and the engine acquisition in
412
+ `scripts/install-lib.sh` (used by `install.sh` from a clone or an extracted
413
+ bundle) has its own fallback of the same kind.
414
+
395
415
  Release binaries and installers ship with SHA-256 sidecars and
396
- build-provenance attestations. Verify a download with
397
- `shasum -a 256 -c <file>.sha256` or
398
- `gh attestation verify <file> -R ViktorsBaikers/DevRites --signer-workflow ViktorsBaikers/DevRites/.github/workflows/ci.yml@refs/heads/main`.
416
+ build-provenance attestations. Verify a download with both
417
+ `shasum -a 256 -c <file>.sha256` and
418
+ `gh attestation verify <file> -R ViktorsBaikers/DevRites --signer-workflow ViktorsBaikers/DevRites/.github/workflows/ci.yml@refs/heads/main`
419
+ before it runs; the checksum alone is not enough (see the verified Bash
420
+ bootstrap above).
399
421
  Pin the signer workflow, because valid provenance shows where a build ran
400
422
  but does not show that the intended publishing step produced it. See
401
423
  [docs/release.md](docs/release.md).
402
424
 
425
+ Read a failure as "prove provenance or stop", not as a verdict about your
426
+ build. The bootstrap checks `gh` itself, exits 1 before `install.sh` runs, and
427
+ prints the cause. It says `error: gh (GitHub CLI) is required and was not
428
+ found` when `gh` is absent. When `gh` is present but logged out (`gh auth
429
+ status` fails) it says `error: gh is not authenticated; run gh auth login`.
430
+ Only when `gh` is logged in and still rejects the attestation does it say
431
+ `error: install.sh attestation verification failed: no build provenance from
432
+ ViktorsBaikers/DevRites/.github/workflows/ci.yml@refs/heads/main`. After that,
433
+ `install.sh` verifies the release bundle `devrites-<tag>.tar.gz` and reports the
434
+ same three causes as `attestation verification failed: gh (GitHub CLI) is
435
+ required and was not found`, `attestation verification failed: gh is not
436
+ authenticated ...; run 'gh auth login' and retry`, and `attestation verification
437
+ failed: no build provenance from <signer>`. The engine binary is acquired
438
+ separately: the bundled installer (`scripts/install-lib.sh`) and the npm route
439
+ report `attestation verification failed (gh must be installed and
440
+ authenticated)` for any of these causes, discard the downloaded binary, and
441
+ fall back to other sources. The bundled installer builds from the bundle's
442
+ `engine/` source when `go` is available, then tries an already-installed
443
+ `devrites-engine`, and only when none works does `install.sh` exit 1 with
444
+ `could not acquire devrites-engine` followed by that cause. `npx devrites@latest` repeats the combined message
445
+ before exiting 127 when no other engine is available. `devrites-engine update` reports `gh (GitHub CLI) is
446
+ required and must be authenticated for attestation verification` when `gh` is
447
+ absent, and `attestation verification failed for <asset>` whenever a present
448
+ `gh` rejects the asset, logged out or not.
449
+
450
+ There is no flag to skip, disable, or bypass attestation verification. The
451
+ `.sha256` sidecar is fetched from the same origin as the artifact, so a
452
+ substituted origin supplies a digest that matches its own payload, which is why
453
+ the sidecar is a corruption check and not a provenance one. If you cannot run
454
+ `gh auth login`, install Go and use `npx devrites@latest`, or clone this
455
+ repository and run `bash install.sh`: both compile `engine/` locally when the
456
+ download is refused, with `cd engine && go build -o devrites-engine .` as the
457
+ manual equivalent.
458
+
403
459
  </details>
404
460
 
405
461
  ## Hosts
@@ -412,8 +468,10 @@ but does not show that the intended publishing step produced it. See
412
468
  | **pi** | `.pi/skills/` | `.pi/agents/` | Prompt commands in `.pi/prompts/`, marked block in `AGENTS.md` | `/rite-spec` or `/skill:rite-spec` |
413
469
  | **Devin CLI** | `.devin/skills/` | `.devin/agents/` | Marked block in `AGENTS.md` | `/rite-spec` |
414
470
 
415
- On every host, `devrites-slice-wright` is the only writable specialist, and
416
- every other specialist is read-only and hook-free. Existing
471
+ On every host, among the lifecycle `devrites-*` specialists only
472
+ `devrites-slice-wright` is writable and the rest are read-only and hook-free;
473
+ the shipped profiles are the full role-to-permission map, and `/rite-doctor`
474
+ step 3 checks them. Existing
417
475
  settings and user content stay in place. On Devin CLI, dispatch goes through
418
476
  `run_subagent` with the exact `devrites-<role>` profile, and a missing profile
419
477
  stops for HITL instead of substituting `subagent_general`. Profiles load when a
@@ -470,7 +528,10 @@ traces. DevRites detects these tools but does not install them.
470
528
  - Installed host artifacts stay in the project. Use `--no-binary` or
471
529
  `DEVRITES_NO_BINARY=1` to avoid keeping a shared binary outside it.
472
530
  - npm, Bash, and `devrites-engine update` all require checksummed release
473
- assets. Remote fetches use HTTPS at every redirect hop, are bounded in size,
531
+ assets that also pass `gh attestation verify`, pinned to
532
+ `ViktorsBaikers/DevRites` and signer workflow
533
+ `ViktorsBaikers/DevRites/.github/workflows/ci.yml@refs/heads/main` (see
534
+ [Install, update, and remove](#install-update-and-remove)). Remote fetches use HTTPS at every redirect hop, are bounded in size,
474
535
  and never fall back to an unchecked raw file, source archive, tag, or default
475
536
  branch.
476
537
  - Install, update, and uninstall do not inspect target-project Git. Retained
package/SECURITY.md CHANGED
@@ -15,7 +15,7 @@ Please include:
15
15
  - A clear description of the vulnerability and its impact.
16
16
  - A minimal reproduction (commands, files, or a target project layout).
17
17
  - The DevRites version (commit SHA or release tag), affected host, and host
18
- version (Claude Code or Codex).
18
+ version (Claude Code, Codex, omp, pi, or Devin CLI).
19
19
  - Your name / handle for credit (optional).
20
20
 
21
21
  You should receive an acknowledgement within **5 business days** and a triage
@@ -119,17 +119,23 @@ and `.codex/config.toml` without replacing unrelated user settings. The shared
119
119
  `devrites-engine` executable is the only allowed artifact outside the project.
120
120
  It is installed to `DEVRITES_BIN_DIR`, a writable `~/.local/bin`, or a writable
121
121
  `/usr/local/bin`; `--no-binary` / `DEVRITES_NO_BINARY=1` skips it. The bootstrap
122
- and direct updater may fetch the release bundle and checksummed engine assets.
122
+ and direct updater may fetch the release bundle and checksummed engine assets,
123
+ each of which must also pass `gh attestation verify` (pinned to `ViktorsBaikers/DevRites` and signer workflow `ViktorsBaikers/DevRites/.github/workflows/ci.yml@refs/heads/main`).
123
124
  They never invoke `sudo` or edit shell startup files.
124
125
 
125
126
  The documented Node-free boundary downloads the release-owned `install.sh` and
126
- its exact-name sidecar before execution; mutable default-branch scripts are not
127
- recommended. Legacy local and extracted shim invocations remain compatible, but
127
+ its exact-name sidecar, then requires both the checksum and the build-provenance
128
+ attestation (`gh attestation verify`, pinned to `ViktorsBaikers/DevRites` and
129
+ signer workflow `ViktorsBaikers/DevRites/.github/workflows/ci.yml@refs/heads/main`)
130
+ to pass before execution, as in the README "verified Bash bootstrap"; mutable
131
+ default-branch scripts are not recommended. Legacy local and extracted shim invocations remain compatible, but
128
132
  their exact-release guarantee begins at that verified asset. A piped shim never
129
133
  treats current-directory siblings as its bundle.
130
134
 
131
135
  Network acquisition accepts only an exact SemVer release asset and its mandatory
132
- exact-filename SHA-256 sidecar. Every redirect hop must remain HTTPS, private
136
+ exact-filename SHA-256 sidecar, and every release asset must also pass
137
+ `gh attestation verify` (pinned to `ViktorsBaikers/DevRites` and signer workflow `ViktorsBaikers/DevRites/.github/workflows/ci.yml@refs/heads/main`;
138
+ `gh` must be installed and authenticated, with no bypass). Every redirect hop must remain HTTPS, private
133
139
  temporary-directory creation must succeed, and unchecked raw/source/default-
134
140
  branch fallbacks are absent. Representative in-stream ceilings are 1 MiB for
135
141
  release metadata, 4 KiB for a sidecar, and 64 MiB for an archive or binary, with
@@ -148,8 +154,9 @@ and [ADR-0028](docs/adr/0028-self-contained-engine-update.md) own the rationale.
148
154
  With `npx devrites@latest`, the CLI (`bin/devrites.mjs`) calls
149
155
  `devrites-engine` directly instead of running `install.sh`. The bundled host
150
156
  payload is pinned to the requested npm package version. The shim first tries the
151
- matching exact-release binary and its mandatory SHA-256 sidecar, then a
152
- package-local Go build, and then an existing engine. Remote responses are
157
+ matching exact-release binary, which must pass its mandatory SHA-256 sidecar and
158
+ `gh attestation verify` (pinned to `ViktorsBaikers/DevRites` and signer workflow `ViktorsBaikers/DevRites/.github/workflows/ci.yml@refs/heads/main`),
159
+ then a package-local Go build, and then an existing engine. Remote responses are
153
160
  byte-bounded and every redirect is checked before following it. It has no
154
161
  runtime npm dependencies. The same project and shared-binary boundaries apply
155
162
  to the Bash installer.
@@ -180,11 +187,17 @@ separate type-`GO` workflow gate still applies.
180
187
  Reviewer profiles are natively read-only. Claude keeps the root in project plan
181
188
  mode. Codex uses a workspace-capable root because a child cannot elevate above
182
189
  its parent; root source/test non-writing is therefore a workflow rule, not a
183
- Codex sandbox guarantee. On both hosts, `devrites-slice-wright` is the only
184
- writable specialist. Its task states the exact project-relative paths. The root
190
+ Codex sandbox guarantee. Among the lifecycle `devrites-*` specialists,
191
+ `devrites-slice-wright` is the only writable one on either host; the shipped
192
+ profiles are the full role-to-permission map, and `/rite-doctor` step 3 checks
193
+ them. Its task states the exact project-relative paths. The root
185
194
  waits, compares the returned file list and `git diff --name-only` with that
186
195
  contract, and rejects out-of-scope work. Exact-path scope is instruction-backed,
187
196
  not a per-task filesystem allowlist.
197
+ The standalone explicit skills ship their own writers: the `overhaul-*` agents
198
+ (ADR-0031) and `fast-builder` (ADR-0033) are write-capable (Codex `:workspace`,
199
+ Claude edit-capable); they run only when the user explicitly invokes /overhaul
200
+ or /rite-fast.
188
201
  Agent lifecycle, session history, compaction, presentation, browsing, indexes,
189
202
  and irreversible-action approval remain native host responsibilities.
190
203
 
@@ -200,8 +213,9 @@ Unrelated Git variables are preserved. Go and shell parity is covered by
200
213
  ### Third-party trust
201
214
 
202
215
  DevRites vendors no third-party code (see `NOTICE.md`). It runs through the
203
- external Claude Code or Codex host selected by the user and is independent of
204
- Anthropic and OpenAI. Codegraph, graphify, and Playwright MCP are optional
216
+ external host selected by the user (Claude Code, Codex, omp, pi, or Devin CLI)
217
+ and is independent of, and not affiliated with or endorsed by, any of these
218
+ hosts or their makers. Codegraph, graphify, and Playwright MCP are optional
205
219
  user-selected tools that DevRites calls through their documented interfaces
206
220
  rather than bundling them.
207
221
 
package/bin/devrites.mjs CHANGED
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  // devrites - npx entry point for the engine-owned DevRites installer.
3
- import { spawnSync } from 'node:child_process';
3
+ import { spawn, spawnSync } from 'node:child_process';
4
4
  import { createHash } from 'node:crypto';
5
5
  import { chmodSync, createReadStream, existsSync, mkdtempSync, readFileSync, rmSync } from 'node:fs';
6
6
  import { open } from 'node:fs/promises';
7
- import { tmpdir } from 'node:os';
7
+ import { constants as osConstants, tmpdir } from 'node:os';
8
8
  import { dirname, join } from 'node:path';
9
9
  import { fileURLToPath } from 'node:url';
10
10
 
@@ -16,6 +16,7 @@ const MAX_REDIRECTS = 5;
16
16
  const REDIRECT_STATUSES = new Set([301, 302, 303, 307, 308]);
17
17
  const temporaryDirs = new Set();
18
18
  let acquisitionFailure = null;
19
+ let engineChild = null;
19
20
 
20
21
  class DownloadError extends Error {}
21
22
 
@@ -31,6 +32,9 @@ function cleanupTemporaryDirs() {
31
32
  }
32
33
 
33
34
  process.on('exit', cleanupTemporaryDirs);
35
+ for (const signal of ['SIGINT', 'SIGTERM', 'SIGHUP']) {
36
+ process.on(signal, () => (engineChild ? engineChild.kill(signal) : process.exit(128 + osConstants.signals[signal])));
37
+ }
34
38
 
35
39
  const SUBCOMMAND_ALIASES = new Map([
36
40
  ['install', 'install'],
@@ -81,15 +85,26 @@ function run(command, args, options = {}) {
81
85
  return spawnSync(command, args, { stdio: options.stdio || 'inherit', cwd: options.cwd || process.cwd(), env: options.env || process.env });
82
86
  }
83
87
 
84
- function firstWorking(candidates, args, env = process.env) {
85
- let lastError = null;
86
- for (const candidate of candidates.filter(Boolean)) {
87
- const res = run(candidate, args, { env });
88
- if (!res.error) process.exit(res.status === null ? 1 : res.status);
89
- lastError = res.error;
90
- if (res.error.code !== 'ENOENT') break;
91
- }
92
- return lastError;
88
+ function runEngine(command, args, env) {
89
+ return new Promise((resolve) => {
90
+ let launchFailed = false;
91
+ const failLaunch = (error) => {
92
+ launchFailed = true;
93
+ engineChild = null;
94
+ resolve(error);
95
+ };
96
+ try {
97
+ engineChild = spawn(command, args, { stdio: 'inherit', env });
98
+ } catch (error) {
99
+ error.message = `${error.message} ${command}`;
100
+ failLaunch(error);
101
+ return;
102
+ }
103
+ engineChild.once('error', failLaunch);
104
+ engineChild.once('close', (code, signal) => {
105
+ if (!launchFailed) process.exit(signal ? 128 + osConstants.signals[signal] : code);
106
+ });
107
+ });
93
108
  }
94
109
 
95
110
  async function acquireEngine() {
@@ -98,6 +113,7 @@ async function acquireEngine() {
98
113
  if (!validRepository(repo) || !tag) throw new Error('DevRites repository and release tag must identify an exact release');
99
114
  const envEngine = process.env.DEVRITES_ENGINE_CLI || process.env.DEVRITES_CLI;
100
115
  if (envEngine && existsSync(envEngine)) return envEngine;
116
+ if (command === 'uninstall' && spawnSync('devrites-engine', ['uninstall', '-h'], { stdio: 'ignore' }).status === 0) return 'devrites-engine';
101
117
 
102
118
  const downloaded = await downloadEngine();
103
119
  if (downloaded) return downloaded;
@@ -121,7 +137,10 @@ async function acquireEngine() {
121
137
  }
122
138
  }
123
139
 
124
- return 'devrites-engine';
140
+ if (command === 'uninstall') return 'devrites-engine';
141
+ const probe = spawnSync('devrites-engine', ['version'], { encoding: 'utf8' });
142
+ if (!probe.error && probe.status === 0 && String(probe.stdout).trim().replace(/^v/, '') === tag.slice(1)) return 'devrites-engine';
143
+ return null;
125
144
  }
126
145
 
127
146
  function findGo() {
@@ -171,6 +190,14 @@ async function downloadEngine() {
171
190
  rmSync(`${out}.sha256`, { force: true });
172
191
  return null;
173
192
  }
193
+ const signer = `${repo}/.github/workflows/ci.yml@refs/heads/main`;
194
+ const attestation = spawnSync('gh', ['attestation', 'verify', out, '--repo', repo, '--signer-workflow', signer], { stdio: 'ignore', timeout: 120_000 });
195
+ if (attestation.error || attestation.status !== 0) {
196
+ acquisitionFailure = `release ${tag} asset ${name}: attestation verification failed (gh must be installed and authenticated)`;
197
+ rmSync(out, { force: true });
198
+ rmSync(`${out}.sha256`, { force: true });
199
+ return null;
200
+ }
174
201
  try {
175
202
  chmodSync(out, 0o755);
176
203
  } catch {
@@ -282,6 +309,10 @@ try {
282
309
  console.error(`devrites: ${error.message}`);
283
310
  process.exit(1);
284
311
  }
312
+ if (!engine) {
313
+ console.error(`devrites: devrites-engine was not found and could not be acquired${acquisitionFailure ? ` (${acquisitionFailure})` : ''}.`);
314
+ process.exit(127);
315
+ }
285
316
  const payloadDir = process.env.DEVRITES_HOST_ARTIFACT_DIR || join(root, 'pack', 'generated');
286
317
  const installerCommand = command === 'install' || command === 'update' || command === 'uninstall';
287
318
  const engineEnv = { ...process.env, DEVRITES_ENGINE_CLI: engine };
@@ -294,9 +325,12 @@ if (command === 'install' || command === 'update') {
294
325
  }
295
326
  args.push(...rest);
296
327
 
297
- const candidates = [engine, 'devrites-engine'];
298
- const lastError = firstWorking(candidates, args, engineEnv);
299
- if (lastError && lastError.code !== 'ENOENT') {
328
+ let lastError = null;
329
+ for (const candidate of [engine, 'devrites-engine']) {
330
+ lastError = await runEngine(candidate, args, engineEnv);
331
+ if (lastError.code !== 'ENOENT') break;
332
+ }
333
+ if (lastError.code !== 'ENOENT') {
300
334
  console.error('devrites: failed to launch devrites-engine:', lastError.message);
301
335
  } else {
302
336
  console.error(`devrites: devrites-engine was not found and could not be acquired${acquisitionFailure ? ` (${acquisitionFailure})` : ''}.`);
@@ -3,9 +3,12 @@
3
3
  - **Status:** Accepted
4
4
  - **Date:** 2026-07-08 (backfilled; decision predates the ADR log)
5
5
 
6
- > Network scope was narrowed by [ADR-0008](0008-sanctioned-engine-network-boundary.md):
7
- > deterministic workspace operations remain network-free, while explicit
8
- > updater/source-cache I/O is isolated in `internal/iohooks`.
6
+ > Network scope was narrowed by [ADR-0008](0008-sanctioned-engine-network-boundary.md),
7
+ > whose engine network allowance was superseded by
8
+ > [ADR-0024](0024-native-policy-offline-installer-boundary.md) and then reintroduced
9
+ > for release acquisition only, confined to `engine/internal/release`, by
10
+ > [ADR-0028](0028-self-contained-engine-update.md). Deterministic workspace
11
+ > operations remain network-free.
9
12
 
10
13
  ## Context
11
14
 
@@ -60,3 +60,12 @@ by the v5 pack declare the row at creation.
60
60
 
61
61
  Guard tests: `engine/internal/state/workspaceschema_test.go`,
62
62
  `engine/tests/parity_resolve_test.go`, `engine/tests/parity_closeout_test.go`.
63
+
64
+ ## Amendment (2026-10-06)
65
+
66
+ The Context section's "the current contract is schema 3" records the contract at
67
+ adoption. `state.SchemaVersion` is now 4: schema 4 adds the `gates.md`
68
+ acceptance ledger to the vetted artifact set (`engine/internal/state/schema.go`).
69
+ The decision above is unchanged — the engine declares the current workspace
70
+ schema, `state resolve` and `state close` refuse mismatched workspaces, and
71
+ `devrites-engine migrate` performs fail-closed normalization.
@@ -47,13 +47,13 @@ architecture; per-feature `decisions.md` files stay scoped to that feature.
47
47
  | ADR | Title | Status | Guard test |
48
48
  |-----|-------|--------|-----------|
49
49
  | [0001](0001-go-engine-as-control-plane.md) | Go engine as deterministic control plane | Accepted in part; all-state-transition/derivation scope superseded by 0024 | none |
50
- | [0002](0002-dual-host-harness.md) | Dual-host harness (Claude + Codex) | Accepted | `engine/tests/parity_*_test.go` |
50
+ | [0002](0002-dual-host-harness.md) | Dual-host harness (Claude + Codex) | Accepted in part; the `internal/harness` adapter and `harness-matrix` mechanism no longer exist, and the two-host count is superseded by the five host packs under `pack/generated/` (claude, codex, omp, pi, devin) | historical |
51
51
  | [0003](0003-gate-model-hitl-pause.md) | Gates block as HITL pause, never crash | Accepted | `engine/tests/adr_0003_gate_exit_code_test.go` |
52
52
  | [0004](0004-state-schema-phases-sections.md) | Phase-relative section completeness | Accepted | `engine/tests/adr_0004_required_by_phase_test.go`, `engine/internal/state/state_test.go` |
53
53
  | [0005](0005-hooks-as-engine-subcommands.md) | Hooks are engine subcommands, not shell scripts | Accepted; active hook clause superseded by 0018 | historical |
54
54
  | [0006](0006-clock-seam-and-engine-ci-gates.md) | Clock seam + Go static-analysis CI gates | Accepted in part; next-qid seam/guard superseded by 0024, CI analyzer wiring superseded by 0032 | historical |
55
55
  | [0007](0007-canonical-live-workspace-filenames.md) | Canonical live workspace filenames | Accepted; unsupported alias/migration clauses superseded by 0022 | `engine/internal/state/state_test.go`, `engine/internal/lib/cursor_compat_test.go` |
56
- | [0008](0008-sanctioned-engine-network-boundary.md) | Sanctioned engine network boundary | Accepted in part; engine network allowance superseded by 0024 | `engine/tests/meta_test.go` |
56
+ | [0008](0008-sanctioned-engine-network-boundary.md) | Sanctioned engine network boundary | Accepted in part; engine network allowance superseded by 0024, then reintroduced for release acquisition in `engine/internal/release` by 0028 | `engine/tests/meta_test.go` |
57
57
  | [0009](0009-prebuild-decision-coverage-and-readiness.md) | Pre-build decision coverage and implementation readiness | Accepted; semantic engine-gate implementation superseded by 0022 | historical |
58
58
  | [0010](0010-agent-first-fresh-context-orchestration.md) | Agent-first fresh-context orchestration | Accepted | `tests/native-orchestration-contract-test.sh`, `tests/codex-agent-generation-test.sh` |
59
59
  | [0011](0011-define-plan-transition-rights.md) | Separate Define authoring from the Plan checkpoint | Accepted | `engine/internal/state/state_test.go`, `engine/tests/adr_0011_define_plan_test.go` |
@@ -75,6 +75,7 @@ architecture; per-feature `decisions.md` files stay scoped to that feature.
75
75
  | [0027](0027-content-bound-build-readiness.md) | Content-bound build readiness | Accepted; AC ID map amended 2026-09-04 | `engine/tests/adr_0027_readiness_binding_test.go`, `engine/internal/state/acceptance_test.go` |
76
76
  | [0028](0028-self-contained-engine-update.md) | Self-contained engine update | Accepted | `engine/internal/install/install_test.go`, `engine/internal/release/release_test.go`, `engine/tests/meta_test.go` |
77
77
  | [0029](0029-v5-workspace-schema-and-native-migration.md) | v5 workspace schema and native migration | Accepted | `engine/internal/state/workspaceschema_test.go`, `engine/tests/parity_resolve_test.go`, `engine/tests/parity_closeout_test.go` |
78
+ | 0030 | Reserved number; no ADR is published under it | Unpublished | none |
78
79
  | [0031](0031-overhaul-agents-keep-every-tool.md) | `/overhaul` ships its own agents that keep every tool | Accepted; scopes the one-writer clauses of 0010/0015/0017/0018/0019 to `devrites-*` specialists | `scripts/validate-agent-composition.py`, `tests/codex-agent-generation-test.sh` |
79
80
  | [0032](0032-single-lint-gate-and-cached-pr-tests.md) | One engine lint gate, and PR tests that reuse main's results | Accepted | `tests/validation-governance-test.sh` |
80
81
  | [0033](0033-rite-fast-own-agents.md) | `/rite-fast` ships its own agents and its own writer | Accepted; adds `fast-builder` as a writer outside the `devrites-*` one-writer rule | `scripts/validate-agent-composition.py`, `tests/rite-fast-contract-test.sh` |
@@ -11,7 +11,7 @@ Issues and PRDs for this repo live as markdown files in `.scratch/`. For the end
11
11
  - Comments and conversation history append to the bottom of the file under a `## Comments` heading
12
12
  - An issue discovered while working another records `Found during: NN` (the parent issue number) near the `Status:` line; the discovery trail survives so a later audit can see where it came from
13
13
  - Ordering is recorded as optional lines near `Status:`: `Blocked by: NN, NN` (cannot start until those resolve), `Blocks: NN` (this issue gates those), `Relates: NN` (context link, no ordering). A dependency that would create a cycle is flagged and resolved by a human, never silently recorded.
14
- - An issue is **ready** when its `Status:` is open, every `Blocked by:` target is `resolved`, and nothing has claimed it. Pick work by lowest ready number; a blocked issue is skipped, not partially started. `scripts/issue-ready.sh` computes the ready frontier deterministically (optionally scoped to one feature slug) — use it instead of re-reading every file.
14
+ - An issue is **ready** when its `Status:` is `open` or `ready-for-agent`, every `Blocked by:` target is `resolved`, `done`, `wontfix` or `closed`, and nothing has claimed it. Pick work by lowest ready number; a blocked issue is skipped, not partially started. `scripts/issue-ready.sh` computes the ready frontier deterministically (optionally scoped to one feature slug) — use it instead of re-reading every file.
15
15
 
16
16
  ## When a skill says "publish to the issue tracker"
17
17
 
@@ -154,7 +154,8 @@ consume only local source, payload, and binary candidates.
154
154
 
155
155
  Direct `devrites-engine update` uses the separate `engine/internal/release`
156
156
  boundary to resolve the latest stable release and acquire its checksummed bundle
157
- and platform engine. It then invokes the downloaded engine with local paths, so
157
+ and platform engine, each also checked with `gh attestation verify` (pinned to `ViktorsBaikers/DevRites` and signer workflow `ViktorsBaikers/DevRites/.github/workflows/ci.yml@refs/heads/main`;
158
+ `gh` must be installed and authenticated). It then invokes the downloaded engine with local paths, so
158
159
  the candidate validates its own payload schema. `update --check` resolves only
159
160
  release metadata and downloads no assets. Engine `--to` and `--pre` selectors do
160
161
  not exist.
@@ -163,7 +164,9 @@ The shell entrypoints
163
164
  (`bin/devrites.mjs`) remain equivalent acquisition adapters. They acquire and
164
165
  verify the exact-release bundle or binary, then pass local paths and user flags
165
166
  through to the deterministic engine operation. All network paths require exact SemVer,
166
- HTTPS-only redirects, exact-filename SHA-256 sidecars, private temporary
167
+ HTTPS-only redirects, exact-filename SHA-256 sidecars, a `gh attestation verify`
168
+ pass for every release asset (pinned to `ViktorsBaikers/DevRites` and signer workflow `ViktorsBaikers/DevRites/.github/workflows/ci.yml@refs/heads/main`;
169
+ see [Install, update, and remove](../README.md#install-update-and-remove)), private temporary
167
170
  directories, bounded transfers, and full archive preflight. They provide no
168
171
  unchecked raw, source-archive, tag, or default-branch fallback.
169
172
 
@@ -216,7 +219,7 @@ never synthesizes a historical pass; ambiguous legacy candidate scope is a gap.
216
219
 
217
220
  The engine owns deterministic v5 schema normalization (`devrites-engine migrate`),
218
221
  not compatibility telemetry. Readers accept official v1/v2 bullet and v3 table
219
- `state.md` cursors; mutations require the current state schema (v3). Migration
222
+ `state.md` cursors; mutations require the current state schema (v4). Migration
220
223
  can create missing artifact stubs, but those stubs prove neither semantic
221
224
  readiness nor completed work. Wider pre-release compatibility experiments are
222
225
  not runtime contracts. [ADR-0029](adr/0029-v5-workspace-schema-and-native-migration.md)
package/docs/cli.md CHANGED
@@ -11,7 +11,8 @@ cross-host primitives; it never dispatches an agent or grades reviewer prose.
11
11
  `help`, `-h`, `--help`, `version`, and `--version` forms also remain supported.
12
12
  Each operational command and subcommand accepts `-h` / `--help` and prints that
13
13
  command's usage to stdout (exit 0) without requiring a workspace. Missing
14
- required arguments still print usage to stderr and exit 2.
14
+ required arguments still print usage to stderr and exit 2, except `state close`,
15
+ which exits 4 (see Output and exits).
15
16
 
16
17
  ```text
17
18
  devrites-engine install [flags]
@@ -48,16 +49,21 @@ devrites-engine gates <subcommand> <slug>
48
49
  devrites-engine claim <add|release|list|check>
49
50
  devrites-engine note <add|list|check|rm> <slug>
50
51
 
51
- devrites-engine state resolve <qid> "<answer>"
52
+ devrites-engine state resolve [--human] <qid> "<answer>"
52
53
  devrites-engine state merge-manifest <slug> [pred...]
53
54
  devrites-engine state close <slug>
54
55
  devrites-engine migrate <slug> [--dry-run] [--answer id=choice]
55
56
 
56
57
  devrites-engine secret-scan [--staged] [--stdin] [slug]
57
58
  devrites-engine open-visual <path-or-name> [--slug <slug>] [--no-open]
59
+ devrites-engine overhaul <tool> ...
58
60
  devrites-engine version
59
61
  ```
60
62
 
63
+ `overhaul <tool>` provides the run-record, admission, snapshot, scoring,
64
+ benchmark, and view tools used by the `/overhaul` skill; run
65
+ `devrites-engine overhaul --help` for its tools.
66
+
61
67
  Commands outside this operational list and the standard help/version forms are
62
68
  unsupported. There are no legacy engine aliases, tombstones, agent-protocol
63
69
  versions, semantic-readiness digests, or compatibility telemetry.
@@ -70,8 +76,11 @@ Run `devrites-engine update` in an installed project to resolve the latest
70
76
  stable release and update the project pack plus shared engine binary. The
71
77
  command downloads the release bundle and platform engine, verifies both exact
72
78
  filenames against their SHA-256 sidecars, then hands the extracted candidate to
73
- the downloaded engine. This avoids asking an old engine to validate a newer
74
- payload schema.
79
+ the downloaded engine. Each release asset must also pass `gh attestation verify`,
80
+ pinned to `ViktorsBaikers/DevRites` and signer workflow `ViktorsBaikers/DevRites/.github/workflows/ci.yml@refs/heads/main`,
81
+ so `gh` must be installed and authenticated, with no bypass (see
82
+ [Install, update, and remove](../README.md#install-update-and-remove)). This
83
+ avoids asking an old engine to validate a newer payload schema.
75
84
 
76
85
  `devrites-engine update --check` resolves and compares release metadata without
77
86
  downloading assets. `--source-dir` and `--payload-dir` remain the advanced local
@@ -91,9 +100,12 @@ comparison without changing the installation. Use
91
100
  retaining the shared `devrites-engine` binary.
92
101
 
93
102
  If an older direct engine reports `missing codex/hooks.json` or asks for
94
- `--source-dir`, run `npx devrites@latest update`, or use a checksum-verified
95
- release `install.sh` and run `bash ./install.sh update` once to install a release
96
- with the self-contained updater.
103
+ `--source-dir`, run `npx devrites@latest update`, or use a release `install.sh` that is both
104
+ checksum-verified and attestation-verified (pinned repo and signer workflow, see
105
+ the verified Bash bootstrap under
106
+ [README Install, update, and remove](../README.md#install-update-and-remove))
107
+ and run `bash ./install.sh update` once to install a release with the
108
+ self-contained updater.
97
109
 
98
110
  ## Checks
99
111
 
@@ -190,6 +202,9 @@ ledger blocks the phase exit.
190
202
  ## Atomic state operations
191
203
 
192
204
  `state resolve` also supports `--drop <qid> ["<reason>"]` and `--batch <file>`.
205
+ A leading `--human` (for the answer, `--drop` and `--batch` forms:
206
+ `state resolve --human --drop <qid>`, `state resolve --human --batch <file>`) also writes `answered_by: human`;
207
+ without it any `answered_by:` line in the resolved block, whatever its indentation or case, is removed.
193
208
  `state close` transactionally archives a shipped workspace and clears matching
194
209
  `ACTIVE`.
195
210
 
@@ -237,10 +252,15 @@ selection exits `2`; a malformed/unsafe manifest or candidate mismatch prints
237
252
  `candidate: BLOCKED: <reason>` to stderr and exits `3`.
238
253
 
239
254
  - `0`: passed or completed.
255
+ - `1`: runtime or I/O failure.
240
256
  - `2`: common invalid request or unreadable-state result.
241
257
  - `3`: common deterministic lifecycle or safety block.
242
258
  - Atomic state operations retain their documented operation-specific nonzero
243
259
  results.
260
+ - `state close` exits `4` for usage or a missing workspace.
261
+ - `state close` exits `3` for a schema refusal.
262
+ - `state close` exits `5` when an archive already exists.
263
+ - `state close` exits `1` for an invalid workspace, archive directory, or ACTIVE cursor.
244
264
 
245
265
  ## Root safety
246
266
 
@@ -251,8 +271,11 @@ commands refuse ambiguous, escaped, symlinked, or otherwise unsafe roots.
251
271
  Install, update application, and uninstall remain manifest-owned local
252
272
  operations. Direct engine update, shell, and npm may acquire a release candidate;
253
273
  all remote acquisition uses exact SemVer, HTTPS-only redirect hops, mandatory
254
- exact-filename SHA-256 sidecars, private temporary directories, and byte/archive
255
- bounds, with no unchecked raw/source/default-branch fallback. Update accepts
274
+ exact-filename SHA-256 sidecars, a `gh attestation verify` check of every release
275
+ asset (pinned to `ViktorsBaikers/DevRites` and signer workflow `ViktorsBaikers/DevRites/.github/workflows/ci.yml@refs/heads/main`;
276
+ `gh` must be installed and authenticated, with no bypass), private temporary
277
+ directories, and byte/archive bounds, with no unchecked raw/source/default-branch
278
+ fallback. Update accepts
256
279
  `--check` to compare the installed manifest version with the latest stable
257
280
  release without downloading assets. Remote-selector flags such as `--to` and
258
281
  `--pre` are unsupported.