devrites 6.0.4 → 6.1.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 (764) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +24 -9
  3. package/SECURITY.md +9 -6
  4. package/bin/devrites.mjs +28 -12
  5. package/docs/adr/0035-claude-root-leaves-plan-mode.md +33 -0
  6. package/docs/adr/0036-archive-recall-is-a-read-time-query.md +32 -0
  7. package/docs/adr/README.md +4 -2
  8. package/docs/cli.md +25 -2
  9. package/docs/command-map.md +10 -8
  10. package/docs/engine/commands.md +6 -3
  11. package/docs/harness-compliance.md +2 -2
  12. package/docs/orchestration.md +5 -4
  13. package/docs/release.md +4 -4
  14. package/docs/skills.md +2 -2
  15. package/engine/commands.go +1 -1
  16. package/engine/help.go +10 -6
  17. package/engine/internal/acceptance/cli.go +4 -1
  18. package/engine/internal/acceptance/exec.go +11 -11
  19. package/engine/internal/devritespaths/paths.go +5 -0
  20. package/engine/internal/hostpack/hostpack.go +48 -3
  21. package/engine/internal/install/apply.go +68 -1
  22. package/engine/internal/install/binary.go +4 -0
  23. package/engine/internal/install/install.go +25 -15
  24. package/engine/internal/install/merge.go +287 -123
  25. package/engine/internal/install/preflight.go +71 -1
  26. package/engine/internal/install/uninstall.go +7 -1
  27. package/engine/internal/install/update.go +7 -3
  28. package/engine/internal/lib/claims.go +30 -14
  29. package/engine/internal/lib/cli_observe.go +6 -0
  30. package/engine/internal/lib/context.go +24 -7
  31. package/engine/internal/lib/diffscope.go +79 -3
  32. package/engine/internal/lib/dispatch.go +34 -7
  33. package/engine/internal/lib/drift.go +9 -2
  34. package/engine/internal/lib/handoff.go +14 -5
  35. package/engine/internal/lib/metrics.go +29 -9
  36. package/engine/internal/lib/migrate.go +30 -12
  37. package/engine/internal/lib/next.go +22 -2
  38. package/engine/internal/lib/open_visual.go +3 -1
  39. package/engine/internal/lib/recall.go +355 -0
  40. package/engine/internal/lib/regression.go +20 -0
  41. package/engine/internal/lib/resolve.go +96 -53
  42. package/engine/internal/lib/secretscan.go +24 -1
  43. package/engine/internal/lib/taskgraph.go +31 -1
  44. package/engine/internal/lib/util.go +18 -7
  45. package/engine/internal/lib/windows.go +68 -15
  46. package/engine/internal/markdowntext/markdowntext.go +45 -6
  47. package/engine/internal/notes/cli.go +5 -3
  48. package/engine/internal/notes/notes.go +8 -3
  49. package/engine/internal/overhaul/admit/run.go +16 -12
  50. package/engine/internal/overhaul/overhaul.go +1 -0
  51. package/engine/internal/overhaul/records/check.go +52 -9
  52. package/engine/internal/overhaul/render/run.go +3 -2
  53. package/engine/internal/overhaul/snapshot/run.go +2 -2
  54. package/engine/internal/parallel/git.go +5 -6
  55. package/engine/internal/parallel/ops.go +3 -0
  56. package/engine/internal/parallel/pathdisjoint.go +9 -4
  57. package/engine/internal/release/release.go +11 -9
  58. package/engine/internal/safepath/safepath.go +17 -1
  59. package/engine/internal/state/budgets.go +8 -4
  60. package/engine/internal/state/feature.go +3 -1
  61. package/engine/internal/state/observation.go +12 -7
  62. package/engine/internal/state/taskgraph.go +67 -12
  63. package/engine/internal/state/write.go +7 -1
  64. package/engine/main.go +5 -1
  65. package/pack/.claude/agents/_shared/composition-overhaul.md +2 -0
  66. package/pack/.claude/agents/devrites-devex-reviewer.md +5 -0
  67. package/pack/.claude/agents/devrites-evidence-scout.md +4 -0
  68. package/pack/.claude/agents/devrites-plan-reviewer.md +4 -1
  69. package/pack/.claude/agents/overhaul-implementer.md +1 -0
  70. package/pack/.claude/settings.json +4 -4
  71. package/pack/.claude/skills/devrites-api-interface/SKILL.md +1 -1
  72. package/pack/.claude/skills/devrites-audit/SKILL.md +1 -1
  73. package/pack/.claude/skills/devrites-browser-proof/SKILL.md +1 -1
  74. package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +3 -2
  75. package/pack/.claude/skills/devrites-doubt/SKILL.md +1 -1
  76. package/pack/.claude/skills/devrites-frontend-craft/SKILL.md +1 -1
  77. package/pack/.claude/skills/devrites-interview/SKILL.md +1 -1
  78. package/pack/.claude/skills/devrites-lib/reference/intent-map.md +3 -3
  79. package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +4 -3
  80. package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +5 -4
  81. package/pack/.claude/skills/devrites-lib/reference/standards/ci-cd.md +2 -1
  82. package/pack/.claude/skills/devrites-lib/reference/standards/code-review.md +1 -1
  83. package/pack/.claude/skills/devrites-lib/reference/standards/data-integrity.md +4 -0
  84. package/pack/.claude/skills/devrites-lib/reference/standards/developer-experience.md +5 -0
  85. package/pack/.claude/skills/devrites-lib/reference/standards/loop-operations.md +3 -0
  86. package/pack/.claude/skills/devrites-lib/reference/standards/performance.md +2 -0
  87. package/pack/.claude/skills/devrites-lib/reference/standards/skill-authoring.md +13 -1
  88. package/pack/.claude/skills/devrites-lib/reference/standards/testing.md +13 -0
  89. package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +10 -6
  90. package/pack/.claude/skills/devrites-prose-craft/SKILL.md +1 -1
  91. package/pack/.claude/skills/devrites-source-driven/SKILL.md +1 -1
  92. package/pack/.claude/skills/devrites-ux-shape/SKILL.md +1 -1
  93. package/pack/.claude/skills/overhaul/references/orchestration.md +6 -2
  94. package/pack/.claude/skills/overhaul/references/records.md +8 -3
  95. package/pack/.claude/skills/rite/SKILL.md +4 -3
  96. package/pack/.claude/skills/rite/reference/menu.md +6 -5
  97. package/pack/.claude/skills/rite-adopt/SKILL.md +4 -3
  98. package/pack/.claude/skills/rite-autocomplete/SKILL.md +6 -5
  99. package/pack/.claude/skills/rite-autocomplete/reference/loop.md +2 -1
  100. package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +2 -1
  101. package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +19 -0
  102. package/pack/.claude/skills/rite-converge/SKILL.md +4 -3
  103. package/pack/.claude/skills/rite-customize/SKILL.md +1 -1
  104. package/pack/.claude/skills/rite-define/SKILL.md +3 -2
  105. package/pack/.claude/skills/rite-doctor/SKILL.md +12 -6
  106. package/pack/.claude/skills/rite-dogfood/SKILL.md +2 -2
  107. package/pack/.claude/skills/rite-explain/SKILL.md +1 -1
  108. package/pack/.claude/skills/rite-fast/SKILL.md +3 -1
  109. package/pack/.claude/skills/rite-handoff/SKILL.md +4 -3
  110. package/pack/.claude/skills/rite-learn/SKILL.md +2 -2
  111. package/pack/.claude/skills/rite-plan/reference/replan-and-repair.md +2 -0
  112. package/pack/.claude/skills/rite-plan/reference/slicing.md +3 -1
  113. package/pack/.claude/skills/rite-pov/SKILL.md +1 -1
  114. package/pack/.claude/skills/rite-pr-feedback/SKILL.md +5 -4
  115. package/pack/.claude/skills/rite-pressure-test/SKILL.md +7 -5
  116. package/pack/.claude/skills/rite-prototype/SKILL.md +1 -1
  117. package/pack/.claude/skills/rite-quick/SKILL.md +10 -5
  118. package/pack/.claude/skills/rite-resolve/SKILL.md +3 -3
  119. package/pack/.claude/skills/rite-resolve/reference/answer-protocol.md +4 -5
  120. package/pack/.claude/skills/rite-review/SKILL.md +2 -1
  121. package/pack/.claude/skills/rite-seal/SKILL.md +3 -3
  122. package/pack/.claude/skills/rite-seal/reference/go-no-go.md +2 -0
  123. package/pack/.claude/skills/rite-seal/reference/seal-template.md +5 -2
  124. package/pack/.claude/skills/rite-ship/reference/close-out.md +3 -2
  125. package/pack/.claude/skills/rite-spec/SKILL.md +4 -1
  126. package/pack/.claude/skills/rite-status/SKILL.md +1 -1
  127. package/pack/.claude/skills/rite-temper/reference/significance.md +2 -0
  128. package/pack/.claude/skills/rite-upgrade/SKILL.md +4 -2
  129. package/pack/.claude/skills/rite-vet/SKILL.md +3 -2
  130. package/pack/.claude/skills/rite-vet/reference/artifacts.md +1 -1
  131. package/pack/.claude/skills/rite-watch-pr/SKILL.md +1 -1
  132. package/pack/.claude/skills/rite-zoom-out/SKILL.md +1 -1
  133. package/pack/generated/claude/agents/devrites-devex-reviewer.md +5 -0
  134. package/pack/generated/claude/agents/devrites-evidence-scout.md +4 -0
  135. package/pack/generated/claude/agents/devrites-plan-reviewer.md +4 -1
  136. package/pack/generated/claude/agents/overhaul-backend-engineer.md +2 -0
  137. package/pack/generated/claude/agents/overhaul-boundary.md +2 -0
  138. package/pack/generated/claude/agents/overhaul-craft.md +2 -0
  139. package/pack/generated/claude/agents/overhaul-frontend-engineer.md +2 -0
  140. package/pack/generated/claude/agents/overhaul-implementer.md +3 -0
  141. package/pack/generated/claude/agents/overhaul-recon.md +2 -0
  142. package/pack/generated/claude/agents/overhaul-specialist.md +2 -0
  143. package/pack/generated/claude/agents/overhaul-verifier.md +2 -0
  144. package/pack/generated/claude/settings.json +4 -4
  145. package/pack/generated/claude/skills/devrites-api-interface/SKILL.md +1 -1
  146. package/pack/generated/claude/skills/devrites-audit/SKILL.md +1 -1
  147. package/pack/generated/claude/skills/devrites-browser-proof/SKILL.md +1 -1
  148. package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +3 -2
  149. package/pack/generated/claude/skills/devrites-doubt/SKILL.md +1 -1
  150. package/pack/generated/claude/skills/devrites-frontend-craft/SKILL.md +1 -1
  151. package/pack/generated/claude/skills/devrites-interview/SKILL.md +1 -1
  152. package/pack/generated/claude/skills/devrites-lib/reference/intent-map.md +3 -3
  153. package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +4 -3
  154. package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +5 -4
  155. package/pack/generated/claude/skills/devrites-lib/reference/standards/ci-cd.md +2 -1
  156. package/pack/generated/claude/skills/devrites-lib/reference/standards/code-review.md +1 -1
  157. package/pack/generated/claude/skills/devrites-lib/reference/standards/data-integrity.md +4 -0
  158. package/pack/generated/claude/skills/devrites-lib/reference/standards/developer-experience.md +5 -0
  159. package/pack/generated/claude/skills/devrites-lib/reference/standards/loop-operations.md +3 -0
  160. package/pack/generated/claude/skills/devrites-lib/reference/standards/performance.md +2 -0
  161. package/pack/generated/claude/skills/devrites-lib/reference/standards/skill-authoring.md +13 -1
  162. package/pack/generated/claude/skills/devrites-lib/reference/standards/testing.md +13 -0
  163. package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +10 -6
  164. package/pack/generated/claude/skills/devrites-prose-craft/SKILL.md +1 -1
  165. package/pack/generated/claude/skills/devrites-source-driven/SKILL.md +1 -1
  166. package/pack/generated/claude/skills/devrites-ux-shape/SKILL.md +1 -1
  167. package/pack/generated/claude/skills/overhaul/references/orchestration.md +6 -2
  168. package/pack/generated/claude/skills/overhaul/references/records.md +8 -3
  169. package/pack/generated/claude/skills/rite/SKILL.md +4 -3
  170. package/pack/generated/claude/skills/rite/reference/menu.md +6 -5
  171. package/pack/generated/claude/skills/rite-adopt/SKILL.md +4 -3
  172. package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +6 -5
  173. package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +2 -1
  174. package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +2 -1
  175. package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +19 -0
  176. package/pack/generated/claude/skills/rite-converge/SKILL.md +4 -3
  177. package/pack/generated/claude/skills/rite-customize/SKILL.md +1 -1
  178. package/pack/generated/claude/skills/rite-define/SKILL.md +3 -2
  179. package/pack/generated/claude/skills/rite-doctor/SKILL.md +12 -6
  180. package/pack/generated/claude/skills/rite-dogfood/SKILL.md +2 -2
  181. package/pack/generated/claude/skills/rite-explain/SKILL.md +1 -1
  182. package/pack/generated/claude/skills/rite-fast/SKILL.md +3 -1
  183. package/pack/generated/claude/skills/rite-handoff/SKILL.md +4 -3
  184. package/pack/generated/claude/skills/rite-learn/SKILL.md +2 -2
  185. package/pack/generated/claude/skills/rite-plan/reference/replan-and-repair.md +2 -0
  186. package/pack/generated/claude/skills/rite-plan/reference/slicing.md +3 -1
  187. package/pack/generated/claude/skills/rite-pov/SKILL.md +1 -1
  188. package/pack/generated/claude/skills/rite-pr-feedback/SKILL.md +5 -4
  189. package/pack/generated/claude/skills/rite-pressure-test/SKILL.md +7 -5
  190. package/pack/generated/claude/skills/rite-prototype/SKILL.md +1 -1
  191. package/pack/generated/claude/skills/rite-quick/SKILL.md +10 -5
  192. package/pack/generated/claude/skills/rite-resolve/SKILL.md +3 -3
  193. package/pack/generated/claude/skills/rite-resolve/reference/answer-protocol.md +4 -5
  194. package/pack/generated/claude/skills/rite-review/SKILL.md +2 -1
  195. package/pack/generated/claude/skills/rite-seal/SKILL.md +3 -3
  196. package/pack/generated/claude/skills/rite-seal/reference/go-no-go.md +2 -0
  197. package/pack/generated/claude/skills/rite-seal/reference/seal-template.md +5 -2
  198. package/pack/generated/claude/skills/rite-ship/reference/close-out.md +3 -2
  199. package/pack/generated/claude/skills/rite-spec/SKILL.md +4 -1
  200. package/pack/generated/claude/skills/rite-status/SKILL.md +1 -1
  201. package/pack/generated/claude/skills/rite-temper/reference/significance.md +2 -0
  202. package/pack/generated/claude/skills/rite-upgrade/SKILL.md +4 -2
  203. package/pack/generated/claude/skills/rite-vet/SKILL.md +3 -2
  204. package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +1 -1
  205. package/pack/generated/claude/skills/rite-watch-pr/SKILL.md +1 -1
  206. package/pack/generated/claude/skills/rite-zoom-out/SKILL.md +1 -1
  207. package/pack/generated/codex/agents/devrites-code-reviewer.toml +7 -7
  208. package/pack/generated/codex/agents/devrites-devex-reviewer.toml +6 -1
  209. package/pack/generated/codex/agents/devrites-evidence-scout.toml +4 -0
  210. package/pack/generated/codex/agents/devrites-frontend-reviewer.toml +1 -1
  211. package/pack/generated/codex/agents/devrites-plan-drafter.toml +3 -3
  212. package/pack/generated/codex/agents/devrites-plan-reviewer.toml +5 -2
  213. package/pack/generated/codex/agents/devrites-proof-runner.toml +2 -2
  214. package/pack/generated/codex/agents/devrites-security-auditor.toml +1 -1
  215. package/pack/generated/codex/agents/devrites-simplifier-reviewer.toml +1 -1
  216. package/pack/generated/codex/agents/devrites-slice-wright.toml +5 -5
  217. package/pack/generated/codex/agents/devrites-test-analyst.toml +5 -5
  218. package/pack/generated/codex/agents/devrites-upgrade-planner.toml +1 -1
  219. package/pack/generated/codex/agents/fast-builder.toml +3 -3
  220. package/pack/generated/codex/agents/fast-critic.toml +3 -3
  221. package/pack/generated/codex/agents/overhaul-backend-engineer.toml +2 -0
  222. package/pack/generated/codex/agents/overhaul-boundary.toml +2 -0
  223. package/pack/generated/codex/agents/overhaul-craft.toml +2 -0
  224. package/pack/generated/codex/agents/overhaul-frontend-engineer.toml +2 -0
  225. package/pack/generated/codex/agents/overhaul-implementer.toml +2 -0
  226. package/pack/generated/codex/agents/overhaul-recon.toml +2 -0
  227. package/pack/generated/codex/agents/overhaul-specialist.toml +2 -0
  228. package/pack/generated/codex/agents/overhaul-verifier.toml +2 -0
  229. package/pack/generated/codex/skills/devrites-api-interface/SKILL.md +1 -1
  230. package/pack/generated/codex/skills/devrites-audit/SKILL.md +1 -1
  231. package/pack/generated/codex/skills/devrites-browser-proof/SKILL.md +1 -1
  232. package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +3 -2
  233. package/pack/generated/codex/skills/devrites-doubt/SKILL.md +1 -1
  234. package/pack/generated/codex/skills/devrites-frontend-craft/SKILL.md +1 -1
  235. package/pack/generated/codex/skills/devrites-interview/SKILL.md +1 -1
  236. package/pack/generated/codex/skills/devrites-lib/reference/intent-map.md +3 -3
  237. package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +6 -5
  238. package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +5 -4
  239. package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +1 -1
  240. package/pack/generated/codex/skills/devrites-lib/reference/standards/ci-cd.md +2 -1
  241. package/pack/generated/codex/skills/devrites-lib/reference/standards/code-review.md +1 -1
  242. package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +1 -1
  243. package/pack/generated/codex/skills/devrites-lib/reference/standards/data-integrity.md +4 -0
  244. package/pack/generated/codex/skills/devrites-lib/reference/standards/developer-experience.md +5 -0
  245. package/pack/generated/codex/skills/devrites-lib/reference/standards/loop-operations.md +3 -0
  246. package/pack/generated/codex/skills/devrites-lib/reference/standards/performance.md +2 -0
  247. package/pack/generated/codex/skills/devrites-lib/reference/standards/skill-authoring.md +13 -1
  248. package/pack/generated/codex/skills/devrites-lib/reference/standards/testing.md +13 -0
  249. package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +11 -7
  250. package/pack/generated/codex/skills/devrites-prose-craft/SKILL.md +1 -1
  251. package/pack/generated/codex/skills/devrites-source-driven/SKILL.md +1 -1
  252. package/pack/generated/codex/skills/devrites-ux-shape/SKILL.md +1 -1
  253. package/pack/generated/codex/skills/overhaul/SKILL.md +15 -15
  254. package/pack/generated/codex/skills/overhaul/references/audit-domains.md +2 -2
  255. package/pack/generated/codex/skills/overhaul/references/orchestration.md +11 -7
  256. package/pack/generated/codex/skills/overhaul/references/records.md +8 -3
  257. package/pack/generated/codex/skills/rite/SKILL.md +4 -3
  258. package/pack/generated/codex/skills/rite/reference/menu.md +6 -5
  259. package/pack/generated/codex/skills/rite-adopt/SKILL.md +4 -3
  260. package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +7 -6
  261. package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +2 -1
  262. package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +2 -1
  263. package/pack/generated/codex/skills/rite-build/SKILL.md +2 -2
  264. package/pack/generated/codex/skills/rite-build/reference/parallel-batch.md +1 -1
  265. package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +20 -1
  266. package/pack/generated/codex/skills/rite-clarify/SKILL.md +1 -1
  267. package/pack/generated/codex/skills/rite-converge/SKILL.md +5 -4
  268. package/pack/generated/codex/skills/rite-customize/SKILL.md +1 -1
  269. package/pack/generated/codex/skills/rite-define/SKILL.md +4 -3
  270. package/pack/generated/codex/skills/rite-doctor/SKILL.md +12 -6
  271. package/pack/generated/codex/skills/rite-dogfood/SKILL.md +2 -2
  272. package/pack/generated/codex/skills/rite-explain/SKILL.md +1 -1
  273. package/pack/generated/codex/skills/rite-fast/SKILL.md +8 -6
  274. package/pack/generated/codex/skills/rite-frame/SKILL.md +1 -1
  275. package/pack/generated/codex/skills/rite-handoff/SKILL.md +4 -3
  276. package/pack/generated/codex/skills/rite-learn/SKILL.md +2 -2
  277. package/pack/generated/codex/skills/rite-plan/SKILL.md +1 -1
  278. package/pack/generated/codex/skills/rite-plan/reference/replan-and-repair.md +2 -0
  279. package/pack/generated/codex/skills/rite-plan/reference/slicing.md +3 -1
  280. package/pack/generated/codex/skills/rite-polish/SKILL.md +2 -2
  281. package/pack/generated/codex/skills/rite-pov/SKILL.md +1 -1
  282. package/pack/generated/codex/skills/rite-pr-feedback/SKILL.md +5 -4
  283. package/pack/generated/codex/skills/rite-pressure-test/SKILL.md +7 -5
  284. package/pack/generated/codex/skills/rite-prototype/SKILL.md +1 -1
  285. package/pack/generated/codex/skills/rite-prove/SKILL.md +1 -1
  286. package/pack/generated/codex/skills/rite-quick/SKILL.md +11 -6
  287. package/pack/generated/codex/skills/rite-resolve/SKILL.md +3 -3
  288. package/pack/generated/codex/skills/rite-resolve/reference/answer-protocol.md +4 -5
  289. package/pack/generated/codex/skills/rite-review/SKILL.md +3 -2
  290. package/pack/generated/codex/skills/rite-seal/SKILL.md +4 -4
  291. package/pack/generated/codex/skills/rite-seal/reference/go-no-go.md +2 -0
  292. package/pack/generated/codex/skills/rite-seal/reference/seal-template.md +5 -2
  293. package/pack/generated/codex/skills/rite-ship/SKILL.md +1 -1
  294. package/pack/generated/codex/skills/rite-ship/reference/close-out.md +3 -2
  295. package/pack/generated/codex/skills/rite-spec/SKILL.md +5 -2
  296. package/pack/generated/codex/skills/rite-status/SKILL.md +1 -1
  297. package/pack/generated/codex/skills/rite-temper/SKILL.md +2 -2
  298. package/pack/generated/codex/skills/rite-temper/reference/significance.md +2 -0
  299. package/pack/generated/codex/skills/rite-upgrade/SKILL.md +4 -2
  300. package/pack/generated/codex/skills/rite-vet/SKILL.md +4 -3
  301. package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +1 -1
  302. package/pack/generated/codex/skills/rite-watch-pr/SKILL.md +1 -1
  303. package/pack/generated/codex/skills/rite-zoom-out/SKILL.md +1 -1
  304. package/pack/generated/devin/AGENTS.md +1 -1
  305. package/pack/generated/devin/agents/devrites-devex-reviewer.md +5 -0
  306. package/pack/generated/devin/agents/devrites-evidence-scout.md +4 -0
  307. package/pack/generated/devin/agents/devrites-plan-reviewer.md +4 -1
  308. package/pack/generated/devin/agents/overhaul-backend-engineer.md +2 -0
  309. package/pack/generated/devin/agents/overhaul-boundary.md +2 -0
  310. package/pack/generated/devin/agents/overhaul-craft.md +2 -0
  311. package/pack/generated/devin/agents/overhaul-frontend-engineer.md +2 -0
  312. package/pack/generated/devin/agents/overhaul-implementer.md +2 -0
  313. package/pack/generated/devin/agents/overhaul-recon.md +2 -0
  314. package/pack/generated/devin/agents/overhaul-specialist.md +2 -0
  315. package/pack/generated/devin/agents/overhaul-verifier.md +2 -0
  316. package/pack/generated/devin/skills/devrites-api-interface/SKILL.md +1 -1
  317. package/pack/generated/devin/skills/devrites-audit/SKILL.md +1 -1
  318. package/pack/generated/devin/skills/devrites-browser-proof/SKILL.md +1 -1
  319. package/pack/generated/devin/skills/devrites-debug-recovery/SKILL.md +3 -2
  320. package/pack/generated/devin/skills/devrites-doubt/SKILL.md +1 -1
  321. package/pack/generated/devin/skills/devrites-frontend-craft/SKILL.md +1 -1
  322. package/pack/generated/devin/skills/devrites-interview/SKILL.md +2 -2
  323. package/pack/generated/devin/skills/devrites-lib/reference/intent-map.md +3 -3
  324. package/pack/generated/devin/skills/devrites-lib/reference/parallel-dispatch.md +6 -5
  325. package/pack/generated/devin/skills/devrites-lib/reference/standards/afk-hitl.md +8 -7
  326. package/pack/generated/devin/skills/devrites-lib/reference/standards/agents.md +1 -1
  327. package/pack/generated/devin/skills/devrites-lib/reference/standards/ci-cd.md +2 -1
  328. package/pack/generated/devin/skills/devrites-lib/reference/standards/code-review.md +1 -1
  329. package/pack/generated/devin/skills/devrites-lib/reference/standards/core.md +1 -1
  330. package/pack/generated/devin/skills/devrites-lib/reference/standards/data-integrity.md +4 -0
  331. package/pack/generated/devin/skills/devrites-lib/reference/standards/developer-experience.md +5 -0
  332. package/pack/generated/devin/skills/devrites-lib/reference/standards/loop-operations.md +3 -0
  333. package/pack/generated/devin/skills/devrites-lib/reference/standards/performance.md +2 -0
  334. package/pack/generated/devin/skills/devrites-lib/reference/standards/skill-authoring.md +13 -1
  335. package/pack/generated/devin/skills/devrites-lib/reference/standards/testing.md +13 -0
  336. package/pack/generated/devin/skills/devrites-lib/reference/workspace-artifact-schema.md +11 -7
  337. package/pack/generated/devin/skills/devrites-prose-craft/SKILL.md +1 -1
  338. package/pack/generated/devin/skills/devrites-source-driven/SKILL.md +1 -1
  339. package/pack/generated/devin/skills/devrites-ux-shape/SKILL.md +1 -1
  340. package/pack/generated/devin/skills/overhaul/SKILL.md +15 -15
  341. package/pack/generated/devin/skills/overhaul/references/audit-domains.md +2 -2
  342. package/pack/generated/devin/skills/overhaul/references/orchestration.md +11 -7
  343. package/pack/generated/devin/skills/overhaul/references/records.md +8 -3
  344. package/pack/generated/devin/skills/rite/SKILL.md +4 -3
  345. package/pack/generated/devin/skills/rite/reference/menu.md +6 -5
  346. package/pack/generated/devin/skills/rite-adopt/SKILL.md +4 -3
  347. package/pack/generated/devin/skills/rite-autocomplete/SKILL.md +8 -7
  348. package/pack/generated/devin/skills/rite-autocomplete/reference/decision-policy.md +1 -1
  349. package/pack/generated/devin/skills/rite-autocomplete/reference/loop.md +2 -1
  350. package/pack/generated/devin/skills/rite-autocomplete/reference/stop-conditions.md +3 -2
  351. package/pack/generated/devin/skills/rite-build/SKILL.md +2 -2
  352. package/pack/generated/devin/skills/rite-build/reference/checkpoint-protocol.md +2 -2
  353. package/pack/generated/devin/skills/rite-build/reference/parallel-batch.md +1 -1
  354. package/pack/generated/devin/skills/rite-build/reference/wright-dispatch.md +20 -1
  355. package/pack/generated/devin/skills/rite-clarify/SKILL.md +1 -1
  356. package/pack/generated/devin/skills/rite-converge/SKILL.md +5 -4
  357. package/pack/generated/devin/skills/rite-customize/SKILL.md +1 -1
  358. package/pack/generated/devin/skills/rite-define/SKILL.md +4 -3
  359. package/pack/generated/devin/skills/rite-doctor/SKILL.md +12 -6
  360. package/pack/generated/devin/skills/rite-dogfood/SKILL.md +2 -2
  361. package/pack/generated/devin/skills/rite-explain/SKILL.md +3 -3
  362. package/pack/generated/devin/skills/rite-explain/reference/intake.md +1 -1
  363. package/pack/generated/devin/skills/rite-fast/SKILL.md +8 -6
  364. package/pack/generated/devin/skills/rite-frame/SKILL.md +1 -1
  365. package/pack/generated/devin/skills/rite-handoff/SKILL.md +4 -3
  366. package/pack/generated/devin/skills/rite-learn/SKILL.md +2 -2
  367. package/pack/generated/devin/skills/rite-plan/SKILL.md +1 -1
  368. package/pack/generated/devin/skills/rite-plan/reference/replan-and-repair.md +2 -0
  369. package/pack/generated/devin/skills/rite-plan/reference/slicing.md +3 -1
  370. package/pack/generated/devin/skills/rite-polish/SKILL.md +2 -2
  371. package/pack/generated/devin/skills/rite-pov/SKILL.md +1 -1
  372. package/pack/generated/devin/skills/rite-pr-feedback/SKILL.md +5 -4
  373. package/pack/generated/devin/skills/rite-pressure-test/SKILL.md +7 -5
  374. package/pack/generated/devin/skills/rite-prototype/SKILL.md +1 -1
  375. package/pack/generated/devin/skills/rite-prove/SKILL.md +1 -1
  376. package/pack/generated/devin/skills/rite-quick/SKILL.md +11 -6
  377. package/pack/generated/devin/skills/rite-resolve/SKILL.md +4 -4
  378. package/pack/generated/devin/skills/rite-resolve/reference/answer-protocol.md +4 -5
  379. package/pack/generated/devin/skills/rite-review/SKILL.md +3 -2
  380. package/pack/generated/devin/skills/rite-seal/SKILL.md +4 -4
  381. package/pack/generated/devin/skills/rite-seal/reference/go-no-go.md +2 -0
  382. package/pack/generated/devin/skills/rite-seal/reference/seal-template.md +5 -2
  383. package/pack/generated/devin/skills/rite-ship/SKILL.md +1 -1
  384. package/pack/generated/devin/skills/rite-ship/reference/close-out.md +3 -2
  385. package/pack/generated/devin/skills/rite-spec/SKILL.md +5 -2
  386. package/pack/generated/devin/skills/rite-spec/reference/investigation.md +1 -1
  387. package/pack/generated/devin/skills/rite-status/SKILL.md +1 -1
  388. package/pack/generated/devin/skills/rite-temper/SKILL.md +3 -3
  389. package/pack/generated/devin/skills/rite-temper/reference/scope-modes.md +1 -1
  390. package/pack/generated/devin/skills/rite-temper/reference/significance.md +3 -1
  391. package/pack/generated/devin/skills/rite-upgrade/SKILL.md +4 -2
  392. package/pack/generated/devin/skills/rite-vet/SKILL.md +4 -3
  393. package/pack/generated/devin/skills/rite-vet/reference/artifacts.md +1 -1
  394. package/pack/generated/devin/skills/rite-vet/reference/review-axes.md +2 -2
  395. package/pack/generated/devin/skills/rite-watch-pr/SKILL.md +1 -1
  396. package/pack/generated/devin/skills/rite-zoom-out/SKILL.md +1 -1
  397. package/pack/generated/omp/agents/devrites-code-reviewer.md +7 -7
  398. package/pack/generated/omp/agents/devrites-devex-reviewer.md +6 -1
  399. package/pack/generated/omp/agents/devrites-evidence-scout.md +4 -0
  400. package/pack/generated/omp/agents/devrites-frontend-reviewer.md +1 -1
  401. package/pack/generated/omp/agents/devrites-plan-drafter.md +3 -3
  402. package/pack/generated/omp/agents/devrites-plan-reviewer.md +5 -2
  403. package/pack/generated/omp/agents/devrites-proof-runner.md +2 -2
  404. package/pack/generated/omp/agents/devrites-security-auditor.md +1 -1
  405. package/pack/generated/omp/agents/devrites-simplifier-reviewer.md +1 -1
  406. package/pack/generated/omp/agents/devrites-slice-wright.md +5 -5
  407. package/pack/generated/omp/agents/devrites-test-analyst.md +5 -5
  408. package/pack/generated/omp/agents/devrites-upgrade-planner.md +1 -1
  409. package/pack/generated/omp/agents/fast-builder.md +3 -3
  410. package/pack/generated/omp/agents/fast-critic.md +3 -3
  411. package/pack/generated/omp/agents/overhaul-backend-engineer.md +2 -0
  412. package/pack/generated/omp/agents/overhaul-boundary.md +2 -0
  413. package/pack/generated/omp/agents/overhaul-craft.md +2 -0
  414. package/pack/generated/omp/agents/overhaul-frontend-engineer.md +2 -0
  415. package/pack/generated/omp/agents/overhaul-implementer.md +2 -0
  416. package/pack/generated/omp/agents/overhaul-recon.md +2 -0
  417. package/pack/generated/omp/agents/overhaul-specialist.md +2 -0
  418. package/pack/generated/omp/agents/overhaul-verifier.md +2 -0
  419. package/pack/generated/omp/commands/rite-resolve.md +1 -1
  420. package/pack/generated/omp/skills/devrites-api-interface/SKILL.md +4 -4
  421. package/pack/generated/omp/skills/devrites-audit/SKILL.md +5 -5
  422. package/pack/generated/omp/skills/devrites-browser-proof/SKILL.md +5 -5
  423. package/pack/generated/omp/skills/devrites-browser-proof/reference/browser-performance.md +1 -1
  424. package/pack/generated/omp/skills/devrites-browser-proof/reference/visual-verdict.md +1 -1
  425. package/pack/generated/omp/skills/devrites-debug-recovery/SKILL.md +7 -6
  426. package/pack/generated/omp/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +1 -1
  427. package/pack/generated/omp/skills/devrites-doubt/SKILL.md +6 -6
  428. package/pack/generated/omp/skills/devrites-frontend-craft/SKILL.md +3 -3
  429. package/pack/generated/omp/skills/devrites-frontend-craft/reference/craft.md +1 -1
  430. package/pack/generated/omp/skills/devrites-frontend-craft/reference/design-references.md +4 -4
  431. package/pack/generated/omp/skills/devrites-frontend-craft/reference/fullstack.md +1 -1
  432. package/pack/generated/omp/skills/devrites-frontend-craft/reference/quality-standards.md +8 -8
  433. package/pack/generated/omp/skills/devrites-frontend-craft/reference/reuse-first.md +2 -2
  434. package/pack/generated/omp/skills/devrites-frontend-craft/reference/shape.md +2 -2
  435. package/pack/generated/omp/skills/devrites-interview/SKILL.md +3 -3
  436. package/pack/generated/omp/skills/devrites-lib/reference/intent-map.md +4 -4
  437. package/pack/generated/omp/skills/devrites-lib/reference/parallel-dispatch.md +8 -7
  438. package/pack/generated/omp/skills/devrites-lib/reference/standards/afk-hitl.md +13 -12
  439. package/pack/generated/omp/skills/devrites-lib/reference/standards/agents.md +6 -6
  440. package/pack/generated/omp/skills/devrites-lib/reference/standards/browser-proof-checklist.md +2 -2
  441. package/pack/generated/omp/skills/devrites-lib/reference/standards/ci-cd.md +2 -1
  442. package/pack/generated/omp/skills/devrites-lib/reference/standards/code-review.md +3 -3
  443. package/pack/generated/omp/skills/devrites-lib/reference/standards/coding-style.md +1 -1
  444. package/pack/generated/omp/skills/devrites-lib/reference/standards/context-hygiene.md +2 -2
  445. package/pack/generated/omp/skills/devrites-lib/reference/standards/core.md +3 -3
  446. package/pack/generated/omp/skills/devrites-lib/reference/standards/data-integrity.md +4 -0
  447. package/pack/generated/omp/skills/devrites-lib/reference/standards/debug-recovery.md +1 -1
  448. package/pack/generated/omp/skills/devrites-lib/reference/standards/definition-of-done.md +1 -1
  449. package/pack/generated/omp/skills/devrites-lib/reference/standards/developer-experience.md +8 -3
  450. package/pack/generated/omp/skills/devrites-lib/reference/standards/glossary.md +3 -3
  451. package/pack/generated/omp/skills/devrites-lib/reference/standards/loop-operations.md +3 -0
  452. package/pack/generated/omp/skills/devrites-lib/reference/standards/performance.md +3 -1
  453. package/pack/generated/omp/skills/devrites-lib/reference/standards/prose-style.md +4 -4
  454. package/pack/generated/omp/skills/devrites-lib/reference/standards/release/ship-checklist.md +1 -1
  455. package/pack/generated/omp/skills/devrites-lib/reference/standards/review/README.md +1 -1
  456. package/pack/generated/omp/skills/devrites-lib/reference/standards/review/ci-workflows.md +1 -1
  457. package/pack/generated/omp/skills/devrites-lib/reference/standards/review/react.md +1 -1
  458. package/pack/generated/omp/skills/devrites-lib/reference/standards/review/stack-profile.md +5 -5
  459. package/pack/generated/omp/skills/devrites-lib/reference/standards/skill-authoring.md +15 -3
  460. package/pack/generated/omp/skills/devrites-lib/reference/standards/spec-grammar.md +3 -3
  461. package/pack/generated/omp/skills/devrites-lib/reference/standards/testing.md +14 -1
  462. package/pack/generated/omp/skills/devrites-lib/reference/standards/tooling.md +1 -1
  463. package/pack/generated/omp/skills/devrites-lib/reference/standards/verification-methods.md +1 -1
  464. package/pack/generated/omp/skills/devrites-lib/reference/visual-playbooks/index.md +2 -2
  465. package/pack/generated/omp/skills/devrites-lib/reference/workspace-artifact-schema.md +12 -8
  466. package/pack/generated/omp/skills/devrites-prose-craft/SKILL.md +4 -4
  467. package/pack/generated/omp/skills/devrites-prose-craft/reference/examples.md +1 -1
  468. package/pack/generated/omp/skills/devrites-source-driven/SKILL.md +3 -3
  469. package/pack/generated/omp/skills/devrites-ux-shape/SKILL.md +10 -10
  470. package/pack/generated/omp/skills/devrites-ux-shape/reference/brief-template.md +3 -3
  471. package/pack/generated/omp/skills/devrites-ux-shape/reference/visual-direction-probe.md +1 -1
  472. package/pack/generated/omp/skills/overhaul/references/orchestration.md +6 -2
  473. package/pack/generated/omp/skills/overhaul/references/records.md +8 -3
  474. package/pack/generated/omp/skills/rite/SKILL.md +8 -7
  475. package/pack/generated/omp/skills/rite/reference/menu.md +6 -5
  476. package/pack/generated/omp/skills/rite-adopt/SKILL.md +6 -5
  477. package/pack/generated/omp/skills/rite-adopt/reference/anti-patterns.md +1 -1
  478. package/pack/generated/omp/skills/rite-autocomplete/SKILL.md +11 -10
  479. package/pack/generated/omp/skills/rite-autocomplete/reference/decision-policy.md +1 -1
  480. package/pack/generated/omp/skills/rite-autocomplete/reference/loop.md +4 -3
  481. package/pack/generated/omp/skills/rite-autocomplete/reference/stop-conditions.md +2 -1
  482. package/pack/generated/omp/skills/rite-build/SKILL.md +7 -7
  483. package/pack/generated/omp/skills/rite-build/reference/afk-discipline.md +1 -1
  484. package/pack/generated/omp/skills/rite-build/reference/anti-patterns.md +1 -1
  485. package/pack/generated/omp/skills/rite-build/reference/checkpoint-protocol.md +2 -2
  486. package/pack/generated/omp/skills/rite-build/reference/checkpoint.md +2 -2
  487. package/pack/generated/omp/skills/rite-build/reference/frontend-trigger.md +1 -1
  488. package/pack/generated/omp/skills/rite-build/reference/parallel-batch.md +4 -4
  489. package/pack/generated/omp/skills/rite-build/reference/phase-contract.md +6 -6
  490. package/pack/generated/omp/skills/rite-build/reference/tdd.md +1 -1
  491. package/pack/generated/omp/skills/rite-build/reference/wright-dispatch.md +27 -8
  492. package/pack/generated/omp/skills/rite-clarify/SKILL.md +4 -4
  493. package/pack/generated/omp/skills/rite-clarify/reference/anti-patterns.md +1 -1
  494. package/pack/generated/omp/skills/rite-converge/SKILL.md +16 -15
  495. package/pack/generated/omp/skills/rite-converge/reference/convergence-assessment.md +4 -4
  496. package/pack/generated/omp/skills/rite-customize/SKILL.md +2 -2
  497. package/pack/generated/omp/skills/rite-define/SKILL.md +25 -24
  498. package/pack/generated/omp/skills/rite-define/reference/anti-patterns.md +2 -2
  499. package/pack/generated/omp/skills/rite-define/reference/gates.md +2 -2
  500. package/pack/generated/omp/skills/rite-doctor/SKILL.md +12 -6
  501. package/pack/generated/omp/skills/rite-dogfood/SKILL.md +5 -5
  502. package/pack/generated/omp/skills/rite-explain/SKILL.md +7 -7
  503. package/pack/generated/omp/skills/rite-explain/reference/intake.md +1 -1
  504. package/pack/generated/omp/skills/rite-fast/SKILL.md +12 -10
  505. package/pack/generated/omp/skills/rite-fast/reference/artifacts.md +1 -1
  506. package/pack/generated/omp/skills/rite-frame/SKILL.md +6 -6
  507. package/pack/generated/omp/skills/rite-frame/reference/failure-modes.md +4 -4
  508. package/pack/generated/omp/skills/rite-handoff/SKILL.md +7 -6
  509. package/pack/generated/omp/skills/rite-learn/SKILL.md +6 -6
  510. package/pack/generated/omp/skills/rite-plan/SKILL.md +8 -8
  511. package/pack/generated/omp/skills/rite-plan/reference/anti-patterns.md +1 -1
  512. package/pack/generated/omp/skills/rite-plan/reference/replan-and-repair.md +3 -1
  513. package/pack/generated/omp/skills/rite-plan/reference/slicing.md +6 -4
  514. package/pack/generated/omp/skills/rite-plan/reference/task-breakdown.md +1 -1
  515. package/pack/generated/omp/skills/rite-polish/SKILL.md +6 -6
  516. package/pack/generated/omp/skills/rite-polish/reference/anti-ai-slop.md +9 -9
  517. package/pack/generated/omp/skills/rite-polish/reference/anti-patterns.md +1 -1
  518. package/pack/generated/omp/skills/rite-polish/reference/backend-polish.md +2 -2
  519. package/pack/generated/omp/skills/rite-polish/reference/browser-polish-evidence.md +1 -1
  520. package/pack/generated/omp/skills/rite-polish/reference/code.md +8 -8
  521. package/pack/generated/omp/skills/rite-polish/reference/design-memory.md +3 -3
  522. package/pack/generated/omp/skills/rite-polish/reference/design-system-discovery.md +1 -1
  523. package/pack/generated/omp/skills/rite-polish/reference/harden-checklist.md +1 -1
  524. package/pack/generated/omp/skills/rite-polish/reference/ledger.md +3 -3
  525. package/pack/generated/omp/skills/rite-polish/reference/ui.md +1 -1
  526. package/pack/generated/omp/skills/rite-pov/SKILL.md +2 -2
  527. package/pack/generated/omp/skills/rite-pr-feedback/SKILL.md +6 -5
  528. package/pack/generated/omp/skills/rite-pressure-test/SKILL.md +9 -7
  529. package/pack/generated/omp/skills/rite-prototype/SKILL.md +1 -1
  530. package/pack/generated/omp/skills/rite-prove/SKILL.md +13 -13
  531. package/pack/generated/omp/skills/rite-prove/reference/acceptance-proof.md +7 -7
  532. package/pack/generated/omp/skills/rite-prove/reference/anti-patterns.md +1 -1
  533. package/pack/generated/omp/skills/rite-prove/reference/browser-proof.md +3 -3
  534. package/pack/generated/omp/skills/rite-prove/reference/failure-triage.md +2 -2
  535. package/pack/generated/omp/skills/rite-quick/SKILL.md +19 -14
  536. package/pack/generated/omp/skills/rite-resolve/SKILL.md +6 -6
  537. package/pack/generated/omp/skills/rite-resolve/reference/answer-protocol.md +4 -5
  538. package/pack/generated/omp/skills/rite-review/SKILL.md +23 -22
  539. package/pack/generated/omp/skills/rite-review/reference/anti-patterns.md +1 -1
  540. package/pack/generated/omp/skills/rite-review/reference/cognitive-load.md +2 -2
  541. package/pack/generated/omp/skills/rite-review/reference/nielsen-heuristics.md +1 -1
  542. package/pack/generated/omp/skills/rite-review/reference/performance-checklist.md +1 -1
  543. package/pack/generated/omp/skills/rite-review/reference/performance-review.md +1 -1
  544. package/pack/generated/omp/skills/rite-review/reference/security-review.md +2 -2
  545. package/pack/generated/omp/skills/rite-seal/SKILL.md +11 -11
  546. package/pack/generated/omp/skills/rite-seal/reference/anti-patterns.md +1 -1
  547. package/pack/generated/omp/skills/rite-seal/reference/final-evidence.md +3 -3
  548. package/pack/generated/omp/skills/rite-seal/reference/go-no-go.md +3 -1
  549. package/pack/generated/omp/skills/rite-seal/reference/output.md +1 -1
  550. package/pack/generated/omp/skills/rite-seal/reference/phase-contract.md +4 -4
  551. package/pack/generated/omp/skills/rite-seal/reference/seal-template.md +5 -2
  552. package/pack/generated/omp/skills/rite-ship/SKILL.md +7 -7
  553. package/pack/generated/omp/skills/rite-ship/reference/anti-patterns.md +1 -1
  554. package/pack/generated/omp/skills/rite-ship/reference/close-out.md +5 -4
  555. package/pack/generated/omp/skills/rite-ship/reference/git-ship.md +2 -2
  556. package/pack/generated/omp/skills/rite-ship/reference/rollout.md +3 -3
  557. package/pack/generated/omp/skills/rite-spec/SKILL.md +17 -14
  558. package/pack/generated/omp/skills/rite-spec/reference/anti-patterns.md +1 -1
  559. package/pack/generated/omp/skills/rite-spec/reference/investigation.md +3 -3
  560. package/pack/generated/omp/skills/rite-spec/reference/question-protocol.md +1 -1
  561. package/pack/generated/omp/skills/rite-spec/reference/spec-template.md +2 -2
  562. package/pack/generated/omp/skills/rite-spec/reference/state-workspace.md +8 -8
  563. package/pack/generated/omp/skills/rite-status/SKILL.md +2 -2
  564. package/pack/generated/omp/skills/rite-temper/SKILL.md +13 -13
  565. package/pack/generated/omp/skills/rite-temper/reference/anti-patterns.md +2 -2
  566. package/pack/generated/omp/skills/rite-temper/reference/review-dimensions.md +3 -3
  567. package/pack/generated/omp/skills/rite-temper/reference/scope-modes.md +3 -3
  568. package/pack/generated/omp/skills/rite-temper/reference/significance.md +4 -2
  569. package/pack/generated/omp/skills/rite-upgrade/SKILL.md +7 -5
  570. package/pack/generated/omp/skills/rite-vet/SKILL.md +14 -13
  571. package/pack/generated/omp/skills/rite-vet/reference/anti-patterns.md +2 -2
  572. package/pack/generated/omp/skills/rite-vet/reference/artifacts.md +3 -3
  573. package/pack/generated/omp/skills/rite-vet/reference/depth.md +3 -3
  574. package/pack/generated/omp/skills/rite-vet/reference/review-axes.md +5 -5
  575. package/pack/generated/omp/skills/rite-watch-pr/SKILL.md +2 -2
  576. package/pack/generated/omp/skills/rite-zoom-out/SKILL.md +1 -1
  577. package/pack/generated/pi/agents/devrites-devex-reviewer.md +5 -0
  578. package/pack/generated/pi/agents/devrites-evidence-scout.md +4 -0
  579. package/pack/generated/pi/agents/devrites-plan-reviewer.md +4 -1
  580. package/pack/generated/pi/agents/overhaul-backend-engineer.md +2 -0
  581. package/pack/generated/pi/agents/overhaul-boundary.md +2 -0
  582. package/pack/generated/pi/agents/overhaul-craft.md +2 -0
  583. package/pack/generated/pi/agents/overhaul-frontend-engineer.md +2 -0
  584. package/pack/generated/pi/agents/overhaul-implementer.md +2 -0
  585. package/pack/generated/pi/agents/overhaul-recon.md +2 -0
  586. package/pack/generated/pi/agents/overhaul-specialist.md +2 -0
  587. package/pack/generated/pi/agents/overhaul-verifier.md +2 -0
  588. package/pack/generated/pi/prompts/rite-resolve.md +1 -1
  589. package/pack/generated/pi/skills/devrites-api-interface/SKILL.md +1 -1
  590. package/pack/generated/pi/skills/devrites-audit/SKILL.md +1 -1
  591. package/pack/generated/pi/skills/devrites-browser-proof/SKILL.md +1 -1
  592. package/pack/generated/pi/skills/devrites-debug-recovery/SKILL.md +3 -2
  593. package/pack/generated/pi/skills/devrites-doubt/SKILL.md +1 -1
  594. package/pack/generated/pi/skills/devrites-frontend-craft/SKILL.md +1 -1
  595. package/pack/generated/pi/skills/devrites-interview/SKILL.md +1 -1
  596. package/pack/generated/pi/skills/devrites-lib/reference/intent-map.md +3 -3
  597. package/pack/generated/pi/skills/devrites-lib/reference/parallel-dispatch.md +6 -5
  598. package/pack/generated/pi/skills/devrites-lib/reference/standards/afk-hitl.md +5 -4
  599. package/pack/generated/pi/skills/devrites-lib/reference/standards/agents.md +1 -1
  600. package/pack/generated/pi/skills/devrites-lib/reference/standards/ci-cd.md +2 -1
  601. package/pack/generated/pi/skills/devrites-lib/reference/standards/code-review.md +1 -1
  602. package/pack/generated/pi/skills/devrites-lib/reference/standards/core.md +1 -1
  603. package/pack/generated/pi/skills/devrites-lib/reference/standards/data-integrity.md +4 -0
  604. package/pack/generated/pi/skills/devrites-lib/reference/standards/developer-experience.md +5 -0
  605. package/pack/generated/pi/skills/devrites-lib/reference/standards/loop-operations.md +3 -0
  606. package/pack/generated/pi/skills/devrites-lib/reference/standards/performance.md +2 -0
  607. package/pack/generated/pi/skills/devrites-lib/reference/standards/skill-authoring.md +13 -1
  608. package/pack/generated/pi/skills/devrites-lib/reference/standards/testing.md +13 -0
  609. package/pack/generated/pi/skills/devrites-lib/reference/workspace-artifact-schema.md +11 -7
  610. package/pack/generated/pi/skills/devrites-prose-craft/SKILL.md +1 -1
  611. package/pack/generated/pi/skills/devrites-source-driven/SKILL.md +1 -1
  612. package/pack/generated/pi/skills/devrites-ux-shape/SKILL.md +1 -1
  613. package/pack/generated/pi/skills/overhaul/SKILL.md +15 -15
  614. package/pack/generated/pi/skills/overhaul/references/audit-domains.md +2 -2
  615. package/pack/generated/pi/skills/overhaul/references/orchestration.md +11 -7
  616. package/pack/generated/pi/skills/overhaul/references/records.md +8 -3
  617. package/pack/generated/pi/skills/rite/SKILL.md +4 -3
  618. package/pack/generated/pi/skills/rite/reference/menu.md +6 -5
  619. package/pack/generated/pi/skills/rite-adopt/SKILL.md +4 -3
  620. package/pack/generated/pi/skills/rite-autocomplete/SKILL.md +7 -6
  621. package/pack/generated/pi/skills/rite-autocomplete/reference/loop.md +2 -1
  622. package/pack/generated/pi/skills/rite-autocomplete/reference/stop-conditions.md +2 -1
  623. package/pack/generated/pi/skills/rite-build/SKILL.md +2 -2
  624. package/pack/generated/pi/skills/rite-build/reference/parallel-batch.md +1 -1
  625. package/pack/generated/pi/skills/rite-build/reference/wright-dispatch.md +20 -1
  626. package/pack/generated/pi/skills/rite-clarify/SKILL.md +1 -1
  627. package/pack/generated/pi/skills/rite-converge/SKILL.md +5 -4
  628. package/pack/generated/pi/skills/rite-customize/SKILL.md +1 -1
  629. package/pack/generated/pi/skills/rite-define/SKILL.md +4 -3
  630. package/pack/generated/pi/skills/rite-doctor/SKILL.md +12 -6
  631. package/pack/generated/pi/skills/rite-dogfood/SKILL.md +2 -2
  632. package/pack/generated/pi/skills/rite-explain/SKILL.md +1 -1
  633. package/pack/generated/pi/skills/rite-fast/SKILL.md +8 -6
  634. package/pack/generated/pi/skills/rite-frame/SKILL.md +1 -1
  635. package/pack/generated/pi/skills/rite-handoff/SKILL.md +4 -3
  636. package/pack/generated/pi/skills/rite-learn/SKILL.md +2 -2
  637. package/pack/generated/pi/skills/rite-plan/SKILL.md +1 -1
  638. package/pack/generated/pi/skills/rite-plan/reference/replan-and-repair.md +2 -0
  639. package/pack/generated/pi/skills/rite-plan/reference/slicing.md +3 -1
  640. package/pack/generated/pi/skills/rite-polish/SKILL.md +2 -2
  641. package/pack/generated/pi/skills/rite-pov/SKILL.md +1 -1
  642. package/pack/generated/pi/skills/rite-pr-feedback/SKILL.md +5 -4
  643. package/pack/generated/pi/skills/rite-pressure-test/SKILL.md +7 -5
  644. package/pack/generated/pi/skills/rite-prototype/SKILL.md +1 -1
  645. package/pack/generated/pi/skills/rite-prove/SKILL.md +1 -1
  646. package/pack/generated/pi/skills/rite-quick/SKILL.md +11 -6
  647. package/pack/generated/pi/skills/rite-resolve/SKILL.md +3 -3
  648. package/pack/generated/pi/skills/rite-resolve/reference/answer-protocol.md +4 -5
  649. package/pack/generated/pi/skills/rite-review/SKILL.md +3 -2
  650. package/pack/generated/pi/skills/rite-seal/SKILL.md +4 -4
  651. package/pack/generated/pi/skills/rite-seal/reference/go-no-go.md +2 -0
  652. package/pack/generated/pi/skills/rite-seal/reference/seal-template.md +5 -2
  653. package/pack/generated/pi/skills/rite-ship/SKILL.md +1 -1
  654. package/pack/generated/pi/skills/rite-ship/reference/close-out.md +3 -2
  655. package/pack/generated/pi/skills/rite-spec/SKILL.md +5 -2
  656. package/pack/generated/pi/skills/rite-status/SKILL.md +1 -1
  657. package/pack/generated/pi/skills/rite-temper/SKILL.md +2 -2
  658. package/pack/generated/pi/skills/rite-temper/reference/significance.md +2 -0
  659. package/pack/generated/pi/skills/rite-upgrade/SKILL.md +4 -2
  660. package/pack/generated/pi/skills/rite-vet/SKILL.md +4 -3
  661. package/pack/generated/pi/skills/rite-vet/reference/artifacts.md +1 -1
  662. package/pack/generated/pi/skills/rite-watch-pr/SKILL.md +1 -1
  663. package/pack/generated/pi/skills/rite-zoom-out/SKILL.md +1 -1
  664. package/package.json +3 -2
  665. package/scripts/build-host-artifacts.sh +13 -0
  666. package/scripts/codex-generate.sh +5 -1
  667. package/scripts/devin-generate.sh +4 -3
  668. package/scripts/install-lib.sh +5 -0
  669. package/scripts/omp-generate.sh +23 -1
  670. package/scripts/pi-generate.sh +2 -2
  671. package/engine/cmd/releasepack/main_test.go +0 -239
  672. package/engine/harnessmatrix_test.go +0 -46
  673. package/engine/help_test.go +0 -241
  674. package/engine/internal/acceptance/acceptance_test.go +0 -946
  675. package/engine/internal/devritespaths/paths_test.go +0 -128
  676. package/engine/internal/fsutil/copy_test.go +0 -154
  677. package/engine/internal/gate/gate_test.go +0 -865
  678. package/engine/internal/gate/readiness_binding_test.go +0 -443
  679. package/engine/internal/gitenv/env_test.go +0 -48
  680. package/engine/internal/hostpack/hostpack_test.go +0 -269
  681. package/engine/internal/install/install_test.go +0 -1741
  682. package/engine/internal/install/workspace_advisory_test.go +0 -54
  683. package/engine/internal/lib/candidate_test.go +0 -506
  684. package/engine/internal/lib/claims_test.go +0 -267
  685. package/engine/internal/lib/closeout_test.go +0 -266
  686. package/engine/internal/lib/context_next_test.go +0 -912
  687. package/engine/internal/lib/cursor_compat_test.go +0 -65
  688. package/engine/internal/lib/detect_test.go +0 -118
  689. package/engine/internal/lib/drift_test.go +0 -135
  690. package/engine/internal/lib/dup_test.go +0 -666
  691. package/engine/internal/lib/environment_report_test.go +0 -54
  692. package/engine/internal/lib/evidencefresh_test.go +0 -120
  693. package/engine/internal/lib/handoff_test.go +0 -83
  694. package/engine/internal/lib/manifest_union_test.go +0 -251
  695. package/engine/internal/lib/metrics_test.go +0 -28
  696. package/engine/internal/lib/migrate_test.go +0 -213
  697. package/engine/internal/lib/observe_budgets_test.go +0 -428
  698. package/engine/internal/lib/open_visual_test.go +0 -291
  699. package/engine/internal/lib/regression_test.go +0 -282
  700. package/engine/internal/lib/resolve_remediation_test.go +0 -192
  701. package/engine/internal/lib/secretscan_test.go +0 -556
  702. package/engine/internal/lib/slicecheck_test.go +0 -170
  703. package/engine/internal/lib/taskgraph_test.go +0 -353
  704. package/engine/internal/lib/triggers_test.go +0 -23
  705. package/engine/internal/lib/util_test.go +0 -148
  706. package/engine/internal/lib/visual_outline_test.go +0 -189
  707. package/engine/internal/lib/windows_test.go +0 -420
  708. package/engine/internal/lib/workspace_read_test.go +0 -102
  709. package/engine/internal/markdowntext/markdowntext_fuzz_test.go +0 -36
  710. package/engine/internal/markdowntext/markdowntext_test.go +0 -58
  711. package/engine/internal/markdowntext/testdata/structural.json +0 -277
  712. package/engine/internal/notes/notes_test.go +0 -545
  713. package/engine/internal/overhaul/admit/admit_test.go +0 -204
  714. package/engine/internal/overhaul/admit/packet_test.go +0 -223
  715. package/engine/internal/overhaul/bench/run_test.go +0 -316
  716. package/engine/internal/overhaul/ovio/ovio_test.go +0 -75
  717. package/engine/internal/overhaul/packet/packet_test.go +0 -263
  718. package/engine/internal/overhaul/records/init_test.go +0 -96
  719. package/engine/internal/overhaul/records/records_test.go +0 -696
  720. package/engine/internal/overhaul/records/run_test.go +0 -77
  721. package/engine/internal/overhaul/render/run_test.go +0 -928
  722. package/engine/internal/overhaul/score/run_test.go +0 -636
  723. package/engine/internal/overhaul/snapshot/run_test.go +0 -718
  724. package/engine/internal/parallel/cli_test.go +0 -91
  725. package/engine/internal/parallel/ops_test.go +0 -939
  726. package/engine/internal/parallel/parallel_test.go +0 -645
  727. package/engine/internal/parallel/pathdisjoint_fuzz_test.go +0 -43
  728. package/engine/internal/parallel/pathdisjoint_test.go +0 -193
  729. package/engine/internal/parallel/select_test.go +0 -95
  730. package/engine/internal/parallel/testdata/fuzz/FuzzPathDisjoint/a449b81b4711b7b4 +0 -3
  731. package/engine/internal/reason/reason_test.go +0 -37
  732. package/engine/internal/release/release_test.go +0 -181
  733. package/engine/internal/rootfacts/facts_test.go +0 -364
  734. package/engine/internal/safepath/safepath_fuzz_test.go +0 -21
  735. package/engine/internal/safepath/safepath_test.go +0 -69
  736. package/engine/internal/safepath/safepath_windows_test.go +0 -26
  737. package/engine/internal/state/acceptance_test.go +0 -57
  738. package/engine/internal/state/budgets_test.go +0 -135
  739. package/engine/internal/state/cmd/workflowmanifest/main_test.go +0 -96
  740. package/engine/internal/state/concurrency_test.go +0 -184
  741. package/engine/internal/state/cursor_fuzz_test.go +0 -80
  742. package/engine/internal/state/cursor_test.go +0 -276
  743. package/engine/internal/state/observation_test.go +0 -961
  744. package/engine/internal/state/observation_unix_test.go +0 -68
  745. package/engine/internal/state/state_test.go +0 -986
  746. package/engine/internal/state/taskgraph_fuzz_test.go +0 -38
  747. package/engine/internal/state/taskgraph_test.go +0 -43
  748. package/engine/internal/state/testdata/fuzz/FuzzCursorRoundTrip/114b28f68c1fa4db +0 -4
  749. package/engine/internal/state/testdata/fuzz/FuzzCursorRoundTrip/378a0f2218e812ea +0 -4
  750. package/engine/internal/state/testdata/fuzz/FuzzCursorRoundTrip/39eaa26fcb481e3c +0 -4
  751. package/engine/internal/state/testdata/fuzz/FuzzCursorRoundTrip/776ca1dc0143acf0 +0 -4
  752. package/engine/internal/state/testdata/fuzz/FuzzCursorRoundTrip/9295930c1ebb81df +0 -4
  753. package/engine/internal/state/testdata/fuzz/FuzzCursorRoundTrip/a60de309dc33be0d +0 -4
  754. package/engine/internal/state/testdata/fuzz/FuzzCursorRoundTrip/f04dc7b06ef7c99f +0 -4
  755. package/engine/internal/state/testdata/fuzz/FuzzCursorRoundTrip/f3000ac510878bd6 +0 -4
  756. package/engine/internal/state/testdata/fuzz/FuzzWorkspaceSchemaRow/a75aabb9f2a847d5 +0 -2
  757. package/engine/internal/state/workspaceschema_fuzz_test.go +0 -27
  758. package/engine/internal/state/workspaceschema_test.go +0 -101
  759. package/engine/internal/state/write_test.go +0 -136
  760. package/engine/internal/version/version_test.go +0 -29
  761. package/engine/internal/workflow/commands_test.go +0 -18
  762. package/engine/note_routing_test.go +0 -95
  763. package/engine/observation_contract_test.go +0 -175
  764. package/engine/root_routing_test.go +0 -340
@@ -1,645 +0,0 @@
1
- package parallel
2
-
3
- import (
4
- "fmt"
5
- "os"
6
- "os/exec"
7
- "path/filepath"
8
- "strings"
9
- "testing"
10
- "time"
11
- )
12
-
13
- func gitOk(t *testing.T, dir string, args ...string) string {
14
- t.Helper()
15
- cmd := exec.Command("git", append([]string{"-C", dir}, args...)...)
16
- cmd.Env = append(os.Environ(),
17
- "GIT_CONFIG_NOSYSTEM=1",
18
- "GIT_TERMINAL_PROMPT=0",
19
- "GIT_AUTHOR_NAME=DevRites Test",
20
- "GIT_AUTHOR_EMAIL=devrites@example.invalid",
21
- "GIT_COMMITTER_NAME=DevRites Test",
22
- "GIT_COMMITTER_EMAIL=devrites@example.invalid",
23
- )
24
- out, err := cmd.CombinedOutput()
25
- if err != nil {
26
- t.Fatalf("git %v: %v\n%s", args, err, out)
27
- }
28
- return strings.TrimSpace(string(out))
29
- }
30
-
31
- func setupRepo(t *testing.T) (repo, base string) {
32
- t.Helper()
33
- repo = t.TempDir()
34
- gitOk(t, repo, "init")
35
- gitOk(t, repo, "checkout", "-b", "main")
36
- if err := os.MkdirAll(filepath.Join(repo, "src"), 0o755); err != nil {
37
- t.Fatal(err)
38
- }
39
- if err := os.WriteFile(filepath.Join(repo, "src", "a.go"), []byte("package main\n"), 0o644); err != nil {
40
- t.Fatal(err)
41
- }
42
- if err := os.WriteFile(filepath.Join(repo, "src", "b.go"), []byte("package main\n"), 0o644); err != nil {
43
- t.Fatal(err)
44
- }
45
- if err := os.WriteFile(filepath.Join(repo, "README.md"), []byte("base\n"), 0o644); err != nil {
46
- t.Fatal(err)
47
- }
48
- gitOk(t, repo, "add", ".")
49
- gitOk(t, repo, "commit", "-m", "base")
50
- base = gitOk(t, repo, "rev-parse", "HEAD")
51
- return repo, base
52
- }
53
-
54
- func TestLeaseRoundTrip(t *testing.T) {
55
- t.Parallel()
56
- dir := t.TempDir()
57
- path := filepath.Join(dir, "parallel-lease.md")
58
- lease := &Lease{
59
- BatchID: "batch1",
60
- CreatedAt: "2026-08-23T00:00:00Z",
61
- BaseSHA: "abcdef1",
62
- N: 2,
63
- Status: StatusRunning,
64
- ControlPIDOrSession: "test",
65
- Slices: []LeaseSlice{
66
- {ID: "slice-a", Paths: []string{"src/a.go"}, WorktreePath: "/tmp/a", Branch: "devrites/parallel/x/batch1/slice-a", WrightStatus: WrightPending},
67
- {ID: "slice-b", Paths: []string{"src/b.go"}, WorktreePath: "/tmp/b", Branch: "devrites/parallel/x/batch1/slice-b", WrightStatus: WrightPending},
68
- },
69
- }
70
- if err := WriteLease(path, lease); err != nil {
71
- t.Fatal(err)
72
- }
73
- got, err := ReadLease(path)
74
- if err != nil {
75
- t.Fatal(err)
76
- }
77
- if got.BatchID != "batch1" || got.Status != StatusRunning || len(got.Slices) != 2 {
78
- t.Fatalf("unexpected lease: %#v", got)
79
- }
80
- }
81
-
82
- func TestWriteLeasePreservesFixedTemp(t *testing.T) {
83
- for _, directory := range []bool{false, true} {
84
- t.Run(fmt.Sprint(directory), func(t *testing.T) {
85
- path := filepath.Join(t.TempDir(), "lease.md")
86
- sentinel := path + ".tmp"
87
- if directory {
88
- if err := os.Mkdir(sentinel, 0755); err != nil {
89
- t.Fatal(err)
90
- }
91
- } else if err := os.WriteFile(sentinel, []byte("owned elsewhere"), 0644); err != nil {
92
- t.Fatal(err)
93
- }
94
- lease := &Lease{BatchID: "batch", CreatedAt: "now", BaseSHA: "abcdef1", N: 2, Status: StatusRunning, Slices: []LeaseSlice{{ID: "a", Paths: []string{"a.go"}}, {ID: "b", Paths: []string{"b.go"}}}}
95
- if err := WriteLease(path, lease); err != nil {
96
- t.Fatal(err)
97
- }
98
- if _, err := ReadLease(path); err != nil {
99
- t.Fatal(err)
100
- }
101
- if directory {
102
- info, err := os.Stat(sentinel)
103
- if err != nil || !info.IsDir() {
104
- t.Fatalf("sentinel changed: %v", err)
105
- }
106
- } else {
107
- raw, err := os.ReadFile(sentinel)
108
- if err != nil || string(raw) != "owned elsewhere" {
109
- t.Fatalf("sentinel changed: %q %v", raw, err)
110
- }
111
- }
112
- })
113
- }
114
- }
115
-
116
- func TestCreateAbortCleanup(t *testing.T) {
117
- repo, base := setupRepo(t)
118
- slug := "demo-feature"
119
- batch := "batch1"
120
- lease, err := Create(CreateOpts{
121
- Root: repo,
122
- Slug: slug,
123
- BatchID: batch,
124
- BaseSHA: base,
125
- Slices: []SlicePaths{
126
- {ID: "slice-a", Paths: []string{"src/a.go"}},
127
- {ID: "slice-b", Paths: []string{"src/b.go"}},
128
- },
129
- })
130
- if err != nil {
131
- t.Fatal(err)
132
- }
133
- if lease.Status != StatusRunning || lease.N != 2 {
134
- t.Fatalf("lease=%#v", lease)
135
- }
136
- wtA := lease.Slices[0].WorktreePath
137
- wtB := lease.Slices[1].WorktreePath
138
- for _, wt := range []string{wtA, wtB} {
139
- if _, err := os.Stat(wt); err != nil {
140
- t.Fatalf("missing worktree %s: %v", wt, err)
141
- }
142
- if head := gitOk(t, wt, "rev-parse", "HEAD"); head != base {
143
- t.Fatalf("worktree head %s want %s", head, base)
144
- }
145
- }
146
- if head := gitOk(t, repo, "rev-parse", "HEAD"); head != base {
147
- t.Fatalf("control moved after create: %s", head)
148
- }
149
-
150
- // Drift control tip; abort must never rewind external commits — the drift
151
- // commit survives and the lease still marks aborted.
152
- if err := os.WriteFile(filepath.Join(repo, "README.md"), []byte("drift\n"), 0o644); err != nil {
153
- t.Fatal(err)
154
- }
155
- gitOk(t, repo, "add", "README.md")
156
- gitOk(t, repo, "commit", "-m", "drift")
157
- drift := gitOk(t, repo, "rev-parse", "HEAD")
158
- if _, err := Abort(repo, slug); err != nil {
159
- t.Fatal(err)
160
- }
161
- if head := gitOk(t, repo, "rev-parse", "HEAD"); head != drift {
162
- t.Fatalf("abort rewound control: head %s want drift tip %s", head, drift)
163
- }
164
- leasePath, _ := LeasePath(repo, slug)
165
- lease, err = ReadLease(leasePath)
166
- if err != nil {
167
- t.Fatal(err)
168
- }
169
- if lease.Status != StatusAborted {
170
- t.Fatalf("status=%s", lease.Status)
171
- }
172
- if _, err := os.Stat(wtA); err != nil {
173
- t.Fatalf("abort should preserve worktree: %v", err)
174
- }
175
-
176
- if _, err := Cleanup(repo, slug, true); err != nil {
177
- t.Fatal(err)
178
- }
179
- if _, err := os.Stat(wtA); !os.IsNotExist(err) {
180
- t.Fatalf("cleanup should remove worktree A")
181
- }
182
- if _, err := os.Stat(leasePath); !os.IsNotExist(err) {
183
- t.Fatalf("cleanup should clear lease")
184
- }
185
- }
186
-
187
- // TestCleanupSalvagesAbortedWork proves a forced cleanup of an aborted batch
188
- // never destroys wright work: committed transfers keep their branches and
189
- // uncommitted allowlisted changes are committed onto the slice branch before
190
- // the worktree is removed.
191
- func TestCleanupSalvagesAbortedWork(t *testing.T) {
192
- repo, base := setupRepo(t)
193
- slug, batch := "demo-feature", "batch1"
194
- lease, err := Create(CreateOpts{
195
- Root: repo,
196
- Slug: slug,
197
- BatchID: batch,
198
- BaseSHA: base,
199
- Slices: []SlicePaths{
200
- {ID: "slice-a", Paths: []string{"src/a.go"}},
201
- {ID: "slice-b", Paths: []string{"src/b.go", "src/b_new.go"}},
202
- {ID: "slice-c", Paths: []string{"src/c.go"}},
203
- },
204
- })
205
- if err != nil {
206
- t.Fatal(err)
207
- }
208
- wtA := lease.Slices[0].WorktreePath
209
- wtB := lease.Slices[1].WorktreePath
210
- wtC := lease.Slices[2].WorktreePath
211
-
212
- // slice-a: committed transfer (red at review — work must survive).
213
- tcA := commitIn(t, wtA, "src/a.go", "A")
214
- // slice-b: uncommitted WIP — modified tracked file plus a new untracked
215
- // file inside the allowlist.
216
- if err := os.WriteFile(filepath.Join(wtB, "src", "b.go"), []byte("package main\n\nfunc Bwip() {}\n"), 0o644); err != nil {
217
- t.Fatal(err)
218
- }
219
- if err := os.WriteFile(filepath.Join(wtB, "src", "b_new.go"), []byte("package main\n\nfunc Bnew() {}\n"), 0o644); err != nil {
220
- t.Fatal(err)
221
- }
222
- // slice-c: untouched — nothing to salvage, branch should be deleted.
223
-
224
- if _, err := Abort(repo, slug); err != nil {
225
- t.Fatal(err)
226
- }
227
- salvaged, err := Cleanup(repo, slug, true)
228
- if err != nil {
229
- t.Fatal(err)
230
- }
231
-
232
- bySlice := map[string]Salvage{}
233
- for _, s := range salvaged {
234
- bySlice[s.SliceID] = s
235
- }
236
- if got := bySlice["slice-a"].Commit; got != tcA {
237
- t.Fatalf("slice-a salvage commit %s want transfer %s", got, tcA)
238
- }
239
- sb := bySlice["slice-b"]
240
- if sb.Branch == "" || sb.Commit == "" || sb.Commit == base {
241
- t.Fatalf("slice-b should salvage WIP onto its branch, got %+v", sb)
242
- }
243
- if _, ok := bySlice["slice-c"]; ok {
244
- t.Fatalf("slice-c carried no work; its branch should be deleted, got %+v", bySlice["slice-c"])
245
- }
246
-
247
- // The salvaged WIP commit actually contains the uncommitted changes.
248
- if names := gitOk(t, repo, "diff", "--name-only", base, sb.Commit); !strings.Contains(names, "src/b.go") || !strings.Contains(names, "src/b_new.go") {
249
- t.Fatalf("salvage commit missing WIP paths: %s", names)
250
- }
251
- if body := gitOk(t, repo, "show", sb.Commit+":src/b_new.go"); !strings.Contains(body, "Bnew") {
252
- t.Fatalf("salvaged file content missing: %q", body)
253
- }
254
- subj := gitOk(t, repo, "log", "-1", "--format=%s", sb.Commit)
255
- if strings.Contains(subj, "slice-b") || strings.Contains(subj, "SLICE-") {
256
- t.Fatalf("salvage subject names a slice id: %q", subj)
257
- }
258
- if !strings.HasPrefix(subj, "devrites: salvage WIP (") {
259
- t.Fatalf("salvage subject %q", subj)
260
- }
261
-
262
- // Worktrees removed, lease cleared, kept branches still resolve.
263
- for _, wt := range []string{wtA, wtB, wtC} {
264
- if _, err := os.Stat(wt); !os.IsNotExist(err) {
265
- t.Fatalf("cleanup should remove worktree %s", wt)
266
- }
267
- }
268
- leasePath, _ := LeasePath(repo, slug)
269
- if _, err := os.Stat(leasePath); !os.IsNotExist(err) {
270
- t.Fatalf("cleanup should clear lease")
271
- }
272
- gitOk(t, repo, "rev-parse", "--verify", "refs/heads/"+bySlice["slice-a"].Branch)
273
- gitOk(t, repo, "rev-parse", "--verify", "refs/heads/"+sb.Branch)
274
- }
275
-
276
- func TestCreateAcceptsFourSlices(t *testing.T) {
277
- t.Parallel()
278
- repo, _ := setupRepo(t)
279
- for _, name := range []string{"c.go", "d.go"} {
280
- if err := os.WriteFile(filepath.Join(repo, "src", name), []byte("package main\n"), 0o644); err != nil {
281
- t.Fatal(err)
282
- }
283
- }
284
- gitOk(t, repo, "add", ".")
285
- gitOk(t, repo, "commit", "-m", "more files")
286
- base := gitOk(t, repo, "rev-parse", "HEAD")
287
- lease, err := Create(CreateOpts{
288
- Root: repo,
289
- Slug: "demo-four",
290
- BatchID: "batch4",
291
- BaseSHA: base,
292
- Slices: []SlicePaths{
293
- {ID: "slice-a", Paths: []string{"src/a.go"}},
294
- {ID: "slice-b", Paths: []string{"src/b.go"}},
295
- {ID: "slice-c", Paths: []string{"src/c.go"}},
296
- {ID: "slice-d", Paths: []string{"src/d.go"}},
297
- },
298
- })
299
- if err != nil {
300
- t.Fatal(err)
301
- }
302
- if lease.N != 4 || len(lease.Slices) != 4 {
303
- t.Fatalf("want 4 slices, got n=%d slices=%d", lease.N, len(lease.Slices))
304
- }
305
- }
306
-
307
- func TestCreateRefusesCountOutsideBounds(t *testing.T) {
308
- t.Parallel()
309
- repo, base := setupRepo(t)
310
- _, err := Create(CreateOpts{
311
- Root: repo,
312
- Slug: "demo-one",
313
- BatchID: "batch1",
314
- BaseSHA: base,
315
- Slices: []SlicePaths{{ID: "slice-a", Paths: []string{"src/a.go"}}},
316
- })
317
- if err == nil || !strings.Contains(err.Error(), "2-10 slices") {
318
- t.Fatalf("expected 2-10 bound for N=1, got %v", err)
319
- }
320
-
321
- slices := make([]SlicePaths, MaxParallelSlices+1)
322
- for i := range slices {
323
- name := fmt.Sprintf("src/x%d.go", i)
324
- if err := os.WriteFile(filepath.Join(repo, name), []byte("package main\n"), 0o644); err != nil {
325
- t.Fatal(err)
326
- }
327
- slices[i] = SlicePaths{ID: fmt.Sprintf("s%d", i), Paths: []string{name}}
328
- }
329
- gitOk(t, repo, "add", ".")
330
- gitOk(t, repo, "commit", "-m", "eleven")
331
- base = gitOk(t, repo, "rev-parse", "HEAD")
332
- _, err = Create(CreateOpts{
333
- Root: repo,
334
- Slug: "demo-eleven",
335
- BatchID: "batch11",
336
- BaseSHA: base,
337
- Slices: slices,
338
- })
339
- if err == nil || !strings.Contains(err.Error(), "2-10 slices") {
340
- t.Fatalf("expected 2-10 bound for N=11, got %v", err)
341
- }
342
- }
343
-
344
- func TestValidateLeaseBounds(t *testing.T) {
345
- t.Parallel()
346
- ok := validTestLease(MaxParallelSlices)
347
- if err := ValidateLease(ok); err != nil {
348
- t.Fatalf("N=%d should validate: %v", MaxParallelSlices, err)
349
- }
350
- tooMany := validTestLease(MaxParallelSlices + 1)
351
- if err := ValidateLease(tooMany); err == nil || !strings.Contains(err.Error(), "2-10 slices") {
352
- t.Fatalf("N=%d should refuse, got %v", MaxParallelSlices+1, err)
353
- }
354
- }
355
-
356
- func validTestLease(n int) *Lease {
357
- slices := make([]LeaseSlice, n)
358
- for i := range slices {
359
- id := fmt.Sprintf("s%d", i)
360
- slices[i] = LeaseSlice{
361
- ID: id,
362
- Paths: []string{fmt.Sprintf("src/%s.go", id)},
363
- WorktreePath: "/tmp/" + id,
364
- Branch: "devrites/parallel/x/batch/" + id,
365
- WrightStatus: WrightPending,
366
- }
367
- }
368
- return &Lease{
369
- BatchID: "batch1",
370
- CreatedAt: "2026-08-23T00:00:00Z",
371
- BaseSHA: "abcdef1",
372
- N: n,
373
- Status: StatusRunning,
374
- ControlPIDOrSession: "test",
375
- Slices: slices,
376
- }
377
- }
378
-
379
- func TestCreateRefusesOverlap(t *testing.T) {
380
- repo, base := setupRepo(t)
381
- _, err := Create(CreateOpts{
382
- Root: repo,
383
- Slug: "demo",
384
- BatchID: "batch1",
385
- BaseSHA: base,
386
- Slices: []SlicePaths{
387
- {ID: "slice-a", Paths: []string{"src/a.go"}},
388
- {ID: "slice-b", Paths: []string{"src/a.go"}},
389
- },
390
- })
391
- if err == nil || !strings.Contains(err.Error(), "overlap") {
392
- t.Fatalf("expected overlap refusal, got %v", err)
393
- }
394
- }
395
-
396
- func TestIntegrateDivergentSiblings(t *testing.T) {
397
- repo, base := setupRepo(t)
398
- slug := "demo-feature"
399
- batch := "batch1"
400
- lease, err := Create(CreateOpts{
401
- Root: repo,
402
- Slug: slug,
403
- BatchID: batch,
404
- BaseSHA: base,
405
- Slices: []SlicePaths{
406
- {ID: "slice-a", Paths: []string{"src/a.go"}},
407
- {ID: "slice-b", Paths: []string{"src/b.go"}},
408
- },
409
- })
410
- if err != nil {
411
- t.Fatal(err)
412
- }
413
- wtA := lease.Slices[0].WorktreePath
414
- wtB := lease.Slices[1].WorktreePath
415
-
416
- if err := os.WriteFile(filepath.Join(wtA, "src", "a.go"), []byte("package main\n\nfunc A() {}\n"), 0o644); err != nil {
417
- t.Fatal(err)
418
- }
419
- gitOk(t, wtA, "add", "src/a.go")
420
- gitOk(t, wtA, "commit", "-m", "WIP(demo-feature): add A helper")
421
- tcA := gitOk(t, wtA, "rev-parse", "HEAD")
422
-
423
- if err := os.WriteFile(filepath.Join(wtB, "src", "b.go"), []byte("package main\n\nfunc B() {}\n"), 0o644); err != nil {
424
- t.Fatal(err)
425
- }
426
- gitOk(t, wtB, "add", "src/b.go")
427
- gitOk(t, wtB, "commit", "-m", "WIP(demo-feature): add B helper")
428
- tcB := gitOk(t, wtB, "rev-parse", "HEAD")
429
-
430
- if _, err := RecordGreen(repo, slug, "slice-a", tcA); err != nil {
431
- t.Fatal(err)
432
- }
433
- if _, err := RecordGreen(repo, slug, "slice-b", tcB); err != nil {
434
- t.Fatal(err)
435
- }
436
-
437
- tip, lease, err := Integrate(IntegrateOpts{Root: repo, Slug: slug, ApplyToControl: true})
438
- if err != nil {
439
- t.Fatal(err)
440
- }
441
- if lease.Status != StatusComplete {
442
- t.Fatalf("status=%s", lease.Status)
443
- }
444
- if tip == "" || tip == base {
445
- t.Fatalf("expected advanced tip, got %s", tip)
446
- }
447
- head := gitOk(t, repo, "rev-parse", "HEAD")
448
- if head != tip {
449
- t.Fatalf("control head %s want tip %s", head, tip)
450
- }
451
- if n := gitOk(t, repo, "rev-list", "--count", base+"..HEAD"); n != "2" {
452
- t.Fatalf("control should gain one commit per sibling, got %s", n)
453
- }
454
- log := gitOk(t, repo, "log", "--format=%s", base+"..HEAD")
455
- for _, subj := range strings.Split(log, "\n") {
456
- if !strings.HasPrefix(subj, "WIP(demo-feature):") {
457
- t.Fatalf("control subject %q missing WIP(demo-feature): prefix", subj)
458
- }
459
- if strings.Contains(strings.ToUpper(subj), "SLICE-") {
460
- t.Fatalf("control subject %q still names a slice id", subj)
461
- }
462
- }
463
- a := mustRead(t, filepath.Join(repo, "src", "a.go"))
464
- b := mustRead(t, filepath.Join(repo, "src", "b.go"))
465
- if !strings.Contains(a, "func A") || !strings.Contains(b, "func B") {
466
- t.Fatalf("integrated contents missing: a=%q b=%q", a, b)
467
- }
468
-
469
- if _, err := Cleanup(repo, slug, false); err != nil {
470
- t.Fatal(err)
471
- }
472
- if _, err := os.Stat(wtA); !os.IsNotExist(err) {
473
- t.Fatalf("cleanup should remove workers")
474
- }
475
- }
476
-
477
- // TestIntegrateWithoutApplyKeepsLeaseRunning proves a flag-less integrate
478
- // stages the per-sibling commits on the integrate branch but leaves the lease
479
- // running and control at base, so a later non-forced cleanup cannot discard
480
- // the only refs holding the integrated tree.
481
- func TestIntegrateWithoutApplyKeepsLeaseRunning(t *testing.T) {
482
- repo, base := setupRepo(t)
483
- slug, batch := "demo-feature", "batch1"
484
- greenBatch(t, repo, base, slug, batch)
485
-
486
- tip, lease, err := Integrate(IntegrateOpts{Root: repo, Slug: slug})
487
- if err != nil {
488
- t.Fatal(err)
489
- }
490
- if tip == "" || tip == base {
491
- t.Fatalf("expected staged integrate tip, got %s", tip)
492
- }
493
- if lease.Status != StatusRunning {
494
- t.Fatalf("status=%s want running without --apply-to-control", lease.Status)
495
- }
496
- if head := gitOk(t, repo, "rev-parse", "HEAD"); head != base {
497
- t.Fatalf("control moved without apply: %s", head)
498
- }
499
- ibranch := IntegrateBranchName(slug, batch)
500
- if got := gitOk(t, repo, "rev-parse", ibranch); got != tip {
501
- t.Fatalf("integrate branch %s want integrate tip %s", got, tip)
502
- }
503
- if _, err := Cleanup(repo, slug, false); err == nil {
504
- t.Fatal("cleanup on running lease must refuse without --force")
505
- }
506
- // Forced cleanup salvages then removes; the integrate branch holds the
507
- // integrate tip, so it is kept and reported rather than deleted.
508
- if _, err := Cleanup(repo, slug, true); err != nil {
509
- t.Fatal(err)
510
- }
511
- if got := gitOk(t, repo, "rev-parse", ibranch); got != tip {
512
- t.Fatalf("forced cleanup dropped integrate branch: %s want %s", got, tip)
513
- }
514
- }
515
-
516
- // TestIntegrateFailedLeaseRepairsAndRetries proves integrate-failed is not a
517
- // dead end: a repaired transfer re-records on the failed lease and a retried
518
- // integrate completes into one control commit per sibling.
519
- func TestIntegrateFailedLeaseRepairsAndRetries(t *testing.T) {
520
- repo, base := setupRepo(t)
521
- slug, batch := "demo-feature", "batch1"
522
- greenBatch(t, repo, base, slug, batch)
523
- realTC := gitOk(t, repo, "rev-parse", WorkerBranch(slug, batch, "slice-a"))
524
-
525
- leasePath, err := LeasePath(repo, slug)
526
- if err != nil {
527
- t.Fatal(err)
528
- }
529
- bad, err := ReadLease(leasePath)
530
- if err != nil {
531
- t.Fatal(err)
532
- }
533
- bad.Slices[0].TransferCommit = strings.Repeat("deadbeef", 5)
534
- if err := WriteLease(leasePath, bad); err != nil {
535
- t.Fatal(err)
536
- }
537
- if _, _, err := Integrate(IntegrateOpts{Root: repo, Slug: slug, ApplyToControl: true}); err == nil {
538
- t.Fatal("expected integrate failure")
539
- }
540
- onDisk, err := ReadLease(leasePath)
541
- if err != nil {
542
- t.Fatal(err)
543
- }
544
- if onDisk.Status != StatusIntegrateFailed {
545
- t.Fatalf("status=%s want integrate-failed", onDisk.Status)
546
- }
547
-
548
- if _, err := RecordGreen(repo, slug, "slice-a", realTC); err != nil {
549
- t.Fatalf("record-green on integrate-failed lease: %v", err)
550
- }
551
- if _, lease, err := Integrate(IntegrateOpts{Root: repo, Slug: slug, ApplyToControl: true}); err != nil {
552
- t.Fatalf("integrate retry: %v", err)
553
- } else if lease.Status != StatusComplete {
554
- t.Fatalf("status=%s want complete", lease.Status)
555
- }
556
- if n := gitOk(t, repo, "rev-list", "--count", base+"..HEAD"); n != "2" {
557
- t.Fatalf("expected one control commit per sibling, got %s", n)
558
- }
559
- }
560
-
561
- // TestIntegrateRefusesDirtyControlOnSlicePaths proves --apply-to-control
562
- // neither absorbs nor clobbers uncommitted user work on slice paths: overlap
563
- // refuses with the lease still running, while unrelated dirty files are left
564
- // alone and the FF proceeds.
565
- func TestIntegrateRefusesDirtyControlOnSlicePaths(t *testing.T) {
566
- repo, base := setupRepo(t)
567
- slug, batch := "demo-feature", "batch1"
568
- greenBatch(t, repo, base, slug, batch)
569
-
570
- if err := os.MkdirAll(filepath.Join(repo, "src"), 0o755); err != nil {
571
- t.Fatal(err)
572
- }
573
- userWIP := filepath.Join(repo, "src", "a.go")
574
- if err := os.WriteFile(userWIP, []byte("user wip\n"), 0o644); err != nil {
575
- t.Fatal(err)
576
- }
577
- _, _, ierr := Integrate(IntegrateOpts{Root: repo, Slug: slug, ApplyToControl: true})
578
- if ierr == nil {
579
- t.Fatal("expected dirty-control refusal")
580
- }
581
- if msg := ierr.Error(); strings.Contains(msg, "commit or stash") || !strings.Contains(msg, "stop for the human") {
582
- t.Fatalf("refusal must route user work to the human, not advise commit/stash: %v", msg)
583
- }
584
- leasePath, err := LeasePath(repo, slug)
585
- if err != nil {
586
- t.Fatal(err)
587
- }
588
- lease, err := ReadLease(leasePath)
589
- if err != nil {
590
- t.Fatal(err)
591
- }
592
- if lease.Status != StatusRunning {
593
- t.Fatalf("lease status=%s want running after precondition refusal", lease.Status)
594
- }
595
- if head := gitOk(t, repo, "rev-parse", "HEAD"); head != base {
596
- t.Fatalf("control moved despite refusal: %s", head)
597
- }
598
-
599
- // Unrelated uncommitted work is not part of the batch and must survive.
600
- gitOk(t, repo, "checkout", "--", "src/a.go")
601
- keep := filepath.Join(repo, "unrelated.txt")
602
- if err := os.WriteFile(keep, []byte("keep me\n"), 0o644); err != nil {
603
- t.Fatal(err)
604
- }
605
- if _, _, err := Integrate(IntegrateOpts{Root: repo, Slug: slug, ApplyToControl: true}); err != nil {
606
- t.Fatalf("integrate with non-overlapping dirty file: %v", err)
607
- }
608
- if b, err := os.ReadFile(keep); err != nil || string(b) != "keep me\n" {
609
- t.Fatalf("unrelated dirty file lost: err=%v body=%q", err, b)
610
- }
611
- }
612
-
613
- func mustRead(t *testing.T, path string) string {
614
- t.Helper()
615
- b, err := os.ReadFile(path)
616
- if err != nil {
617
- t.Fatal(err)
618
- }
619
- return string(b)
620
- }
621
-
622
- func TestGitReturnsWhenHookGrandchildHoldsPipe(t *testing.T) {
623
- repo, _ := setupRepo(t)
624
- hook := filepath.Join(repo, ".git", "hooks", "pre-commit")
625
- if err := os.WriteFile(hook, []byte("#!/bin/sh\nsleep 30\n"), 0o755); err != nil {
626
- t.Fatal(err)
627
- }
628
- if err := os.WriteFile(filepath.Join(repo, "new.txt"), []byte("x\n"), 0o644); err != nil {
629
- t.Fatal(err)
630
- }
631
- gitOk(t, repo, "add", "new.txt")
632
- prev := gitTimeout
633
- gitTimeout = time.Second
634
- t.Cleanup(func() { gitTimeout = prev })
635
-
636
- start := time.Now()
637
- _, err := git(repo, "commit", "-m", "m")
638
- elapsed := time.Since(start)
639
- if err == nil {
640
- t.Fatal("commit with a hanging hook succeeded")
641
- }
642
- if limit := gitTimeout + gitWaitDelay + 3*time.Second; elapsed > limit {
643
- t.Fatalf("git returned after %v, want within %v", elapsed, limit)
644
- }
645
- }
@@ -1,43 +0,0 @@
1
- package parallel
2
-
3
- import (
4
- "strings"
5
- "testing"
6
- )
7
-
8
- func FuzzPathDisjoint(f *testing.F) {
9
- f.Add("src/a.go", []byte(`{"slices":[{"id":"a","paths":["src/a.go"]},{"id":"b","paths":["src/b.go"]}]}`))
10
- f.Add("../escape", []byte(`[{"id":"a","paths":["/abs"]},{"id":"b","paths":[".devrites/state.md"]}]`))
11
- f.Add("src\\windows.go", []byte(`{"slices":[{"id":"a","paths":["src", "src"]}]}`))
12
- f.Add("src//double/", []byte(`not json`))
13
- f.Add(".devrites", []byte(`{"slices":[]}`))
14
- f.Fuzz(func(t *testing.T, raw string, doc []byte) {
15
- normalized, err := NormalizePath(raw)
16
- if err == nil {
17
- if normalized == "" || strings.HasPrefix(normalized, "/") || strings.Contains(normalized, "\\") {
18
- t.Fatalf("NormalizePath accepted %q into %q", raw, normalized)
19
- }
20
- for _, part := range strings.Split(normalized, "/") {
21
- if part == "" || part == "." || part == ".." {
22
- t.Fatalf("NormalizePath accepted %q into %q with bad segment %q", raw, normalized, part)
23
- }
24
- }
25
- again, err := NormalizePath(normalized)
26
- if err != nil || again != normalized {
27
- t.Fatalf("NormalizePath not idempotent: %q -> %q (err %v)", normalized, again, err)
28
- }
29
- }
30
-
31
- slices, err := ParseSlicesJSON(doc)
32
- if err != nil {
33
- return
34
- }
35
- ids, err := CheckPathDisjoint(slices, "")
36
- if err != nil {
37
- return
38
- }
39
- if len(ids) != len(slices) {
40
- t.Fatalf("CheckPathDisjoint returned %d ids for %d slices", len(ids), len(slices))
41
- }
42
- })
43
- }