devrites 6.0.3 → 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 (785) hide show
  1. package/CHANGELOG.md +12 -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 +10 -7
  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 +35 -12
  31. package/engine/internal/lib/diffscope.go +79 -3
  32. package/engine/internal/lib/dispatch.go +78 -12
  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 +103 -10
  36. package/engine/internal/lib/migrate.go +30 -12
  37. package/engine/internal/lib/next.go +22 -2
  38. package/engine/internal/lib/observe_summary.go +8 -0
  39. package/engine/internal/lib/open_visual.go +3 -1
  40. package/engine/internal/lib/recall.go +355 -0
  41. package/engine/internal/lib/regression.go +20 -0
  42. package/engine/internal/lib/resolve.go +96 -53
  43. package/engine/internal/lib/secretscan.go +24 -1
  44. package/engine/internal/lib/taskgraph.go +31 -1
  45. package/engine/internal/lib/util.go +18 -7
  46. package/engine/internal/lib/windows.go +68 -15
  47. package/engine/internal/markdowntext/markdowntext.go +45 -6
  48. package/engine/internal/notes/cli.go +5 -3
  49. package/engine/internal/notes/notes.go +8 -3
  50. package/engine/internal/overhaul/admit/run.go +16 -12
  51. package/engine/internal/overhaul/overhaul.go +1 -0
  52. package/engine/internal/overhaul/records/check.go +52 -9
  53. package/engine/internal/overhaul/render/run.go +3 -2
  54. package/engine/internal/overhaul/snapshot/run.go +2 -2
  55. package/engine/internal/parallel/git.go +5 -6
  56. package/engine/internal/parallel/ops.go +3 -0
  57. package/engine/internal/parallel/pathdisjoint.go +9 -4
  58. package/engine/internal/release/release.go +11 -9
  59. package/engine/internal/safepath/safepath.go +17 -1
  60. package/engine/internal/state/budgets.go +8 -4
  61. package/engine/internal/state/feature.go +3 -1
  62. package/engine/internal/state/observation.go +12 -7
  63. package/engine/internal/state/taskgraph.go +67 -12
  64. package/engine/internal/state/write.go +7 -1
  65. package/engine/main.go +6 -2
  66. package/pack/.claude/agents/_shared/composition-overhaul.md +2 -0
  67. package/pack/.claude/agents/devrites-devex-reviewer.md +5 -0
  68. package/pack/.claude/agents/devrites-evidence-scout.md +4 -0
  69. package/pack/.claude/agents/devrites-plan-reviewer.md +4 -1
  70. package/pack/.claude/agents/devrites-slice-wright.md +4 -1
  71. package/pack/.claude/agents/overhaul-implementer.md +1 -0
  72. package/pack/.claude/settings.json +4 -4
  73. package/pack/.claude/skills/devrites-api-interface/SKILL.md +1 -1
  74. package/pack/.claude/skills/devrites-audit/SKILL.md +1 -1
  75. package/pack/.claude/skills/devrites-browser-proof/SKILL.md +1 -1
  76. package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +3 -2
  77. package/pack/.claude/skills/devrites-doubt/SKILL.md +1 -1
  78. package/pack/.claude/skills/devrites-frontend-craft/SKILL.md +1 -1
  79. package/pack/.claude/skills/devrites-interview/SKILL.md +1 -1
  80. package/pack/.claude/skills/devrites-lib/reference/intent-map.md +3 -3
  81. package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +4 -3
  82. package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +5 -4
  83. package/pack/.claude/skills/devrites-lib/reference/standards/ci-cd.md +2 -1
  84. package/pack/.claude/skills/devrites-lib/reference/standards/code-review.md +1 -1
  85. package/pack/.claude/skills/devrites-lib/reference/standards/data-integrity.md +4 -0
  86. package/pack/.claude/skills/devrites-lib/reference/standards/developer-experience.md +5 -0
  87. package/pack/.claude/skills/devrites-lib/reference/standards/loop-operations.md +3 -0
  88. package/pack/.claude/skills/devrites-lib/reference/standards/performance.md +2 -0
  89. package/pack/.claude/skills/devrites-lib/reference/standards/skill-authoring.md +13 -1
  90. package/pack/.claude/skills/devrites-lib/reference/standards/testing.md +13 -0
  91. package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +10 -6
  92. package/pack/.claude/skills/devrites-prose-craft/SKILL.md +1 -1
  93. package/pack/.claude/skills/devrites-source-driven/SKILL.md +1 -1
  94. package/pack/.claude/skills/devrites-ux-shape/SKILL.md +1 -1
  95. package/pack/.claude/skills/overhaul/references/orchestration.md +6 -2
  96. package/pack/.claude/skills/overhaul/references/records.md +8 -3
  97. package/pack/.claude/skills/rite/SKILL.md +4 -3
  98. package/pack/.claude/skills/rite/reference/menu.md +6 -5
  99. package/pack/.claude/skills/rite-adopt/SKILL.md +4 -3
  100. package/pack/.claude/skills/rite-autocomplete/SKILL.md +6 -5
  101. package/pack/.claude/skills/rite-autocomplete/reference/loop.md +2 -1
  102. package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +2 -1
  103. package/pack/.claude/skills/rite-build/reference/afk-discipline.md +3 -1
  104. package/pack/.claude/skills/rite-build/reference/output.md +1 -1
  105. package/pack/.claude/skills/rite-build/reference/phase-contract.md +2 -0
  106. package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +19 -0
  107. package/pack/.claude/skills/rite-converge/SKILL.md +4 -3
  108. package/pack/.claude/skills/rite-customize/SKILL.md +1 -1
  109. package/pack/.claude/skills/rite-define/SKILL.md +3 -2
  110. package/pack/.claude/skills/rite-doctor/SKILL.md +12 -6
  111. package/pack/.claude/skills/rite-dogfood/SKILL.md +2 -2
  112. package/pack/.claude/skills/rite-explain/SKILL.md +1 -1
  113. package/pack/.claude/skills/rite-fast/SKILL.md +3 -1
  114. package/pack/.claude/skills/rite-handoff/SKILL.md +4 -3
  115. package/pack/.claude/skills/rite-learn/SKILL.md +2 -2
  116. package/pack/.claude/skills/rite-plan/reference/replan-and-repair.md +2 -0
  117. package/pack/.claude/skills/rite-plan/reference/slicing.md +3 -1
  118. package/pack/.claude/skills/rite-pov/SKILL.md +1 -1
  119. package/pack/.claude/skills/rite-pr-feedback/SKILL.md +5 -4
  120. package/pack/.claude/skills/rite-pressure-test/SKILL.md +7 -5
  121. package/pack/.claude/skills/rite-prototype/SKILL.md +1 -1
  122. package/pack/.claude/skills/rite-quick/SKILL.md +10 -5
  123. package/pack/.claude/skills/rite-resolve/SKILL.md +3 -3
  124. package/pack/.claude/skills/rite-resolve/reference/answer-protocol.md +4 -5
  125. package/pack/.claude/skills/rite-review/SKILL.md +2 -1
  126. package/pack/.claude/skills/rite-seal/SKILL.md +3 -3
  127. package/pack/.claude/skills/rite-seal/reference/go-no-go.md +2 -0
  128. package/pack/.claude/skills/rite-seal/reference/seal-template.md +5 -2
  129. package/pack/.claude/skills/rite-ship/reference/close-out.md +3 -2
  130. package/pack/.claude/skills/rite-spec/SKILL.md +4 -1
  131. package/pack/.claude/skills/rite-status/SKILL.md +1 -1
  132. package/pack/.claude/skills/rite-temper/reference/significance.md +2 -0
  133. package/pack/.claude/skills/rite-upgrade/SKILL.md +4 -2
  134. package/pack/.claude/skills/rite-vet/SKILL.md +3 -2
  135. package/pack/.claude/skills/rite-vet/reference/artifacts.md +1 -1
  136. package/pack/.claude/skills/rite-watch-pr/SKILL.md +1 -1
  137. package/pack/.claude/skills/rite-zoom-out/SKILL.md +1 -1
  138. package/pack/generated/claude/agents/devrites-devex-reviewer.md +5 -0
  139. package/pack/generated/claude/agents/devrites-evidence-scout.md +4 -0
  140. package/pack/generated/claude/agents/devrites-plan-reviewer.md +4 -1
  141. package/pack/generated/claude/agents/devrites-slice-wright.md +4 -1
  142. package/pack/generated/claude/agents/overhaul-backend-engineer.md +2 -0
  143. package/pack/generated/claude/agents/overhaul-boundary.md +2 -0
  144. package/pack/generated/claude/agents/overhaul-craft.md +2 -0
  145. package/pack/generated/claude/agents/overhaul-frontend-engineer.md +2 -0
  146. package/pack/generated/claude/agents/overhaul-implementer.md +3 -0
  147. package/pack/generated/claude/agents/overhaul-recon.md +2 -0
  148. package/pack/generated/claude/agents/overhaul-specialist.md +2 -0
  149. package/pack/generated/claude/agents/overhaul-verifier.md +2 -0
  150. package/pack/generated/claude/settings.json +4 -4
  151. package/pack/generated/claude/skills/devrites-api-interface/SKILL.md +1 -1
  152. package/pack/generated/claude/skills/devrites-audit/SKILL.md +1 -1
  153. package/pack/generated/claude/skills/devrites-browser-proof/SKILL.md +1 -1
  154. package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +3 -2
  155. package/pack/generated/claude/skills/devrites-doubt/SKILL.md +1 -1
  156. package/pack/generated/claude/skills/devrites-frontend-craft/SKILL.md +1 -1
  157. package/pack/generated/claude/skills/devrites-interview/SKILL.md +1 -1
  158. package/pack/generated/claude/skills/devrites-lib/reference/intent-map.md +3 -3
  159. package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +4 -3
  160. package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +5 -4
  161. package/pack/generated/claude/skills/devrites-lib/reference/standards/ci-cd.md +2 -1
  162. package/pack/generated/claude/skills/devrites-lib/reference/standards/code-review.md +1 -1
  163. package/pack/generated/claude/skills/devrites-lib/reference/standards/data-integrity.md +4 -0
  164. package/pack/generated/claude/skills/devrites-lib/reference/standards/developer-experience.md +5 -0
  165. package/pack/generated/claude/skills/devrites-lib/reference/standards/loop-operations.md +3 -0
  166. package/pack/generated/claude/skills/devrites-lib/reference/standards/performance.md +2 -0
  167. package/pack/generated/claude/skills/devrites-lib/reference/standards/skill-authoring.md +13 -1
  168. package/pack/generated/claude/skills/devrites-lib/reference/standards/testing.md +13 -0
  169. package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +10 -6
  170. package/pack/generated/claude/skills/devrites-prose-craft/SKILL.md +1 -1
  171. package/pack/generated/claude/skills/devrites-source-driven/SKILL.md +1 -1
  172. package/pack/generated/claude/skills/devrites-ux-shape/SKILL.md +1 -1
  173. package/pack/generated/claude/skills/overhaul/references/orchestration.md +6 -2
  174. package/pack/generated/claude/skills/overhaul/references/records.md +8 -3
  175. package/pack/generated/claude/skills/rite/SKILL.md +4 -3
  176. package/pack/generated/claude/skills/rite/reference/menu.md +6 -5
  177. package/pack/generated/claude/skills/rite-adopt/SKILL.md +4 -3
  178. package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +6 -5
  179. package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +2 -1
  180. package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +2 -1
  181. package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +3 -1
  182. package/pack/generated/claude/skills/rite-build/reference/output.md +1 -1
  183. package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +2 -0
  184. package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +19 -0
  185. package/pack/generated/claude/skills/rite-converge/SKILL.md +4 -3
  186. package/pack/generated/claude/skills/rite-customize/SKILL.md +1 -1
  187. package/pack/generated/claude/skills/rite-define/SKILL.md +3 -2
  188. package/pack/generated/claude/skills/rite-doctor/SKILL.md +12 -6
  189. package/pack/generated/claude/skills/rite-dogfood/SKILL.md +2 -2
  190. package/pack/generated/claude/skills/rite-explain/SKILL.md +1 -1
  191. package/pack/generated/claude/skills/rite-fast/SKILL.md +3 -1
  192. package/pack/generated/claude/skills/rite-handoff/SKILL.md +4 -3
  193. package/pack/generated/claude/skills/rite-learn/SKILL.md +2 -2
  194. package/pack/generated/claude/skills/rite-plan/reference/replan-and-repair.md +2 -0
  195. package/pack/generated/claude/skills/rite-plan/reference/slicing.md +3 -1
  196. package/pack/generated/claude/skills/rite-pov/SKILL.md +1 -1
  197. package/pack/generated/claude/skills/rite-pr-feedback/SKILL.md +5 -4
  198. package/pack/generated/claude/skills/rite-pressure-test/SKILL.md +7 -5
  199. package/pack/generated/claude/skills/rite-prototype/SKILL.md +1 -1
  200. package/pack/generated/claude/skills/rite-quick/SKILL.md +10 -5
  201. package/pack/generated/claude/skills/rite-resolve/SKILL.md +3 -3
  202. package/pack/generated/claude/skills/rite-resolve/reference/answer-protocol.md +4 -5
  203. package/pack/generated/claude/skills/rite-review/SKILL.md +2 -1
  204. package/pack/generated/claude/skills/rite-seal/SKILL.md +3 -3
  205. package/pack/generated/claude/skills/rite-seal/reference/go-no-go.md +2 -0
  206. package/pack/generated/claude/skills/rite-seal/reference/seal-template.md +5 -2
  207. package/pack/generated/claude/skills/rite-ship/reference/close-out.md +3 -2
  208. package/pack/generated/claude/skills/rite-spec/SKILL.md +4 -1
  209. package/pack/generated/claude/skills/rite-status/SKILL.md +1 -1
  210. package/pack/generated/claude/skills/rite-temper/reference/significance.md +2 -0
  211. package/pack/generated/claude/skills/rite-upgrade/SKILL.md +4 -2
  212. package/pack/generated/claude/skills/rite-vet/SKILL.md +3 -2
  213. package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +1 -1
  214. package/pack/generated/claude/skills/rite-watch-pr/SKILL.md +1 -1
  215. package/pack/generated/claude/skills/rite-zoom-out/SKILL.md +1 -1
  216. package/pack/generated/codex/agents/devrites-code-reviewer.toml +7 -7
  217. package/pack/generated/codex/agents/devrites-devex-reviewer.toml +6 -1
  218. package/pack/generated/codex/agents/devrites-evidence-scout.toml +4 -0
  219. package/pack/generated/codex/agents/devrites-frontend-reviewer.toml +1 -1
  220. package/pack/generated/codex/agents/devrites-plan-drafter.toml +3 -3
  221. package/pack/generated/codex/agents/devrites-plan-reviewer.toml +5 -2
  222. package/pack/generated/codex/agents/devrites-proof-runner.toml +2 -2
  223. package/pack/generated/codex/agents/devrites-security-auditor.toml +1 -1
  224. package/pack/generated/codex/agents/devrites-simplifier-reviewer.toml +1 -1
  225. package/pack/generated/codex/agents/devrites-slice-wright.toml +8 -5
  226. package/pack/generated/codex/agents/devrites-test-analyst.toml +5 -5
  227. package/pack/generated/codex/agents/devrites-upgrade-planner.toml +1 -1
  228. package/pack/generated/codex/agents/fast-builder.toml +3 -3
  229. package/pack/generated/codex/agents/fast-critic.toml +3 -3
  230. package/pack/generated/codex/agents/overhaul-backend-engineer.toml +2 -0
  231. package/pack/generated/codex/agents/overhaul-boundary.toml +2 -0
  232. package/pack/generated/codex/agents/overhaul-craft.toml +2 -0
  233. package/pack/generated/codex/agents/overhaul-frontend-engineer.toml +2 -0
  234. package/pack/generated/codex/agents/overhaul-implementer.toml +2 -0
  235. package/pack/generated/codex/agents/overhaul-recon.toml +2 -0
  236. package/pack/generated/codex/agents/overhaul-specialist.toml +2 -0
  237. package/pack/generated/codex/agents/overhaul-verifier.toml +2 -0
  238. package/pack/generated/codex/skills/devrites-api-interface/SKILL.md +1 -1
  239. package/pack/generated/codex/skills/devrites-audit/SKILL.md +1 -1
  240. package/pack/generated/codex/skills/devrites-browser-proof/SKILL.md +1 -1
  241. package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +3 -2
  242. package/pack/generated/codex/skills/devrites-doubt/SKILL.md +1 -1
  243. package/pack/generated/codex/skills/devrites-frontend-craft/SKILL.md +1 -1
  244. package/pack/generated/codex/skills/devrites-interview/SKILL.md +1 -1
  245. package/pack/generated/codex/skills/devrites-lib/reference/intent-map.md +3 -3
  246. package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +6 -5
  247. package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +5 -4
  248. package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +1 -1
  249. package/pack/generated/codex/skills/devrites-lib/reference/standards/ci-cd.md +2 -1
  250. package/pack/generated/codex/skills/devrites-lib/reference/standards/code-review.md +1 -1
  251. package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +1 -1
  252. package/pack/generated/codex/skills/devrites-lib/reference/standards/data-integrity.md +4 -0
  253. package/pack/generated/codex/skills/devrites-lib/reference/standards/developer-experience.md +5 -0
  254. package/pack/generated/codex/skills/devrites-lib/reference/standards/loop-operations.md +3 -0
  255. package/pack/generated/codex/skills/devrites-lib/reference/standards/performance.md +2 -0
  256. package/pack/generated/codex/skills/devrites-lib/reference/standards/skill-authoring.md +13 -1
  257. package/pack/generated/codex/skills/devrites-lib/reference/standards/testing.md +13 -0
  258. package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +11 -7
  259. package/pack/generated/codex/skills/devrites-prose-craft/SKILL.md +1 -1
  260. package/pack/generated/codex/skills/devrites-source-driven/SKILL.md +1 -1
  261. package/pack/generated/codex/skills/devrites-ux-shape/SKILL.md +1 -1
  262. package/pack/generated/codex/skills/overhaul/SKILL.md +15 -15
  263. package/pack/generated/codex/skills/overhaul/references/audit-domains.md +2 -2
  264. package/pack/generated/codex/skills/overhaul/references/orchestration.md +11 -7
  265. package/pack/generated/codex/skills/overhaul/references/records.md +8 -3
  266. package/pack/generated/codex/skills/rite/SKILL.md +4 -3
  267. package/pack/generated/codex/skills/rite/reference/menu.md +6 -5
  268. package/pack/generated/codex/skills/rite-adopt/SKILL.md +4 -3
  269. package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +7 -6
  270. package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +2 -1
  271. package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +2 -1
  272. package/pack/generated/codex/skills/rite-build/SKILL.md +2 -2
  273. package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +3 -1
  274. package/pack/generated/codex/skills/rite-build/reference/output.md +1 -1
  275. package/pack/generated/codex/skills/rite-build/reference/parallel-batch.md +1 -1
  276. package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +2 -0
  277. package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +20 -1
  278. package/pack/generated/codex/skills/rite-clarify/SKILL.md +1 -1
  279. package/pack/generated/codex/skills/rite-converge/SKILL.md +5 -4
  280. package/pack/generated/codex/skills/rite-customize/SKILL.md +1 -1
  281. package/pack/generated/codex/skills/rite-define/SKILL.md +4 -3
  282. package/pack/generated/codex/skills/rite-doctor/SKILL.md +12 -6
  283. package/pack/generated/codex/skills/rite-dogfood/SKILL.md +2 -2
  284. package/pack/generated/codex/skills/rite-explain/SKILL.md +1 -1
  285. package/pack/generated/codex/skills/rite-fast/SKILL.md +8 -6
  286. package/pack/generated/codex/skills/rite-frame/SKILL.md +1 -1
  287. package/pack/generated/codex/skills/rite-handoff/SKILL.md +4 -3
  288. package/pack/generated/codex/skills/rite-learn/SKILL.md +2 -2
  289. package/pack/generated/codex/skills/rite-plan/SKILL.md +1 -1
  290. package/pack/generated/codex/skills/rite-plan/reference/replan-and-repair.md +2 -0
  291. package/pack/generated/codex/skills/rite-plan/reference/slicing.md +3 -1
  292. package/pack/generated/codex/skills/rite-polish/SKILL.md +2 -2
  293. package/pack/generated/codex/skills/rite-pov/SKILL.md +1 -1
  294. package/pack/generated/codex/skills/rite-pr-feedback/SKILL.md +5 -4
  295. package/pack/generated/codex/skills/rite-pressure-test/SKILL.md +7 -5
  296. package/pack/generated/codex/skills/rite-prototype/SKILL.md +1 -1
  297. package/pack/generated/codex/skills/rite-prove/SKILL.md +1 -1
  298. package/pack/generated/codex/skills/rite-quick/SKILL.md +11 -6
  299. package/pack/generated/codex/skills/rite-resolve/SKILL.md +3 -3
  300. package/pack/generated/codex/skills/rite-resolve/reference/answer-protocol.md +4 -5
  301. package/pack/generated/codex/skills/rite-review/SKILL.md +3 -2
  302. package/pack/generated/codex/skills/rite-seal/SKILL.md +4 -4
  303. package/pack/generated/codex/skills/rite-seal/reference/go-no-go.md +2 -0
  304. package/pack/generated/codex/skills/rite-seal/reference/seal-template.md +5 -2
  305. package/pack/generated/codex/skills/rite-ship/SKILL.md +1 -1
  306. package/pack/generated/codex/skills/rite-ship/reference/close-out.md +3 -2
  307. package/pack/generated/codex/skills/rite-spec/SKILL.md +5 -2
  308. package/pack/generated/codex/skills/rite-status/SKILL.md +1 -1
  309. package/pack/generated/codex/skills/rite-temper/SKILL.md +2 -2
  310. package/pack/generated/codex/skills/rite-temper/reference/significance.md +2 -0
  311. package/pack/generated/codex/skills/rite-upgrade/SKILL.md +4 -2
  312. package/pack/generated/codex/skills/rite-vet/SKILL.md +4 -3
  313. package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +1 -1
  314. package/pack/generated/codex/skills/rite-watch-pr/SKILL.md +1 -1
  315. package/pack/generated/codex/skills/rite-zoom-out/SKILL.md +1 -1
  316. package/pack/generated/devin/AGENTS.md +1 -1
  317. package/pack/generated/devin/agents/devrites-devex-reviewer.md +5 -0
  318. package/pack/generated/devin/agents/devrites-evidence-scout.md +4 -0
  319. package/pack/generated/devin/agents/devrites-plan-reviewer.md +4 -1
  320. package/pack/generated/devin/agents/devrites-slice-wright.md +4 -1
  321. package/pack/generated/devin/agents/overhaul-backend-engineer.md +2 -0
  322. package/pack/generated/devin/agents/overhaul-boundary.md +2 -0
  323. package/pack/generated/devin/agents/overhaul-craft.md +2 -0
  324. package/pack/generated/devin/agents/overhaul-frontend-engineer.md +2 -0
  325. package/pack/generated/devin/agents/overhaul-implementer.md +2 -0
  326. package/pack/generated/devin/agents/overhaul-recon.md +2 -0
  327. package/pack/generated/devin/agents/overhaul-specialist.md +2 -0
  328. package/pack/generated/devin/agents/overhaul-verifier.md +2 -0
  329. package/pack/generated/devin/skills/devrites-api-interface/SKILL.md +1 -1
  330. package/pack/generated/devin/skills/devrites-audit/SKILL.md +1 -1
  331. package/pack/generated/devin/skills/devrites-browser-proof/SKILL.md +1 -1
  332. package/pack/generated/devin/skills/devrites-debug-recovery/SKILL.md +3 -2
  333. package/pack/generated/devin/skills/devrites-doubt/SKILL.md +1 -1
  334. package/pack/generated/devin/skills/devrites-frontend-craft/SKILL.md +1 -1
  335. package/pack/generated/devin/skills/devrites-interview/SKILL.md +2 -2
  336. package/pack/generated/devin/skills/devrites-lib/reference/intent-map.md +3 -3
  337. package/pack/generated/devin/skills/devrites-lib/reference/parallel-dispatch.md +6 -5
  338. package/pack/generated/devin/skills/devrites-lib/reference/standards/afk-hitl.md +8 -7
  339. package/pack/generated/devin/skills/devrites-lib/reference/standards/agents.md +1 -1
  340. package/pack/generated/devin/skills/devrites-lib/reference/standards/ci-cd.md +2 -1
  341. package/pack/generated/devin/skills/devrites-lib/reference/standards/code-review.md +1 -1
  342. package/pack/generated/devin/skills/devrites-lib/reference/standards/core.md +1 -1
  343. package/pack/generated/devin/skills/devrites-lib/reference/standards/data-integrity.md +4 -0
  344. package/pack/generated/devin/skills/devrites-lib/reference/standards/developer-experience.md +5 -0
  345. package/pack/generated/devin/skills/devrites-lib/reference/standards/loop-operations.md +3 -0
  346. package/pack/generated/devin/skills/devrites-lib/reference/standards/performance.md +2 -0
  347. package/pack/generated/devin/skills/devrites-lib/reference/standards/skill-authoring.md +13 -1
  348. package/pack/generated/devin/skills/devrites-lib/reference/standards/testing.md +13 -0
  349. package/pack/generated/devin/skills/devrites-lib/reference/workspace-artifact-schema.md +11 -7
  350. package/pack/generated/devin/skills/devrites-prose-craft/SKILL.md +1 -1
  351. package/pack/generated/devin/skills/devrites-source-driven/SKILL.md +1 -1
  352. package/pack/generated/devin/skills/devrites-ux-shape/SKILL.md +1 -1
  353. package/pack/generated/devin/skills/overhaul/SKILL.md +15 -15
  354. package/pack/generated/devin/skills/overhaul/references/audit-domains.md +2 -2
  355. package/pack/generated/devin/skills/overhaul/references/orchestration.md +11 -7
  356. package/pack/generated/devin/skills/overhaul/references/records.md +8 -3
  357. package/pack/generated/devin/skills/rite/SKILL.md +4 -3
  358. package/pack/generated/devin/skills/rite/reference/menu.md +6 -5
  359. package/pack/generated/devin/skills/rite-adopt/SKILL.md +4 -3
  360. package/pack/generated/devin/skills/rite-autocomplete/SKILL.md +8 -7
  361. package/pack/generated/devin/skills/rite-autocomplete/reference/decision-policy.md +1 -1
  362. package/pack/generated/devin/skills/rite-autocomplete/reference/loop.md +2 -1
  363. package/pack/generated/devin/skills/rite-autocomplete/reference/stop-conditions.md +3 -2
  364. package/pack/generated/devin/skills/rite-build/SKILL.md +2 -2
  365. package/pack/generated/devin/skills/rite-build/reference/afk-discipline.md +3 -1
  366. package/pack/generated/devin/skills/rite-build/reference/checkpoint-protocol.md +2 -2
  367. package/pack/generated/devin/skills/rite-build/reference/output.md +1 -1
  368. package/pack/generated/devin/skills/rite-build/reference/parallel-batch.md +1 -1
  369. package/pack/generated/devin/skills/rite-build/reference/phase-contract.md +2 -0
  370. package/pack/generated/devin/skills/rite-build/reference/wright-dispatch.md +20 -1
  371. package/pack/generated/devin/skills/rite-clarify/SKILL.md +1 -1
  372. package/pack/generated/devin/skills/rite-converge/SKILL.md +5 -4
  373. package/pack/generated/devin/skills/rite-customize/SKILL.md +1 -1
  374. package/pack/generated/devin/skills/rite-define/SKILL.md +4 -3
  375. package/pack/generated/devin/skills/rite-doctor/SKILL.md +12 -6
  376. package/pack/generated/devin/skills/rite-dogfood/SKILL.md +2 -2
  377. package/pack/generated/devin/skills/rite-explain/SKILL.md +3 -3
  378. package/pack/generated/devin/skills/rite-explain/reference/intake.md +1 -1
  379. package/pack/generated/devin/skills/rite-fast/SKILL.md +8 -6
  380. package/pack/generated/devin/skills/rite-frame/SKILL.md +1 -1
  381. package/pack/generated/devin/skills/rite-handoff/SKILL.md +4 -3
  382. package/pack/generated/devin/skills/rite-learn/SKILL.md +2 -2
  383. package/pack/generated/devin/skills/rite-plan/SKILL.md +1 -1
  384. package/pack/generated/devin/skills/rite-plan/reference/replan-and-repair.md +2 -0
  385. package/pack/generated/devin/skills/rite-plan/reference/slicing.md +3 -1
  386. package/pack/generated/devin/skills/rite-polish/SKILL.md +2 -2
  387. package/pack/generated/devin/skills/rite-pov/SKILL.md +1 -1
  388. package/pack/generated/devin/skills/rite-pr-feedback/SKILL.md +5 -4
  389. package/pack/generated/devin/skills/rite-pressure-test/SKILL.md +7 -5
  390. package/pack/generated/devin/skills/rite-prototype/SKILL.md +1 -1
  391. package/pack/generated/devin/skills/rite-prove/SKILL.md +1 -1
  392. package/pack/generated/devin/skills/rite-quick/SKILL.md +11 -6
  393. package/pack/generated/devin/skills/rite-resolve/SKILL.md +4 -4
  394. package/pack/generated/devin/skills/rite-resolve/reference/answer-protocol.md +4 -5
  395. package/pack/generated/devin/skills/rite-review/SKILL.md +3 -2
  396. package/pack/generated/devin/skills/rite-seal/SKILL.md +4 -4
  397. package/pack/generated/devin/skills/rite-seal/reference/go-no-go.md +2 -0
  398. package/pack/generated/devin/skills/rite-seal/reference/seal-template.md +5 -2
  399. package/pack/generated/devin/skills/rite-ship/SKILL.md +1 -1
  400. package/pack/generated/devin/skills/rite-ship/reference/close-out.md +3 -2
  401. package/pack/generated/devin/skills/rite-spec/SKILL.md +5 -2
  402. package/pack/generated/devin/skills/rite-spec/reference/investigation.md +1 -1
  403. package/pack/generated/devin/skills/rite-status/SKILL.md +1 -1
  404. package/pack/generated/devin/skills/rite-temper/SKILL.md +3 -3
  405. package/pack/generated/devin/skills/rite-temper/reference/scope-modes.md +1 -1
  406. package/pack/generated/devin/skills/rite-temper/reference/significance.md +3 -1
  407. package/pack/generated/devin/skills/rite-upgrade/SKILL.md +4 -2
  408. package/pack/generated/devin/skills/rite-vet/SKILL.md +4 -3
  409. package/pack/generated/devin/skills/rite-vet/reference/artifacts.md +1 -1
  410. package/pack/generated/devin/skills/rite-vet/reference/review-axes.md +2 -2
  411. package/pack/generated/devin/skills/rite-watch-pr/SKILL.md +1 -1
  412. package/pack/generated/devin/skills/rite-zoom-out/SKILL.md +1 -1
  413. package/pack/generated/omp/agents/devrites-code-reviewer.md +7 -7
  414. package/pack/generated/omp/agents/devrites-devex-reviewer.md +6 -1
  415. package/pack/generated/omp/agents/devrites-evidence-scout.md +4 -0
  416. package/pack/generated/omp/agents/devrites-frontend-reviewer.md +1 -1
  417. package/pack/generated/omp/agents/devrites-plan-drafter.md +3 -3
  418. package/pack/generated/omp/agents/devrites-plan-reviewer.md +5 -2
  419. package/pack/generated/omp/agents/devrites-proof-runner.md +2 -2
  420. package/pack/generated/omp/agents/devrites-security-auditor.md +1 -1
  421. package/pack/generated/omp/agents/devrites-simplifier-reviewer.md +1 -1
  422. package/pack/generated/omp/agents/devrites-slice-wright.md +8 -5
  423. package/pack/generated/omp/agents/devrites-test-analyst.md +5 -5
  424. package/pack/generated/omp/agents/devrites-upgrade-planner.md +1 -1
  425. package/pack/generated/omp/agents/fast-builder.md +3 -3
  426. package/pack/generated/omp/agents/fast-critic.md +3 -3
  427. package/pack/generated/omp/agents/overhaul-backend-engineer.md +2 -0
  428. package/pack/generated/omp/agents/overhaul-boundary.md +2 -0
  429. package/pack/generated/omp/agents/overhaul-craft.md +2 -0
  430. package/pack/generated/omp/agents/overhaul-frontend-engineer.md +2 -0
  431. package/pack/generated/omp/agents/overhaul-implementer.md +2 -0
  432. package/pack/generated/omp/agents/overhaul-recon.md +2 -0
  433. package/pack/generated/omp/agents/overhaul-specialist.md +2 -0
  434. package/pack/generated/omp/agents/overhaul-verifier.md +2 -0
  435. package/pack/generated/omp/commands/rite-resolve.md +1 -1
  436. package/pack/generated/omp/skills/devrites-api-interface/SKILL.md +4 -4
  437. package/pack/generated/omp/skills/devrites-audit/SKILL.md +5 -5
  438. package/pack/generated/omp/skills/devrites-browser-proof/SKILL.md +5 -5
  439. package/pack/generated/omp/skills/devrites-browser-proof/reference/browser-performance.md +1 -1
  440. package/pack/generated/omp/skills/devrites-browser-proof/reference/visual-verdict.md +1 -1
  441. package/pack/generated/omp/skills/devrites-debug-recovery/SKILL.md +7 -6
  442. package/pack/generated/omp/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +1 -1
  443. package/pack/generated/omp/skills/devrites-doubt/SKILL.md +6 -6
  444. package/pack/generated/omp/skills/devrites-frontend-craft/SKILL.md +3 -3
  445. package/pack/generated/omp/skills/devrites-frontend-craft/reference/craft.md +1 -1
  446. package/pack/generated/omp/skills/devrites-frontend-craft/reference/design-references.md +4 -4
  447. package/pack/generated/omp/skills/devrites-frontend-craft/reference/fullstack.md +1 -1
  448. package/pack/generated/omp/skills/devrites-frontend-craft/reference/quality-standards.md +8 -8
  449. package/pack/generated/omp/skills/devrites-frontend-craft/reference/reuse-first.md +2 -2
  450. package/pack/generated/omp/skills/devrites-frontend-craft/reference/shape.md +2 -2
  451. package/pack/generated/omp/skills/devrites-interview/SKILL.md +3 -3
  452. package/pack/generated/omp/skills/devrites-lib/reference/intent-map.md +4 -4
  453. package/pack/generated/omp/skills/devrites-lib/reference/parallel-dispatch.md +8 -7
  454. package/pack/generated/omp/skills/devrites-lib/reference/standards/afk-hitl.md +13 -12
  455. package/pack/generated/omp/skills/devrites-lib/reference/standards/agents.md +6 -6
  456. package/pack/generated/omp/skills/devrites-lib/reference/standards/browser-proof-checklist.md +2 -2
  457. package/pack/generated/omp/skills/devrites-lib/reference/standards/ci-cd.md +2 -1
  458. package/pack/generated/omp/skills/devrites-lib/reference/standards/code-review.md +3 -3
  459. package/pack/generated/omp/skills/devrites-lib/reference/standards/coding-style.md +1 -1
  460. package/pack/generated/omp/skills/devrites-lib/reference/standards/context-hygiene.md +2 -2
  461. package/pack/generated/omp/skills/devrites-lib/reference/standards/core.md +3 -3
  462. package/pack/generated/omp/skills/devrites-lib/reference/standards/data-integrity.md +4 -0
  463. package/pack/generated/omp/skills/devrites-lib/reference/standards/debug-recovery.md +1 -1
  464. package/pack/generated/omp/skills/devrites-lib/reference/standards/definition-of-done.md +1 -1
  465. package/pack/generated/omp/skills/devrites-lib/reference/standards/developer-experience.md +8 -3
  466. package/pack/generated/omp/skills/devrites-lib/reference/standards/glossary.md +3 -3
  467. package/pack/generated/omp/skills/devrites-lib/reference/standards/loop-operations.md +3 -0
  468. package/pack/generated/omp/skills/devrites-lib/reference/standards/performance.md +3 -1
  469. package/pack/generated/omp/skills/devrites-lib/reference/standards/prose-style.md +4 -4
  470. package/pack/generated/omp/skills/devrites-lib/reference/standards/release/ship-checklist.md +1 -1
  471. package/pack/generated/omp/skills/devrites-lib/reference/standards/review/README.md +1 -1
  472. package/pack/generated/omp/skills/devrites-lib/reference/standards/review/ci-workflows.md +1 -1
  473. package/pack/generated/omp/skills/devrites-lib/reference/standards/review/react.md +1 -1
  474. package/pack/generated/omp/skills/devrites-lib/reference/standards/review/stack-profile.md +5 -5
  475. package/pack/generated/omp/skills/devrites-lib/reference/standards/skill-authoring.md +15 -3
  476. package/pack/generated/omp/skills/devrites-lib/reference/standards/spec-grammar.md +3 -3
  477. package/pack/generated/omp/skills/devrites-lib/reference/standards/testing.md +14 -1
  478. package/pack/generated/omp/skills/devrites-lib/reference/standards/tooling.md +1 -1
  479. package/pack/generated/omp/skills/devrites-lib/reference/standards/verification-methods.md +1 -1
  480. package/pack/generated/omp/skills/devrites-lib/reference/visual-playbooks/index.md +2 -2
  481. package/pack/generated/omp/skills/devrites-lib/reference/workspace-artifact-schema.md +12 -8
  482. package/pack/generated/omp/skills/devrites-prose-craft/SKILL.md +4 -4
  483. package/pack/generated/omp/skills/devrites-prose-craft/reference/examples.md +1 -1
  484. package/pack/generated/omp/skills/devrites-source-driven/SKILL.md +3 -3
  485. package/pack/generated/omp/skills/devrites-ux-shape/SKILL.md +10 -10
  486. package/pack/generated/omp/skills/devrites-ux-shape/reference/brief-template.md +3 -3
  487. package/pack/generated/omp/skills/devrites-ux-shape/reference/visual-direction-probe.md +1 -1
  488. package/pack/generated/omp/skills/overhaul/references/orchestration.md +6 -2
  489. package/pack/generated/omp/skills/overhaul/references/records.md +8 -3
  490. package/pack/generated/omp/skills/rite/SKILL.md +8 -7
  491. package/pack/generated/omp/skills/rite/reference/menu.md +6 -5
  492. package/pack/generated/omp/skills/rite-adopt/SKILL.md +6 -5
  493. package/pack/generated/omp/skills/rite-adopt/reference/anti-patterns.md +1 -1
  494. package/pack/generated/omp/skills/rite-autocomplete/SKILL.md +11 -10
  495. package/pack/generated/omp/skills/rite-autocomplete/reference/decision-policy.md +1 -1
  496. package/pack/generated/omp/skills/rite-autocomplete/reference/loop.md +4 -3
  497. package/pack/generated/omp/skills/rite-autocomplete/reference/stop-conditions.md +2 -1
  498. package/pack/generated/omp/skills/rite-build/SKILL.md +7 -7
  499. package/pack/generated/omp/skills/rite-build/reference/afk-discipline.md +4 -2
  500. package/pack/generated/omp/skills/rite-build/reference/anti-patterns.md +1 -1
  501. package/pack/generated/omp/skills/rite-build/reference/checkpoint-protocol.md +2 -2
  502. package/pack/generated/omp/skills/rite-build/reference/checkpoint.md +2 -2
  503. package/pack/generated/omp/skills/rite-build/reference/frontend-trigger.md +1 -1
  504. package/pack/generated/omp/skills/rite-build/reference/output.md +1 -1
  505. package/pack/generated/omp/skills/rite-build/reference/parallel-batch.md +4 -4
  506. package/pack/generated/omp/skills/rite-build/reference/phase-contract.md +8 -6
  507. package/pack/generated/omp/skills/rite-build/reference/tdd.md +1 -1
  508. package/pack/generated/omp/skills/rite-build/reference/wright-dispatch.md +27 -8
  509. package/pack/generated/omp/skills/rite-clarify/SKILL.md +4 -4
  510. package/pack/generated/omp/skills/rite-clarify/reference/anti-patterns.md +1 -1
  511. package/pack/generated/omp/skills/rite-converge/SKILL.md +16 -15
  512. package/pack/generated/omp/skills/rite-converge/reference/convergence-assessment.md +4 -4
  513. package/pack/generated/omp/skills/rite-customize/SKILL.md +2 -2
  514. package/pack/generated/omp/skills/rite-define/SKILL.md +25 -24
  515. package/pack/generated/omp/skills/rite-define/reference/anti-patterns.md +2 -2
  516. package/pack/generated/omp/skills/rite-define/reference/gates.md +2 -2
  517. package/pack/generated/omp/skills/rite-doctor/SKILL.md +12 -6
  518. package/pack/generated/omp/skills/rite-dogfood/SKILL.md +5 -5
  519. package/pack/generated/omp/skills/rite-explain/SKILL.md +7 -7
  520. package/pack/generated/omp/skills/rite-explain/reference/intake.md +1 -1
  521. package/pack/generated/omp/skills/rite-fast/SKILL.md +12 -10
  522. package/pack/generated/omp/skills/rite-fast/reference/artifacts.md +1 -1
  523. package/pack/generated/omp/skills/rite-frame/SKILL.md +6 -6
  524. package/pack/generated/omp/skills/rite-frame/reference/failure-modes.md +4 -4
  525. package/pack/generated/omp/skills/rite-handoff/SKILL.md +7 -6
  526. package/pack/generated/omp/skills/rite-learn/SKILL.md +6 -6
  527. package/pack/generated/omp/skills/rite-plan/SKILL.md +8 -8
  528. package/pack/generated/omp/skills/rite-plan/reference/anti-patterns.md +1 -1
  529. package/pack/generated/omp/skills/rite-plan/reference/replan-and-repair.md +3 -1
  530. package/pack/generated/omp/skills/rite-plan/reference/slicing.md +6 -4
  531. package/pack/generated/omp/skills/rite-plan/reference/task-breakdown.md +1 -1
  532. package/pack/generated/omp/skills/rite-polish/SKILL.md +6 -6
  533. package/pack/generated/omp/skills/rite-polish/reference/anti-ai-slop.md +9 -9
  534. package/pack/generated/omp/skills/rite-polish/reference/anti-patterns.md +1 -1
  535. package/pack/generated/omp/skills/rite-polish/reference/backend-polish.md +2 -2
  536. package/pack/generated/omp/skills/rite-polish/reference/browser-polish-evidence.md +1 -1
  537. package/pack/generated/omp/skills/rite-polish/reference/code.md +8 -8
  538. package/pack/generated/omp/skills/rite-polish/reference/design-memory.md +3 -3
  539. package/pack/generated/omp/skills/rite-polish/reference/design-system-discovery.md +1 -1
  540. package/pack/generated/omp/skills/rite-polish/reference/harden-checklist.md +1 -1
  541. package/pack/generated/omp/skills/rite-polish/reference/ledger.md +3 -3
  542. package/pack/generated/omp/skills/rite-polish/reference/ui.md +1 -1
  543. package/pack/generated/omp/skills/rite-pov/SKILL.md +2 -2
  544. package/pack/generated/omp/skills/rite-pr-feedback/SKILL.md +6 -5
  545. package/pack/generated/omp/skills/rite-pressure-test/SKILL.md +9 -7
  546. package/pack/generated/omp/skills/rite-prototype/SKILL.md +1 -1
  547. package/pack/generated/omp/skills/rite-prove/SKILL.md +13 -13
  548. package/pack/generated/omp/skills/rite-prove/reference/acceptance-proof.md +7 -7
  549. package/pack/generated/omp/skills/rite-prove/reference/anti-patterns.md +1 -1
  550. package/pack/generated/omp/skills/rite-prove/reference/browser-proof.md +3 -3
  551. package/pack/generated/omp/skills/rite-prove/reference/failure-triage.md +2 -2
  552. package/pack/generated/omp/skills/rite-quick/SKILL.md +19 -14
  553. package/pack/generated/omp/skills/rite-resolve/SKILL.md +6 -6
  554. package/pack/generated/omp/skills/rite-resolve/reference/answer-protocol.md +4 -5
  555. package/pack/generated/omp/skills/rite-review/SKILL.md +23 -22
  556. package/pack/generated/omp/skills/rite-review/reference/anti-patterns.md +1 -1
  557. package/pack/generated/omp/skills/rite-review/reference/cognitive-load.md +2 -2
  558. package/pack/generated/omp/skills/rite-review/reference/nielsen-heuristics.md +1 -1
  559. package/pack/generated/omp/skills/rite-review/reference/performance-checklist.md +1 -1
  560. package/pack/generated/omp/skills/rite-review/reference/performance-review.md +1 -1
  561. package/pack/generated/omp/skills/rite-review/reference/security-review.md +2 -2
  562. package/pack/generated/omp/skills/rite-seal/SKILL.md +11 -11
  563. package/pack/generated/omp/skills/rite-seal/reference/anti-patterns.md +1 -1
  564. package/pack/generated/omp/skills/rite-seal/reference/final-evidence.md +3 -3
  565. package/pack/generated/omp/skills/rite-seal/reference/go-no-go.md +3 -1
  566. package/pack/generated/omp/skills/rite-seal/reference/output.md +1 -1
  567. package/pack/generated/omp/skills/rite-seal/reference/phase-contract.md +4 -4
  568. package/pack/generated/omp/skills/rite-seal/reference/seal-template.md +5 -2
  569. package/pack/generated/omp/skills/rite-ship/SKILL.md +7 -7
  570. package/pack/generated/omp/skills/rite-ship/reference/anti-patterns.md +1 -1
  571. package/pack/generated/omp/skills/rite-ship/reference/close-out.md +5 -4
  572. package/pack/generated/omp/skills/rite-ship/reference/git-ship.md +2 -2
  573. package/pack/generated/omp/skills/rite-ship/reference/rollout.md +3 -3
  574. package/pack/generated/omp/skills/rite-spec/SKILL.md +17 -14
  575. package/pack/generated/omp/skills/rite-spec/reference/anti-patterns.md +1 -1
  576. package/pack/generated/omp/skills/rite-spec/reference/investigation.md +3 -3
  577. package/pack/generated/omp/skills/rite-spec/reference/question-protocol.md +1 -1
  578. package/pack/generated/omp/skills/rite-spec/reference/spec-template.md +2 -2
  579. package/pack/generated/omp/skills/rite-spec/reference/state-workspace.md +8 -8
  580. package/pack/generated/omp/skills/rite-status/SKILL.md +2 -2
  581. package/pack/generated/omp/skills/rite-temper/SKILL.md +13 -13
  582. package/pack/generated/omp/skills/rite-temper/reference/anti-patterns.md +2 -2
  583. package/pack/generated/omp/skills/rite-temper/reference/review-dimensions.md +3 -3
  584. package/pack/generated/omp/skills/rite-temper/reference/scope-modes.md +3 -3
  585. package/pack/generated/omp/skills/rite-temper/reference/significance.md +4 -2
  586. package/pack/generated/omp/skills/rite-upgrade/SKILL.md +7 -5
  587. package/pack/generated/omp/skills/rite-vet/SKILL.md +14 -13
  588. package/pack/generated/omp/skills/rite-vet/reference/anti-patterns.md +2 -2
  589. package/pack/generated/omp/skills/rite-vet/reference/artifacts.md +3 -3
  590. package/pack/generated/omp/skills/rite-vet/reference/depth.md +3 -3
  591. package/pack/generated/omp/skills/rite-vet/reference/review-axes.md +5 -5
  592. package/pack/generated/omp/skills/rite-watch-pr/SKILL.md +2 -2
  593. package/pack/generated/omp/skills/rite-zoom-out/SKILL.md +1 -1
  594. package/pack/generated/pi/agents/devrites-devex-reviewer.md +5 -0
  595. package/pack/generated/pi/agents/devrites-evidence-scout.md +4 -0
  596. package/pack/generated/pi/agents/devrites-plan-reviewer.md +4 -1
  597. package/pack/generated/pi/agents/devrites-slice-wright.md +4 -1
  598. package/pack/generated/pi/agents/overhaul-backend-engineer.md +2 -0
  599. package/pack/generated/pi/agents/overhaul-boundary.md +2 -0
  600. package/pack/generated/pi/agents/overhaul-craft.md +2 -0
  601. package/pack/generated/pi/agents/overhaul-frontend-engineer.md +2 -0
  602. package/pack/generated/pi/agents/overhaul-implementer.md +2 -0
  603. package/pack/generated/pi/agents/overhaul-recon.md +2 -0
  604. package/pack/generated/pi/agents/overhaul-specialist.md +2 -0
  605. package/pack/generated/pi/agents/overhaul-verifier.md +2 -0
  606. package/pack/generated/pi/prompts/rite-resolve.md +1 -1
  607. package/pack/generated/pi/skills/devrites-api-interface/SKILL.md +1 -1
  608. package/pack/generated/pi/skills/devrites-audit/SKILL.md +1 -1
  609. package/pack/generated/pi/skills/devrites-browser-proof/SKILL.md +1 -1
  610. package/pack/generated/pi/skills/devrites-debug-recovery/SKILL.md +3 -2
  611. package/pack/generated/pi/skills/devrites-doubt/SKILL.md +1 -1
  612. package/pack/generated/pi/skills/devrites-frontend-craft/SKILL.md +1 -1
  613. package/pack/generated/pi/skills/devrites-interview/SKILL.md +1 -1
  614. package/pack/generated/pi/skills/devrites-lib/reference/intent-map.md +3 -3
  615. package/pack/generated/pi/skills/devrites-lib/reference/parallel-dispatch.md +6 -5
  616. package/pack/generated/pi/skills/devrites-lib/reference/standards/afk-hitl.md +5 -4
  617. package/pack/generated/pi/skills/devrites-lib/reference/standards/agents.md +1 -1
  618. package/pack/generated/pi/skills/devrites-lib/reference/standards/ci-cd.md +2 -1
  619. package/pack/generated/pi/skills/devrites-lib/reference/standards/code-review.md +1 -1
  620. package/pack/generated/pi/skills/devrites-lib/reference/standards/core.md +1 -1
  621. package/pack/generated/pi/skills/devrites-lib/reference/standards/data-integrity.md +4 -0
  622. package/pack/generated/pi/skills/devrites-lib/reference/standards/developer-experience.md +5 -0
  623. package/pack/generated/pi/skills/devrites-lib/reference/standards/loop-operations.md +3 -0
  624. package/pack/generated/pi/skills/devrites-lib/reference/standards/performance.md +2 -0
  625. package/pack/generated/pi/skills/devrites-lib/reference/standards/skill-authoring.md +13 -1
  626. package/pack/generated/pi/skills/devrites-lib/reference/standards/testing.md +13 -0
  627. package/pack/generated/pi/skills/devrites-lib/reference/workspace-artifact-schema.md +11 -7
  628. package/pack/generated/pi/skills/devrites-prose-craft/SKILL.md +1 -1
  629. package/pack/generated/pi/skills/devrites-source-driven/SKILL.md +1 -1
  630. package/pack/generated/pi/skills/devrites-ux-shape/SKILL.md +1 -1
  631. package/pack/generated/pi/skills/overhaul/SKILL.md +15 -15
  632. package/pack/generated/pi/skills/overhaul/references/audit-domains.md +2 -2
  633. package/pack/generated/pi/skills/overhaul/references/orchestration.md +11 -7
  634. package/pack/generated/pi/skills/overhaul/references/records.md +8 -3
  635. package/pack/generated/pi/skills/rite/SKILL.md +4 -3
  636. package/pack/generated/pi/skills/rite/reference/menu.md +6 -5
  637. package/pack/generated/pi/skills/rite-adopt/SKILL.md +4 -3
  638. package/pack/generated/pi/skills/rite-autocomplete/SKILL.md +7 -6
  639. package/pack/generated/pi/skills/rite-autocomplete/reference/loop.md +2 -1
  640. package/pack/generated/pi/skills/rite-autocomplete/reference/stop-conditions.md +2 -1
  641. package/pack/generated/pi/skills/rite-build/SKILL.md +2 -2
  642. package/pack/generated/pi/skills/rite-build/reference/afk-discipline.md +3 -1
  643. package/pack/generated/pi/skills/rite-build/reference/output.md +1 -1
  644. package/pack/generated/pi/skills/rite-build/reference/parallel-batch.md +1 -1
  645. package/pack/generated/pi/skills/rite-build/reference/phase-contract.md +2 -0
  646. package/pack/generated/pi/skills/rite-build/reference/wright-dispatch.md +20 -1
  647. package/pack/generated/pi/skills/rite-clarify/SKILL.md +1 -1
  648. package/pack/generated/pi/skills/rite-converge/SKILL.md +5 -4
  649. package/pack/generated/pi/skills/rite-customize/SKILL.md +1 -1
  650. package/pack/generated/pi/skills/rite-define/SKILL.md +4 -3
  651. package/pack/generated/pi/skills/rite-doctor/SKILL.md +12 -6
  652. package/pack/generated/pi/skills/rite-dogfood/SKILL.md +2 -2
  653. package/pack/generated/pi/skills/rite-explain/SKILL.md +1 -1
  654. package/pack/generated/pi/skills/rite-fast/SKILL.md +8 -6
  655. package/pack/generated/pi/skills/rite-frame/SKILL.md +1 -1
  656. package/pack/generated/pi/skills/rite-handoff/SKILL.md +4 -3
  657. package/pack/generated/pi/skills/rite-learn/SKILL.md +2 -2
  658. package/pack/generated/pi/skills/rite-plan/SKILL.md +1 -1
  659. package/pack/generated/pi/skills/rite-plan/reference/replan-and-repair.md +2 -0
  660. package/pack/generated/pi/skills/rite-plan/reference/slicing.md +3 -1
  661. package/pack/generated/pi/skills/rite-polish/SKILL.md +2 -2
  662. package/pack/generated/pi/skills/rite-pov/SKILL.md +1 -1
  663. package/pack/generated/pi/skills/rite-pr-feedback/SKILL.md +5 -4
  664. package/pack/generated/pi/skills/rite-pressure-test/SKILL.md +7 -5
  665. package/pack/generated/pi/skills/rite-prototype/SKILL.md +1 -1
  666. package/pack/generated/pi/skills/rite-prove/SKILL.md +1 -1
  667. package/pack/generated/pi/skills/rite-quick/SKILL.md +11 -6
  668. package/pack/generated/pi/skills/rite-resolve/SKILL.md +3 -3
  669. package/pack/generated/pi/skills/rite-resolve/reference/answer-protocol.md +4 -5
  670. package/pack/generated/pi/skills/rite-review/SKILL.md +3 -2
  671. package/pack/generated/pi/skills/rite-seal/SKILL.md +4 -4
  672. package/pack/generated/pi/skills/rite-seal/reference/go-no-go.md +2 -0
  673. package/pack/generated/pi/skills/rite-seal/reference/seal-template.md +5 -2
  674. package/pack/generated/pi/skills/rite-ship/SKILL.md +1 -1
  675. package/pack/generated/pi/skills/rite-ship/reference/close-out.md +3 -2
  676. package/pack/generated/pi/skills/rite-spec/SKILL.md +5 -2
  677. package/pack/generated/pi/skills/rite-status/SKILL.md +1 -1
  678. package/pack/generated/pi/skills/rite-temper/SKILL.md +2 -2
  679. package/pack/generated/pi/skills/rite-temper/reference/significance.md +2 -0
  680. package/pack/generated/pi/skills/rite-upgrade/SKILL.md +4 -2
  681. package/pack/generated/pi/skills/rite-vet/SKILL.md +4 -3
  682. package/pack/generated/pi/skills/rite-vet/reference/artifacts.md +1 -1
  683. package/pack/generated/pi/skills/rite-watch-pr/SKILL.md +1 -1
  684. package/pack/generated/pi/skills/rite-zoom-out/SKILL.md +1 -1
  685. package/package.json +3 -2
  686. package/scripts/build-host-artifacts.sh +13 -0
  687. package/scripts/codex-generate.sh +5 -1
  688. package/scripts/devin-generate.sh +4 -3
  689. package/scripts/install-lib.sh +5 -0
  690. package/scripts/omp-generate.sh +23 -1
  691. package/scripts/pi-generate.sh +2 -2
  692. package/engine/cmd/releasepack/main_test.go +0 -239
  693. package/engine/harnessmatrix_test.go +0 -46
  694. package/engine/help_test.go +0 -241
  695. package/engine/internal/acceptance/acceptance_test.go +0 -946
  696. package/engine/internal/devritespaths/paths_test.go +0 -128
  697. package/engine/internal/fsutil/copy_test.go +0 -154
  698. package/engine/internal/gate/gate_test.go +0 -865
  699. package/engine/internal/gate/readiness_binding_test.go +0 -443
  700. package/engine/internal/gitenv/env_test.go +0 -48
  701. package/engine/internal/hostpack/hostpack_test.go +0 -269
  702. package/engine/internal/install/install_test.go +0 -1741
  703. package/engine/internal/install/workspace_advisory_test.go +0 -54
  704. package/engine/internal/lib/candidate_test.go +0 -506
  705. package/engine/internal/lib/claims_test.go +0 -267
  706. package/engine/internal/lib/closeout_test.go +0 -266
  707. package/engine/internal/lib/context_next_test.go +0 -860
  708. package/engine/internal/lib/cursor_compat_test.go +0 -65
  709. package/engine/internal/lib/detect_test.go +0 -118
  710. package/engine/internal/lib/drift_test.go +0 -135
  711. package/engine/internal/lib/dup_test.go +0 -666
  712. package/engine/internal/lib/environment_report_test.go +0 -54
  713. package/engine/internal/lib/evidencefresh_test.go +0 -120
  714. package/engine/internal/lib/handoff_test.go +0 -83
  715. package/engine/internal/lib/manifest_union_test.go +0 -251
  716. package/engine/internal/lib/metrics_test.go +0 -28
  717. package/engine/internal/lib/migrate_test.go +0 -213
  718. package/engine/internal/lib/observe_budgets_test.go +0 -396
  719. package/engine/internal/lib/open_visual_test.go +0 -291
  720. package/engine/internal/lib/regression_test.go +0 -282
  721. package/engine/internal/lib/resolve_remediation_test.go +0 -192
  722. package/engine/internal/lib/secretscan_test.go +0 -556
  723. package/engine/internal/lib/slicecheck_test.go +0 -170
  724. package/engine/internal/lib/taskgraph_test.go +0 -353
  725. package/engine/internal/lib/triggers_test.go +0 -23
  726. package/engine/internal/lib/util_test.go +0 -148
  727. package/engine/internal/lib/visual_outline_test.go +0 -189
  728. package/engine/internal/lib/windows_test.go +0 -420
  729. package/engine/internal/lib/workspace_read_test.go +0 -102
  730. package/engine/internal/markdowntext/markdowntext_fuzz_test.go +0 -36
  731. package/engine/internal/markdowntext/markdowntext_test.go +0 -58
  732. package/engine/internal/markdowntext/testdata/structural.json +0 -277
  733. package/engine/internal/notes/notes_test.go +0 -545
  734. package/engine/internal/overhaul/admit/admit_test.go +0 -204
  735. package/engine/internal/overhaul/admit/packet_test.go +0 -223
  736. package/engine/internal/overhaul/bench/run_test.go +0 -316
  737. package/engine/internal/overhaul/ovio/ovio_test.go +0 -75
  738. package/engine/internal/overhaul/packet/packet_test.go +0 -263
  739. package/engine/internal/overhaul/records/init_test.go +0 -96
  740. package/engine/internal/overhaul/records/records_test.go +0 -696
  741. package/engine/internal/overhaul/records/run_test.go +0 -77
  742. package/engine/internal/overhaul/render/run_test.go +0 -928
  743. package/engine/internal/overhaul/score/run_test.go +0 -636
  744. package/engine/internal/overhaul/snapshot/run_test.go +0 -718
  745. package/engine/internal/parallel/cli_test.go +0 -91
  746. package/engine/internal/parallel/ops_test.go +0 -939
  747. package/engine/internal/parallel/parallel_test.go +0 -645
  748. package/engine/internal/parallel/pathdisjoint_fuzz_test.go +0 -43
  749. package/engine/internal/parallel/pathdisjoint_test.go +0 -193
  750. package/engine/internal/parallel/select_test.go +0 -95
  751. package/engine/internal/parallel/testdata/fuzz/FuzzPathDisjoint/a449b81b4711b7b4 +0 -3
  752. package/engine/internal/reason/reason_test.go +0 -37
  753. package/engine/internal/release/release_test.go +0 -181
  754. package/engine/internal/rootfacts/facts_test.go +0 -364
  755. package/engine/internal/safepath/safepath_fuzz_test.go +0 -21
  756. package/engine/internal/safepath/safepath_test.go +0 -69
  757. package/engine/internal/safepath/safepath_windows_test.go +0 -26
  758. package/engine/internal/state/acceptance_test.go +0 -57
  759. package/engine/internal/state/budgets_test.go +0 -135
  760. package/engine/internal/state/cmd/workflowmanifest/main_test.go +0 -96
  761. package/engine/internal/state/concurrency_test.go +0 -184
  762. package/engine/internal/state/cursor_fuzz_test.go +0 -80
  763. package/engine/internal/state/cursor_test.go +0 -276
  764. package/engine/internal/state/observation_test.go +0 -961
  765. package/engine/internal/state/observation_unix_test.go +0 -68
  766. package/engine/internal/state/state_test.go +0 -986
  767. package/engine/internal/state/taskgraph_fuzz_test.go +0 -38
  768. package/engine/internal/state/taskgraph_test.go +0 -43
  769. package/engine/internal/state/testdata/fuzz/FuzzCursorRoundTrip/114b28f68c1fa4db +0 -4
  770. package/engine/internal/state/testdata/fuzz/FuzzCursorRoundTrip/378a0f2218e812ea +0 -4
  771. package/engine/internal/state/testdata/fuzz/FuzzCursorRoundTrip/39eaa26fcb481e3c +0 -4
  772. package/engine/internal/state/testdata/fuzz/FuzzCursorRoundTrip/776ca1dc0143acf0 +0 -4
  773. package/engine/internal/state/testdata/fuzz/FuzzCursorRoundTrip/9295930c1ebb81df +0 -4
  774. package/engine/internal/state/testdata/fuzz/FuzzCursorRoundTrip/a60de309dc33be0d +0 -4
  775. package/engine/internal/state/testdata/fuzz/FuzzCursorRoundTrip/f04dc7b06ef7c99f +0 -4
  776. package/engine/internal/state/testdata/fuzz/FuzzCursorRoundTrip/f3000ac510878bd6 +0 -4
  777. package/engine/internal/state/testdata/fuzz/FuzzWorkspaceSchemaRow/a75aabb9f2a847d5 +0 -2
  778. package/engine/internal/state/workspaceschema_fuzz_test.go +0 -27
  779. package/engine/internal/state/workspaceschema_test.go +0 -101
  780. package/engine/internal/state/write_test.go +0 -136
  781. package/engine/internal/version/version_test.go +0 -29
  782. package/engine/internal/workflow/commands_test.go +0 -18
  783. package/engine/note_routing_test.go +0 -95
  784. package/engine/observation_contract_test.go +0 -175
  785. package/engine/root_routing_test.go +0 -340
@@ -1,213 +0,0 @@
1
- package lib
2
-
3
- import (
4
- "os"
5
- "path/filepath"
6
- "strings"
7
- "testing"
8
- )
9
-
10
- // seedPreV5Workspace builds a pre-v5 workspace with a bullet cursor, prose,
11
- // and no required artifacts beyond state.md.
12
- func seedPreV5Workspace(t *testing.T, phase string) (root, workspace string) {
13
- t.Helper()
14
- root = t.TempDir()
15
- workspace = filepath.Join(root, "work", "feature")
16
- if err := os.MkdirAll(workspace, 0o755); err != nil {
17
- t.Fatal(err)
18
- }
19
- body := "- Phase: " + phase + "\n- Status: running\n- Next step: continue slice S-2\n\n# Status\n\nMinting middleware landed.\n"
20
- if err := os.WriteFile(filepath.Join(workspace, "state.md"), []byte(body), 0o644); err != nil {
21
- t.Fatal(err)
22
- }
23
- return root, workspace
24
- }
25
-
26
- func TestMigrateDryRunPlansWithoutWriting(t *testing.T) {
27
- root, workspace := seedPreV5Workspace(t, "build")
28
- var stdout, stderr strings.Builder
29
- if code := Migrate(root, []string{"feature", "--dry-run"}, &stdout, &stderr); code != 0 {
30
- t.Fatalf("code=%d stderr=%q", code, stderr.String())
31
- }
32
- out := stdout.String()
33
- if !strings.Contains(out, "migrate: plan for feature") ||
34
- !strings.Contains(out, "[cursor] convert legacy cursor bullets") ||
35
- !strings.Contains(out, "[schema] record schema") ||
36
- !strings.Contains(out, "[stub] create missing spec.md") {
37
- t.Fatalf("plan incomplete:\n%s", out)
38
- }
39
- // Nothing written: state.md bytes unchanged and no stub exists.
40
- body, err := os.ReadFile(filepath.Join(workspace, "state.md"))
41
- if err != nil || !strings.HasPrefix(string(body), "- Phase: build\n") {
42
- t.Fatalf("state.md changed during dry run: %v %q", err, body)
43
- }
44
- if _, err := os.Stat(filepath.Join(workspace, "spec.md")); !os.IsNotExist(err) {
45
- t.Fatalf("stub created during dry run: %v", err)
46
- }
47
- }
48
-
49
- func TestMigrateExecutesCursorConversionAndStubs(t *testing.T) {
50
- root, workspace := seedPreV5Workspace(t, "build")
51
- var stdout, stderr strings.Builder
52
- if code := Migrate(root, []string{"feature"}, &stdout, &stderr); code != 0 {
53
- t.Fatalf("code=%d stderr=%q", code, stderr.String())
54
- }
55
- body, err := os.ReadFile(filepath.Join(workspace, "state.md"))
56
- if err != nil {
57
- t.Fatal(err)
58
- }
59
- text := string(body)
60
- if !strings.Contains(text, "| phase | build |") || !strings.Contains(text, "| status | running |") {
61
- t.Fatalf("cursor bullets not converted:\n%s", text)
62
- }
63
- if !strings.Contains(text, "| next_action | continue slice S-2 |") {
64
- t.Fatalf("next step not converted to canonical spelling:\n%s", text)
65
- }
66
- if strings.Contains(text, "- Next step:") {
67
- t.Fatalf("legacy next step bullet survived:\n%s", text)
68
- }
69
- if !strings.Contains(text, "| schema | 4 |") {
70
- t.Fatalf("schema row missing:\n%s", text)
71
- }
72
- if !strings.Contains(text, "# Status\n\nMinting middleware landed.") {
73
- t.Fatalf("prose not preserved:\n%s", text)
74
- }
75
- // Required artifacts for build exist as empty stubs.
76
- for _, name := range []string{"spec.md", "brief.md", "eng-review.md", "test-plan.md", "gates.md"} {
77
- info, err := os.Stat(filepath.Join(workspace, name))
78
- if err != nil {
79
- t.Fatalf("stub %s: %v", name, err)
80
- }
81
- if info.Size() != 0 {
82
- t.Fatalf("stub %s synthesized content", name)
83
- }
84
- }
85
- // Idempotent: a second run is a no-op.
86
- stdout.Reset()
87
- if code := Migrate(root, []string{"feature"}, &stdout, &stderr); code != 0 {
88
- t.Fatalf("second run code=%d stderr=%q", code, stderr.String())
89
- }
90
- if !strings.Contains(stdout.String(), "nothing to do") {
91
- t.Fatalf("second run should be a no-op, got %q", stdout.String())
92
- }
93
- }
94
-
95
- func TestMigrateUnknownPhaseAsksAndWritesNothing(t *testing.T) {
96
- root, workspace := seedPreV5Workspace(t, "research")
97
- var stdout, stderr strings.Builder
98
- if code := Migrate(root, []string{"feature"}, &stdout, &stderr); code != 3 {
99
- t.Fatalf("code=%d want 3", code)
100
- }
101
- if !strings.Contains(stderr.String(), "question phase:") || !strings.Contains(stderr.String(), "nothing written") {
102
- t.Fatalf("stderr=%q", stderr.String())
103
- }
104
- body, _ := os.ReadFile(filepath.Join(workspace, "state.md"))
105
- if !strings.HasPrefix(string(body), "- Phase: research\n") {
106
- t.Fatalf("state.md changed on refusal: %q", body)
107
- }
108
-
109
- // Answering the question on rerun proceeds.
110
- if code := Migrate(root, []string{"feature", "--answer", "phase=build"}, &stdout, &stderr); code != 0 {
111
- t.Fatalf("answer rerun code=%d stderr=%q", code, stderr.String())
112
- }
113
- body, _ = os.ReadFile(filepath.Join(workspace, "state.md"))
114
- if !strings.Contains(string(body), "| phase | build |") || !strings.Contains(string(body), "| schema | 4 |") {
115
- t.Fatalf("answer rerun did not migrate:\n%s", body)
116
- }
117
- }
118
-
119
- // A done workspace migrates like any other: it is fully artifacted (zero
120
- // stubs), and normalizing it unblocks `state close`, which refuses pre-v5
121
- // workspaces. A special no-op would strand done workspaces between migrate
122
- // and close.
123
- func TestMigrateDoneWorkspaceNormalizesWithoutStubs(t *testing.T) {
124
- root, workspace := seedPreV5Workspace(t, "done")
125
- var stdout, stderr strings.Builder
126
- if code := Migrate(root, []string{"feature"}, &stdout, &stderr); code != 0 {
127
- t.Fatalf("code=%d stderr=%q", code, stderr.String())
128
- }
129
- body, _ := os.ReadFile(filepath.Join(workspace, "state.md"))
130
- if !strings.Contains(string(body), "| schema | 4 |") {
131
- t.Fatalf("done workspace not normalized:\n%s", body)
132
- }
133
- if !strings.Contains(stdout.String(), "normalized to schema 4") {
134
- t.Fatalf("stdout=%q", stdout.String())
135
- }
136
- }
137
-
138
- func TestMigrateCurrentAndNewerSchemaAreRefused(t *testing.T) {
139
- root, workspace := seedPreV5Workspace(t, "build")
140
- if err := os.WriteFile(filepath.Join(workspace, "state.md"), []byte("| phase | build |\n| schema | 4 |\n"), 0o644); err != nil {
141
- t.Fatal(err)
142
- }
143
- var stdout, stderr strings.Builder
144
- if code := Migrate(root, []string{"feature"}, &stdout, &stderr); code != 0 || !strings.Contains(stdout.String(), "nothing to do") {
145
- t.Fatalf("current schema: code=%d stdout=%q", code, stdout.String())
146
- }
147
-
148
- if err := os.WriteFile(filepath.Join(workspace, "state.md"), []byte("| phase | build |\n| schema | 9 |\n"), 0o644); err != nil {
149
- t.Fatal(err)
150
- }
151
- if code := Migrate(root, []string{"feature"}, &stdout, &stderr); code != 3 || !strings.Contains(stderr.String(), "upgrade devrites") {
152
- t.Fatalf("newer schema: code=%d stderr=%q", code, stderr.String())
153
- }
154
- }
155
-
156
- // End to end through the `migrate` command path. migrate.go
157
- // calls state.ConvertCursorToTable (apply, unconditional) and state.CursorForm
158
- // (plan), so a fenced example in state.md — the phase-authority ledger — must
159
- // survive a migration byte for byte, and a migration plan must not advertise a
160
- // conversion that only fenced content would have performed.
161
-
162
- func seedLedger(t *testing.T, body string) (root, workspace string) {
163
- t.Helper()
164
- root = t.TempDir()
165
- workspace = filepath.Join(root, "work", "feature")
166
- if err := os.MkdirAll(workspace, 0o755); err != nil {
167
- t.Fatal(err)
168
- }
169
- if err := os.WriteFile(filepath.Join(workspace, "state.md"), []byte(body), 0o644); err != nil {
170
- t.Fatal(err)
171
- }
172
- return root, workspace
173
- }
174
-
175
- const ledgerBody = "# State\n\n## Recovery note\n\nThe pre-v5 ledger looked like this:\n\n~~~md\n- Phase: build\n- Status: running\n~~~\n\n## Cursor\n\n- Phase: build\n- Status: running\n"
176
-
177
- func TestMigrateLeavesFencedCursorExamplesByteIdentical(t *testing.T) {
178
- root, workspace := seedLedger(t, ledgerBody)
179
- var stdout, stderr strings.Builder
180
- if code := Migrate(root, []string{"feature"}, &stdout, &stderr); code != 0 {
181
- t.Fatalf("code=%d stdout=%q stderr=%q", code, stdout.String(), stderr.String())
182
- }
183
- body, err := os.ReadFile(filepath.Join(workspace, "state.md"))
184
- if err != nil {
185
- t.Fatal(err)
186
- }
187
- text := string(body)
188
- if got := strings.Count(text, "- Phase: build"); got != 1 {
189
- t.Fatalf("fenced example rewritten: %d surviving \"- Phase: build\" lines in\n%s", got, text)
190
- }
191
- if !strings.Contains(text, "| phase | build |") {
192
- t.Fatalf("live cursor bullet not converted to the canonical table row:\n%s", text)
193
- }
194
- fenced := "~~~md\n- Phase: build\n- Status: running\n~~~"
195
- if !strings.Contains(text, fenced) {
196
- t.Fatalf("fenced block not preserved byte for byte:\n%s", text)
197
- }
198
- }
199
-
200
- func TestMigratePlanDoesNotOfferConversionForFencedCursorsOnly(t *testing.T) {
201
- body := "# State\n\n## Recovery note\n\n~~~md\n- Phase: build\n- Status: running\n~~~\n"
202
- root, _ := seedLedger(t, body)
203
- var stdout, stderr strings.Builder
204
- if code := Migrate(root, []string{"feature", "--dry-run", "--answer", "phase=build"}, &stdout, &stderr); code != 0 {
205
- t.Fatalf("code=%d stdout=%q stderr=%q", code, stdout.String(), stderr.String())
206
- }
207
- if strings.Contains(stdout.String(), "[cursor]") {
208
- t.Fatalf("plan offers a cursor conversion for a ledger whose only legacy bullets are fenced:\n%s", stdout.String())
209
- }
210
- if !strings.Contains(stdout.String(), "[schema] record schema") {
211
- t.Fatalf("plan incomplete:\n%s", stdout.String())
212
- }
213
- }
@@ -1,396 +0,0 @@
1
- package lib
2
-
3
- import (
4
- "bytes"
5
-
6
- "encoding/json"
7
- "os"
8
- "path/filepath"
9
- "runtime"
10
- "strings"
11
- "testing"
12
-
13
- "github.com/devrites/devrites/internal/state"
14
- )
15
-
16
- const budgetTasks = `# Tasks
17
-
18
- Current checkpoint: intro text.
19
-
20
- ## SLICE-001 First
21
- Goal: one
22
- Dependencies: none
23
- depends_on: []
24
-
25
- ### Notes
26
- nested heading stays inside the slice
27
-
28
- ## SLICE-002 Second
29
- Goal: two
30
- Dependencies: SLICE-001
31
- depends_on: [SLICE-001]
32
-
33
- ## Trailing section
34
- not a slice
35
- `
36
-
37
- func writeBudgetWorkspace(t *testing.T, files map[string]string) (root, workspace string) {
38
- t.Helper()
39
- root = filepath.Join(t.TempDir(), ".devrites")
40
- workspace = filepath.Join(root, "work", "feature")
41
- if err := os.MkdirAll(workspace, 0o755); err != nil {
42
- t.Fatal(err)
43
- }
44
- for name, body := range files {
45
- if err := os.WriteFile(filepath.Join(workspace, name), []byte(body), 0o644); err != nil {
46
- t.Fatal(err)
47
- }
48
- }
49
- return root, workspace
50
- }
51
-
52
- func TestExtractTaskSliceStopsAtNextH2AndKeepsH3(t *testing.T) {
53
- block, ok := state.ExtractTaskSlice([]byte(budgetTasks), "SLICE-001")
54
- if !ok {
55
- t.Fatal("expected SLICE-001")
56
- }
57
- if !strings.HasPrefix(block, "## SLICE-001 First\n") || !strings.Contains(block, "### Notes") {
58
- t.Fatalf("block=%q", block)
59
- }
60
- if strings.Contains(block, "SLICE-002") || strings.Contains(block, "Trailing") {
61
- t.Fatalf("block leaked past the next heading: %q", block)
62
- }
63
- last, ok := state.ExtractTaskSlice([]byte(budgetTasks), "SLICE-002")
64
- if !ok || strings.Contains(last, "Trailing section") {
65
- t.Fatalf("last=%q ok=%v", last, ok)
66
- }
67
- if _, ok := state.ExtractTaskSlice([]byte(budgetTasks), "SLICE-003"); ok {
68
- t.Fatal("SLICE-003 must not resolve")
69
- }
70
- }
71
-
72
- func TestRunObserveSlicePrintsOneSection(t *testing.T) {
73
- root, _ := writeBudgetWorkspace(t, map[string]string{"tasks.md": budgetTasks})
74
- var stdout, stderr bytes.Buffer
75
- if code := RunObserveSlice(root, "feature", "SLICE-002", &stdout, &stderr); code != 0 {
76
- t.Fatalf("code=%d stderr=%s", code, stderr.String())
77
- }
78
- if got := stdout.String(); !strings.HasPrefix(got, "## SLICE-002 Second\n") || strings.Contains(got, "SLICE-001 First") {
79
- t.Fatalf("stdout=%q", got)
80
- }
81
-
82
- stdout.Reset()
83
- if code := RunObserveSlice(root, "feature", "SLICE-009", &stdout, &stderr); code != 3 || !strings.Contains(stdout.String(), "BLOCKED") {
84
- t.Fatalf("code=%d stdout=%q", code, stdout.String())
85
- }
86
- if code := RunObserveSlice(root, "feature", "slice-1", &stdout, &stderr); code != 2 {
87
- t.Fatalf("code=%d for malformed id", code)
88
- }
89
- }
90
-
91
- func TestObserveSummaryReportsBudgetsAndBulkFiles(t *testing.T) {
92
- longLine := strings.Repeat("x", 60_000) + "\n"
93
- root, _ := writeBudgetWorkspace(t, map[string]string{
94
- "state.md": "| phase | build |\n| schema | 4 |\n" + longLine,
95
- "tasks.md": budgetTasks,
96
- "vet-review-input-1.json": strings.Repeat("{}", 40_000),
97
- "small-note.json": "{}",
98
- })
99
- summary, err := ObserveSummaryFor(root, "feature")
100
- if err != nil {
101
- t.Fatal(err)
102
- }
103
- byFile := map[string]ArtifactBudget{}
104
- for _, b := range summary.ArtifactBudgets {
105
- byFile[b.File] = b
106
- }
107
- if st, ok := byFile["state.md"]; !ok || !st.Over || st.Lines != 3 || st.ByteBudget != 120*state.BudgetBytesPerLine {
108
- t.Fatalf("state.md budget=%+v ok=%v (long line must trip the byte budget)", st, ok)
109
- }
110
- if tk, ok := byFile["tasks.md"]; !ok || tk.Over {
111
- t.Fatalf("tasks.md budget=%+v ok=%v", tk, ok)
112
- }
113
- if summary.TaskGraph == nil || len(summary.TaskGraph.Slices) != 2 ||
114
- summary.TaskGraph.Slices[0].ID != "SLICE-001" || len(summary.TaskGraph.Slices[0].DependsOn) != 0 ||
115
- summary.TaskGraph.Slices[1].DependsOn[0] != "SLICE-001" {
116
- t.Fatalf("task_graph.slices=%+v", summary.TaskGraph)
117
- }
118
- if len(summary.BulkFiles) != 1 || summary.BulkFiles[0].File != "vet-review-input-1.json" {
119
- t.Fatalf("bulk_files=%+v", summary.BulkFiles)
120
- }
121
- }
122
-
123
- func TestObserveSummaryReportsSequenceCursor(t *testing.T) {
124
- root, _ := writeBudgetWorkspace(t, map[string]string{
125
- "state.md": "| phase | build |\n| schema | 4 |\n| sequence_parent | feat-1 |\n| sequence_position | 2 |\n| sequence_workspaces_remaining | 3 |\n",
126
- })
127
- summary, err := ObserveSummaryFor(root, "feature")
128
- if err != nil {
129
- t.Fatal(err)
130
- }
131
- seq := summary.Sequence
132
- if seq == nil || seq.Parent != "feat-1" || seq.Position != "2" || seq.WorkspacesRemaining != "3" {
133
- t.Fatalf("sequence=%+v", seq)
134
- }
135
- root, _ = writeBudgetWorkspace(t, map[string]string{
136
- "state.md": "| phase | build |\n| schema | 4 |\n",
137
- })
138
- summary, err = ObserveSummaryFor(root, "feature")
139
- if err != nil {
140
- t.Fatal(err)
141
- }
142
- if summary.Sequence != nil {
143
- t.Fatalf("sequence must be absent without cursor fields: %+v", summary.Sequence)
144
- }
145
- }
146
-
147
- // summaryUnreadable decodes the emitted summary JSON and fails when the consumer has
148
- // no way to tell an omitted section from an empty one.
149
- func summaryUnreadable(t *testing.T, out []byte) []string {
150
- t.Helper()
151
- var doc map[string]json.RawMessage
152
- if err := json.Unmarshal(out, &doc); err != nil {
153
- t.Fatalf("summary is not a JSON object: %v (%s)", err, out)
154
- }
155
- raw, ok := doc["unreadable"]
156
- if !ok {
157
- t.Fatalf("summary carries no \"unreadable\" key, so an artifact that could not be read is indistinguishable from one that does not exist: %s", out)
158
- }
159
- var names []string
160
- if err := json.Unmarshal(raw, &names); err != nil {
161
- t.Fatalf("unreadable is not a list of artifact names: %v (%s)", err, raw)
162
- }
163
- return names
164
- }
165
-
166
- func summaryFiles(t *testing.T, out []byte, key string) []string {
167
- t.Helper()
168
- var doc map[string]json.RawMessage
169
- if err := json.Unmarshal(out, &doc); err != nil {
170
- t.Fatalf("summary is not a JSON object: %v (%s)", err, out)
171
- }
172
- var rows []struct {
173
- File string `json:"file"`
174
- }
175
- raw, ok := doc[key]
176
- if !ok {
177
- t.Fatalf("summary key %q is absent entirely: %s", key, out)
178
- }
179
- if err := json.Unmarshal(raw, &rows); err != nil {
180
- t.Fatalf("%s is not a list: %v (%s)", key, err, raw)
181
- }
182
- names := make([]string, 0, len(rows))
183
- for _, row := range rows {
184
- names = append(names, row.File)
185
- }
186
- return names
187
- }
188
-
189
- // One canonical artifact that exists but cannot be read must not take the
190
- // task graph, the artifact budgets and the bulk-file list down with it.
191
- func TestObserveSummaryNamesUnreadableArtifactAndKeepsReadableBudgets(t *testing.T) {
192
- if os.Geteuid() == 0 || runtime.GOOS == "windows" {
193
- t.Skip("file permissions do not bind root or windows")
194
- }
195
- root, workspace := writeBudgetWorkspace(t, map[string]string{
196
- "state.md": "| phase | build |\n| schema | 4 |\n",
197
- "tasks.md": budgetTasks,
198
- "vet-review-input-1.json": strings.Repeat("{}", 40_000),
199
- })
200
- // spec.md is canonical and sorts first; the entries behind it must survive.
201
- spec := filepath.Join(workspace, "spec.md")
202
- if err := os.WriteFile(spec, []byte("# Spec\n"), 0o000); err != nil {
203
- t.Fatal(err)
204
- }
205
- if err := os.Chmod(spec, 0o000); err != nil {
206
- t.Fatal(err)
207
- }
208
- t.Cleanup(func() { _ = os.Chmod(spec, 0o644) })
209
-
210
- var out, errOut bytes.Buffer
211
- if code := RunObserveSummary(root, "feature", &out, &errOut); code != 0 {
212
- t.Fatalf("exit=%d stderr=%s", code, errOut.String())
213
- }
214
- names := summaryUnreadable(t, out.Bytes())
215
- if len(names) != 1 || names[0] != "spec.md" {
216
- t.Fatalf("unreadable=%v, want exactly [spec.md]", names)
217
- }
218
- budgets := summaryFiles(t, out.Bytes(), "artifact_budgets")
219
- for _, want := range []string{"state.md", "tasks.md"} {
220
- found := false
221
- for _, got := range budgets {
222
- if got == want {
223
- found = true
224
- }
225
- }
226
- if !found {
227
- t.Fatalf("artifact_budgets=%v lost %q to the unreadable spec.md: %s", budgets, want, out.String())
228
- }
229
- }
230
- bulk := summaryFiles(t, out.Bytes(), "bulk_files")
231
- if len(bulk) != 1 || bulk[0] != "vet-review-input-1.json" {
232
- t.Fatalf("bulk_files=%v lost the readable 80 KiB file to the unreadable spec.md: %s", bulk, out.String())
233
- }
234
- }
235
-
236
- // A tasks.md that is not a readable regular file must be named, not dropped.
237
- func TestObserveSummaryNamesUnreadableTasksInsteadOfOmittingTaskGraph(t *testing.T) {
238
- root, workspace := writeBudgetWorkspace(t, map[string]string{
239
- "state.md": "| phase | build |\n| schema | 4 |\n",
240
- "tasks.md": budgetTasks,
241
- })
242
- if err := os.Remove(filepath.Join(workspace, "tasks.md")); err != nil {
243
- t.Fatal(err)
244
- }
245
- if err := os.Mkdir(filepath.Join(workspace, "tasks.md"), 0o755); err != nil {
246
- t.Fatal(err)
247
- }
248
-
249
- var out, errOut bytes.Buffer
250
- if code := RunObserveSummary(root, "feature", &out, &errOut); code != 0 {
251
- t.Fatalf("exit=%d stderr=%s", code, errOut.String())
252
- }
253
- names := summaryUnreadable(t, out.Bytes())
254
- if len(names) != 1 || names[0] != "tasks.md" {
255
- t.Fatalf("unreadable=%v, want exactly [tasks.md]", names)
256
- }
257
- if _, ok := map[string]json.RawMessage(mustDecode(t, out.Bytes()))["task_graph"]; ok {
258
- t.Fatalf("task_graph must stay absent when tasks.md cannot be read: %s", out.String())
259
- }
260
- if budgets := summaryFiles(t, out.Bytes(), "artifact_budgets"); len(budgets) != 1 || budgets[0] != "state.md" {
261
- t.Fatalf("artifact_budgets=%v, want [state.md]", budgets)
262
- }
263
- }
264
-
265
- func mustDecode(t *testing.T, out []byte) map[string]json.RawMessage {
266
- t.Helper()
267
- var doc map[string]json.RawMessage
268
- if err := json.Unmarshal(out, &doc); err != nil {
269
- t.Fatalf("summary is not a JSON object: %v (%s)", err, out)
270
- }
271
- return doc
272
- }
273
-
274
- // A workspace that has not reached define has no tasks.md; that is absence, not a read failure.
275
- func TestObserveSummaryOmitsUnreadableWhenTasksAbsent(t *testing.T) {
276
- root, _ := writeBudgetWorkspace(t, map[string]string{
277
- "state.md": "| phase | spec |\n| schema | 4 |\n",
278
- })
279
- var out, errOut bytes.Buffer
280
- if code := RunObserveSummary(root, "feature", &out, &errOut); code != 0 {
281
- t.Fatalf("exit=%d stderr=%s", code, errOut.String())
282
- }
283
- if _, ok := mustDecode(t, out.Bytes())["unreadable"]; ok {
284
- t.Fatalf("a missing tasks.md must not be reported as unreadable: %s", out.String())
285
- }
286
- }
287
-
288
- // A tasks.md that fails both the task-graph read and the budget read is named once.
289
- func TestObserveSummaryNamesUnreadableTasksOnce(t *testing.T) {
290
- if os.Geteuid() == 0 || runtime.GOOS == "windows" {
291
- t.Skip("file permissions do not bind root or windows")
292
- }
293
- root, workspace := writeBudgetWorkspace(t, map[string]string{
294
- "state.md": "| phase | build |\n| schema | 4 |\n",
295
- "tasks.md": budgetTasks,
296
- })
297
- tasks := filepath.Join(workspace, "tasks.md")
298
- if err := os.Chmod(tasks, 0o000); err != nil {
299
- t.Fatal(err)
300
- }
301
- t.Cleanup(func() { _ = os.Chmod(tasks, 0o644) })
302
-
303
- var out, errOut bytes.Buffer
304
- if code := RunObserveSummary(root, "feature", &out, &errOut); code != 0 {
305
- t.Fatalf("exit=%d stderr=%s", code, errOut.String())
306
- }
307
- if names := summaryUnreadable(t, out.Bytes()); len(names) != 1 || names[0] != "tasks.md" {
308
- t.Fatalf("unreadable=%v, want exactly [tasks.md]", names)
309
- }
310
- }
311
-
312
- const (
313
- artifactSchemaDocPath = "../../../pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md"
314
- outlineTemplateDocPath = "../../../pack/.claude/skills/devrites-lib/reference/visual-playbooks/outline-template.md"
315
- )
316
-
317
- // Every artifact the schema's Budget column names must either be measured by the
318
- // engine or say in its Budget cell that the budget is advisory.
319
- func TestSchemaBudgetRowsAreEnforcedOrMarkedAdvisory(t *testing.T) {
320
- raw, err := os.ReadFile(artifactSchemaDocPath)
321
- if err != nil {
322
- t.Fatal(err)
323
- }
324
- rows := 0
325
- for _, line := range strings.Split(string(raw), "\n") {
326
- cells := strings.Split(line, "|")
327
- if len(cells) != 5 || !strings.Contains(cells[3], "lines") {
328
- continue
329
- }
330
- first, budget := strings.TrimSpace(cells[1]), cells[3]
331
- if !strings.HasPrefix(first, "`") || !strings.HasSuffix(first, "`") {
332
- continue
333
- }
334
- rows++
335
- name := strings.Trim(first, "`")
336
- if _, canonical := state.ArtifactLineBudget(name); canonical {
337
- continue
338
- }
339
- if !strings.Contains(strings.ToLower(budget), "advisory") {
340
- t.Errorf("%s has a budget %q but is neither in state.artifactLineBudgets nor marked advisory", name, strings.TrimSpace(budget))
341
- }
342
- }
343
- if rows < 30 {
344
- t.Fatalf("parsed %d budget rows from the schema table, want at least 30", rows)
345
- }
346
- }
347
-
348
- func TestOutlineTemplateBudgetIsMarkedAdvisory(t *testing.T) {
349
- raw, err := os.ReadFile(outlineTemplateDocPath)
350
- if err != nil {
351
- t.Fatal(err)
352
- }
353
- for _, line := range strings.Split(string(raw), "\n") {
354
- if strings.HasPrefix(line, "- Budget:") {
355
- if !strings.Contains(strings.ToLower(line), "advisory") {
356
- t.Fatalf("outline budget line %q does not say the budget is advisory", line)
357
- }
358
- return
359
- }
360
- }
361
- t.Fatal("outline template has no \"- Budget:\" line")
362
- }
363
-
364
- // A canonical artifact larger than the read cap is reported over budget from its
365
- // size alone, without being read whole.
366
- func TestObserveArtifactBudgetsOversizedArtifactIsOverWithoutFullRead(t *testing.T) {
367
- const size = 32 << 20
368
- _, workspace := writeBudgetWorkspace(t, map[string]string{"state.md": "| phase | build |\n"})
369
- file, err := os.OpenFile(filepath.Join(workspace, "state.md"), os.O_WRONLY, 0o644)
370
- if err != nil {
371
- t.Fatal(err)
372
- }
373
- if err := file.Truncate(size); err != nil {
374
- t.Fatal(err)
375
- }
376
- if err := file.Close(); err != nil {
377
- t.Fatal(err)
378
- }
379
-
380
- var before, after runtime.MemStats
381
- runtime.ReadMemStats(&before)
382
- budgets, _, unreadable, err := observeArtifactBudgets(workspace)
383
- runtime.ReadMemStats(&after)
384
- if err != nil {
385
- t.Fatal(err)
386
- }
387
- if len(unreadable) != 0 {
388
- t.Fatalf("unreadable=%v, an oversized artifact is over budget, not unreadable", unreadable)
389
- }
390
- if len(budgets) != 1 || !budgets[0].Over || budgets[0].Bytes != size {
391
- t.Fatalf("budgets=%+v, want state.md over budget with Bytes=%d", budgets, size)
392
- }
393
- if allocated := after.TotalAlloc - before.TotalAlloc; allocated > size/4 {
394
- t.Fatalf("allocated %d bytes for a %d byte artifact; the read must be bounded", allocated, size)
395
- }
396
- }