devrites 6.10.0 → 7.0.1

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 (668) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +8 -4
  3. package/SECURITY.md +1 -1
  4. package/docs/adr/0038-engine-flags-unattributed-root-edits.md +67 -0
  5. package/docs/adr/README.md +2 -1
  6. package/docs/cli.md +19 -6
  7. package/docs/command-map.md +22 -20
  8. package/docs/engine/commands.md +22 -15
  9. package/docs/usage.md +10 -5
  10. package/engine/commands.go +8 -3
  11. package/engine/help.go +43 -16
  12. package/engine/internal/acceptance/approve.go +46 -7
  13. package/engine/internal/acceptance/cli.go +102 -0
  14. package/engine/internal/acceptance/exec.go +8 -6
  15. package/engine/internal/acceptance/ledger.go +16 -1
  16. package/engine/internal/acceptance/lint.go +9 -1
  17. package/engine/internal/acceptance/preconditions.go +201 -0
  18. package/engine/internal/anchor/anchor.go +76 -0
  19. package/engine/internal/gate/drivers.go +144 -0
  20. package/engine/internal/gate/gate.go +56 -13
  21. package/engine/internal/gate/preconditions.go +121 -0
  22. package/engine/internal/gate/predecessor.go +67 -0
  23. package/engine/internal/lib/anchors.go +270 -0
  24. package/engine/internal/lib/apply_bundle.go +2 -1
  25. package/engine/internal/lib/candidate.go +17 -8
  26. package/engine/internal/lib/claims.go +104 -39
  27. package/engine/internal/lib/context.go +337 -22
  28. package/engine/internal/lib/diffscope.go +201 -12
  29. package/engine/internal/lib/dispatch.go +393 -21
  30. package/engine/internal/lib/dispatch_contract.go +82 -2
  31. package/engine/internal/lib/dispatch_packet.go +224 -8
  32. package/engine/internal/lib/environment_report.go +2 -3
  33. package/engine/internal/lib/handoff.go +33 -3
  34. package/engine/internal/lib/metrics.go +119 -11
  35. package/engine/internal/lib/next.go +45 -5
  36. package/engine/internal/lib/observe_summary.go +2 -4
  37. package/engine/internal/lib/packet.go +319 -0
  38. package/engine/internal/lib/packet_freeze.go +227 -0
  39. package/engine/internal/lib/perturb.go +403 -0
  40. package/engine/internal/lib/questions_lint.go +99 -0
  41. package/engine/internal/lib/state_edit.go +396 -0
  42. package/engine/internal/lib/taskgraph.go +166 -0
  43. package/engine/internal/lib/treebaseline.go +331 -0
  44. package/engine/internal/lib/triggers.go +19 -0
  45. package/engine/internal/lib/windows.go +110 -5
  46. package/engine/internal/overhaul/admit/run.go +7 -30
  47. package/engine/internal/parallel/cli.go +27 -33
  48. package/engine/internal/parallel/git.go +10 -0
  49. package/engine/internal/parallel/select.go +36 -0
  50. package/engine/internal/state/budgets.go +60 -13
  51. package/engine/internal/state/observation.go +1 -1
  52. package/engine/main.go +61 -14
  53. package/pack/.claude/agents/devrites-code-reviewer.md +9 -5
  54. package/pack/.claude/agents/devrites-devex-reviewer.md +5 -4
  55. package/pack/.claude/agents/devrites-doubt-reviewer.md +4 -4
  56. package/pack/.claude/agents/devrites-evidence-scout.md +3 -2
  57. package/pack/.claude/agents/devrites-frontend-reviewer.md +5 -4
  58. package/pack/.claude/agents/devrites-performance-reviewer.md +5 -5
  59. package/pack/.claude/agents/devrites-plan-drafter.md +4 -2
  60. package/pack/.claude/agents/devrites-plan-reviewer.md +5 -5
  61. package/pack/.claude/agents/devrites-proof-runner.md +1 -1
  62. package/pack/.claude/agents/devrites-retrospector.md +1 -1
  63. package/pack/.claude/agents/devrites-security-auditor.md +4 -4
  64. package/pack/.claude/agents/devrites-simplifier-reviewer.md +5 -4
  65. package/pack/.claude/agents/devrites-slice-wright.md +18 -9
  66. package/pack/.claude/agents/devrites-spec-reviewer.md +4 -4
  67. package/pack/.claude/agents/devrites-strategy-reviewer.md +5 -6
  68. package/pack/.claude/agents/devrites-test-analyst.md +7 -4
  69. package/pack/.claude/agents/devrites-upgrade-planner.md +1 -1
  70. package/pack/.claude/agents/fast-builder.md +4 -2
  71. package/pack/.claude/agents/fast-checker.md +3 -2
  72. package/pack/.claude/agents/fast-critic.md +3 -2
  73. package/pack/.claude/agents/fast-planner.md +3 -3
  74. package/pack/.claude/agents/overhaul-recon.md +5 -4
  75. package/pack/.claude/settings.json +19 -7
  76. package/pack/.claude/skills/devrites-api-interface/SKILL.md +1 -1
  77. package/pack/.claude/skills/devrites-audit/SKILL.md +1 -1
  78. package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +1 -1
  79. package/pack/.claude/skills/devrites-doubt/SKILL.md +5 -5
  80. package/pack/.claude/skills/devrites-frontend-craft/reference/reuse-first.md +3 -3
  81. package/pack/.claude/skills/devrites-interview/SKILL.md +1 -1
  82. package/pack/.claude/skills/devrites-lib/SKILL.md +11 -6
  83. package/pack/.claude/skills/devrites-lib/reference/orchestration-profiles.md +2 -0
  84. package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +25 -14
  85. package/pack/.claude/skills/devrites-lib/reference/standards/README.md +2 -1
  86. package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +11 -3
  87. package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +43 -19
  88. package/pack/.claude/skills/devrites-lib/reference/standards/architecture-health.md +1 -1
  89. package/pack/.claude/skills/devrites-lib/reference/standards/code-index.md +111 -0
  90. package/pack/.claude/skills/devrites-lib/reference/standards/code-navigation.md +13 -63
  91. package/pack/.claude/skills/devrites-lib/reference/standards/context-hygiene.md +8 -9
  92. package/pack/.claude/skills/devrites-lib/reference/standards/core.md +14 -1
  93. package/pack/.claude/skills/devrites-lib/reference/standards/deprecation.md +1 -1
  94. package/pack/.claude/skills/devrites-lib/reference/standards/gates.md +10 -1
  95. package/pack/.claude/skills/devrites-lib/reference/standards/performance.md +14 -0
  96. package/pack/.claude/skills/devrites-lib/reference/standards/security.md +4 -0
  97. package/pack/.claude/skills/devrites-lib/reference/standards/testing.md +3 -1
  98. package/pack/.claude/skills/devrites-lib/reference/standards/tooling.md +9 -8
  99. package/pack/.claude/skills/devrites-lib/reference/standards/windows.md +3 -2
  100. package/pack/.claude/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
  101. package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +16 -16
  102. package/pack/.claude/skills/devrites-ux-shape/SKILL.md +1 -1
  103. package/pack/.claude/skills/overhaul/references/orchestration.md +3 -2
  104. package/pack/.claude/skills/rite/SKILL.md +1 -1
  105. package/pack/.claude/skills/rite-adopt/SKILL.md +1 -1
  106. package/pack/.claude/skills/rite-adopt/reference/adoption.md +1 -1
  107. package/pack/.claude/skills/rite-autocomplete/SKILL.md +11 -6
  108. package/pack/.claude/skills/rite-autocomplete/reference/lookahead.md +50 -0
  109. package/pack/.claude/skills/rite-autocomplete/reference/loop.md +7 -0
  110. package/pack/.claude/skills/rite-build/SKILL.md +4 -3
  111. package/pack/.claude/skills/rite-build/reference/afk-discipline.md +2 -0
  112. package/pack/.claude/skills/rite-build/reference/checkpoint-protocol.md +4 -1
  113. package/pack/.claude/skills/rite-build/reference/checkpoint.md +2 -0
  114. package/pack/.claude/skills/rite-build/reference/one-slice-cycle.md +1 -1
  115. package/pack/.claude/skills/rite-build/reference/output.md +2 -0
  116. package/pack/.claude/skills/rite-build/reference/parallel-batch.md +22 -12
  117. package/pack/.claude/skills/rite-build/reference/phase-contract.md +13 -3
  118. package/pack/.claude/skills/rite-build/reference/spec-drift-guard.md +4 -0
  119. package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +42 -25
  120. package/pack/.claude/skills/rite-clarify/SKILL.md +1 -1
  121. package/pack/.claude/skills/rite-converge/SKILL.md +4 -4
  122. package/pack/.claude/skills/rite-converge/reference/convergence-assessment.md +3 -3
  123. package/pack/.claude/skills/rite-define/SKILL.md +10 -5
  124. package/pack/.claude/skills/rite-doctor/SKILL.md +17 -2
  125. package/pack/.claude/skills/rite-dogfood/SKILL.md +1 -1
  126. package/pack/.claude/skills/rite-explain/SKILL.md +1 -1
  127. package/pack/.claude/skills/rite-explain/reference/intake.md +1 -1
  128. package/pack/.claude/skills/rite-fast/SKILL.md +1 -1
  129. package/pack/.claude/skills/rite-handoff/SKILL.md +3 -3
  130. package/pack/.claude/skills/rite-handoff/reference/handoff-template.md +1 -1
  131. package/pack/.claude/skills/rite-plan/SKILL.md +4 -4
  132. package/pack/.claude/skills/rite-plan/reference/slicing.md +3 -2
  133. package/pack/.claude/skills/rite-polish/SKILL.md +6 -3
  134. package/pack/.claude/skills/rite-prove/SKILL.md +1 -1
  135. package/pack/.claude/skills/rite-quick/SKILL.md +1 -1
  136. package/pack/.claude/skills/rite-resolve/SKILL.md +1 -1
  137. package/pack/.claude/skills/rite-review/SKILL.md +4 -4
  138. package/pack/.claude/skills/rite-seal/SKILL.md +2 -2
  139. package/pack/.claude/skills/rite-ship/SKILL.md +1 -1
  140. package/pack/.claude/skills/rite-spec/SKILL.md +3 -2
  141. package/pack/.claude/skills/rite-spec/reference/investigation.md +5 -5
  142. package/pack/.claude/skills/rite-spec/reference/spec-template.md +1 -1
  143. package/pack/.claude/skills/rite-spec/reference/state-workspace.md +6 -4
  144. package/pack/.claude/skills/rite-status/SKILL.md +1 -1
  145. package/pack/.claude/skills/rite-temper/SKILL.md +1 -1
  146. package/pack/.claude/skills/rite-temper/reference/review-dimensions.md +2 -2
  147. package/pack/.claude/skills/rite-temper/reference/scope-modes.md +2 -2
  148. package/pack/.claude/skills/rite-temper/reference/significance.md +2 -2
  149. package/pack/.claude/skills/rite-vet/SKILL.md +11 -5
  150. package/pack/.claude/skills/rite-vet/reference/artifacts.md +10 -3
  151. package/pack/.claude/skills/rite-vet/reference/depth.md +2 -2
  152. package/pack/.claude/skills/rite-vet/reference/review-axes.md +2 -2
  153. package/pack/.claude/skills/rite-zoom-out/SKILL.md +6 -6
  154. package/pack/generated/claude/agents/devrites-code-reviewer.md +9 -5
  155. package/pack/generated/claude/agents/devrites-devex-reviewer.md +5 -4
  156. package/pack/generated/claude/agents/devrites-doubt-reviewer.md +4 -4
  157. package/pack/generated/claude/agents/devrites-evidence-scout.md +3 -2
  158. package/pack/generated/claude/agents/devrites-frontend-reviewer.md +5 -4
  159. package/pack/generated/claude/agents/devrites-performance-reviewer.md +5 -5
  160. package/pack/generated/claude/agents/devrites-plan-drafter.md +4 -2
  161. package/pack/generated/claude/agents/devrites-plan-reviewer.md +5 -5
  162. package/pack/generated/claude/agents/devrites-proof-runner.md +1 -1
  163. package/pack/generated/claude/agents/devrites-retrospector.md +1 -1
  164. package/pack/generated/claude/agents/devrites-security-auditor.md +4 -4
  165. package/pack/generated/claude/agents/devrites-simplifier-reviewer.md +5 -4
  166. package/pack/generated/claude/agents/devrites-slice-wright.md +18 -9
  167. package/pack/generated/claude/agents/devrites-spec-reviewer.md +4 -4
  168. package/pack/generated/claude/agents/devrites-strategy-reviewer.md +5 -6
  169. package/pack/generated/claude/agents/devrites-test-analyst.md +7 -4
  170. package/pack/generated/claude/agents/devrites-upgrade-planner.md +1 -1
  171. package/pack/generated/claude/agents/fast-builder.md +4 -2
  172. package/pack/generated/claude/agents/fast-checker.md +3 -2
  173. package/pack/generated/claude/agents/fast-critic.md +3 -2
  174. package/pack/generated/claude/agents/fast-planner.md +3 -3
  175. package/pack/generated/claude/agents/overhaul-recon.md +5 -4
  176. package/pack/generated/claude/settings.json +19 -7
  177. package/pack/generated/claude/skills/devrites-api-interface/SKILL.md +1 -1
  178. package/pack/generated/claude/skills/devrites-audit/SKILL.md +1 -1
  179. package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +1 -1
  180. package/pack/generated/claude/skills/devrites-doubt/SKILL.md +5 -5
  181. package/pack/generated/claude/skills/devrites-frontend-craft/reference/reuse-first.md +3 -3
  182. package/pack/generated/claude/skills/devrites-interview/SKILL.md +1 -1
  183. package/pack/generated/claude/skills/devrites-lib/SKILL.md +11 -6
  184. package/pack/generated/claude/skills/devrites-lib/reference/orchestration-profiles.md +2 -0
  185. package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +25 -14
  186. package/pack/generated/claude/skills/devrites-lib/reference/standards/README.md +2 -1
  187. package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +11 -3
  188. package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +43 -19
  189. package/pack/generated/claude/skills/devrites-lib/reference/standards/architecture-health.md +1 -1
  190. package/pack/generated/claude/skills/devrites-lib/reference/standards/code-index.md +111 -0
  191. package/pack/generated/claude/skills/devrites-lib/reference/standards/code-navigation.md +13 -63
  192. package/pack/generated/claude/skills/devrites-lib/reference/standards/context-hygiene.md +8 -9
  193. package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +14 -1
  194. package/pack/generated/claude/skills/devrites-lib/reference/standards/deprecation.md +1 -1
  195. package/pack/generated/claude/skills/devrites-lib/reference/standards/gates.md +10 -1
  196. package/pack/generated/claude/skills/devrites-lib/reference/standards/performance.md +14 -0
  197. package/pack/generated/claude/skills/devrites-lib/reference/standards/security.md +4 -0
  198. package/pack/generated/claude/skills/devrites-lib/reference/standards/testing.md +3 -1
  199. package/pack/generated/claude/skills/devrites-lib/reference/standards/tooling.md +9 -8
  200. package/pack/generated/claude/skills/devrites-lib/reference/standards/windows.md +3 -2
  201. package/pack/generated/claude/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
  202. package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +16 -16
  203. package/pack/generated/claude/skills/devrites-ux-shape/SKILL.md +1 -1
  204. package/pack/generated/claude/skills/overhaul/references/orchestration.md +3 -2
  205. package/pack/generated/claude/skills/rite/SKILL.md +1 -1
  206. package/pack/generated/claude/skills/rite-adopt/SKILL.md +1 -1
  207. package/pack/generated/claude/skills/rite-adopt/reference/adoption.md +1 -1
  208. package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +11 -6
  209. package/pack/generated/claude/skills/rite-autocomplete/reference/lookahead.md +50 -0
  210. package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +7 -0
  211. package/pack/generated/claude/skills/rite-build/SKILL.md +4 -3
  212. package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +2 -0
  213. package/pack/generated/claude/skills/rite-build/reference/checkpoint-protocol.md +4 -1
  214. package/pack/generated/claude/skills/rite-build/reference/checkpoint.md +2 -0
  215. package/pack/generated/claude/skills/rite-build/reference/one-slice-cycle.md +1 -1
  216. package/pack/generated/claude/skills/rite-build/reference/output.md +2 -0
  217. package/pack/generated/claude/skills/rite-build/reference/parallel-batch.md +22 -12
  218. package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +13 -3
  219. package/pack/generated/claude/skills/rite-build/reference/spec-drift-guard.md +4 -0
  220. package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +42 -25
  221. package/pack/generated/claude/skills/rite-clarify/SKILL.md +1 -1
  222. package/pack/generated/claude/skills/rite-converge/SKILL.md +4 -4
  223. package/pack/generated/claude/skills/rite-converge/reference/convergence-assessment.md +3 -3
  224. package/pack/generated/claude/skills/rite-define/SKILL.md +10 -5
  225. package/pack/generated/claude/skills/rite-doctor/SKILL.md +17 -2
  226. package/pack/generated/claude/skills/rite-dogfood/SKILL.md +1 -1
  227. package/pack/generated/claude/skills/rite-explain/SKILL.md +1 -1
  228. package/pack/generated/claude/skills/rite-explain/reference/intake.md +1 -1
  229. package/pack/generated/claude/skills/rite-fast/SKILL.md +1 -1
  230. package/pack/generated/claude/skills/rite-handoff/SKILL.md +3 -3
  231. package/pack/generated/claude/skills/rite-handoff/reference/handoff-template.md +1 -1
  232. package/pack/generated/claude/skills/rite-plan/SKILL.md +4 -4
  233. package/pack/generated/claude/skills/rite-plan/reference/slicing.md +3 -2
  234. package/pack/generated/claude/skills/rite-polish/SKILL.md +6 -3
  235. package/pack/generated/claude/skills/rite-prove/SKILL.md +1 -1
  236. package/pack/generated/claude/skills/rite-quick/SKILL.md +1 -1
  237. package/pack/generated/claude/skills/rite-resolve/SKILL.md +1 -1
  238. package/pack/generated/claude/skills/rite-review/SKILL.md +4 -4
  239. package/pack/generated/claude/skills/rite-seal/SKILL.md +2 -2
  240. package/pack/generated/claude/skills/rite-ship/SKILL.md +1 -1
  241. package/pack/generated/claude/skills/rite-spec/SKILL.md +3 -2
  242. package/pack/generated/claude/skills/rite-spec/reference/investigation.md +5 -5
  243. package/pack/generated/claude/skills/rite-spec/reference/spec-template.md +1 -1
  244. package/pack/generated/claude/skills/rite-spec/reference/state-workspace.md +6 -4
  245. package/pack/generated/claude/skills/rite-status/SKILL.md +1 -1
  246. package/pack/generated/claude/skills/rite-temper/SKILL.md +1 -1
  247. package/pack/generated/claude/skills/rite-temper/reference/review-dimensions.md +2 -2
  248. package/pack/generated/claude/skills/rite-temper/reference/scope-modes.md +2 -2
  249. package/pack/generated/claude/skills/rite-temper/reference/significance.md +2 -2
  250. package/pack/generated/claude/skills/rite-vet/SKILL.md +11 -5
  251. package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +10 -3
  252. package/pack/generated/claude/skills/rite-vet/reference/depth.md +2 -2
  253. package/pack/generated/claude/skills/rite-vet/reference/review-axes.md +2 -2
  254. package/pack/generated/claude/skills/rite-zoom-out/SKILL.md +6 -6
  255. package/pack/generated/codex/agents/devrites-code-reviewer.toml +8 -4
  256. package/pack/generated/codex/agents/devrites-devex-reviewer.toml +4 -3
  257. package/pack/generated/codex/agents/devrites-doubt-reviewer.toml +3 -3
  258. package/pack/generated/codex/agents/devrites-evidence-scout.toml +2 -1
  259. package/pack/generated/codex/agents/devrites-frontend-reviewer.toml +4 -3
  260. package/pack/generated/codex/agents/devrites-performance-reviewer.toml +4 -4
  261. package/pack/generated/codex/agents/devrites-plan-drafter.toml +3 -1
  262. package/pack/generated/codex/agents/devrites-plan-reviewer.toml +4 -4
  263. package/pack/generated/codex/agents/devrites-security-auditor.toml +3 -3
  264. package/pack/generated/codex/agents/devrites-simplifier-reviewer.toml +4 -3
  265. package/pack/generated/codex/agents/devrites-slice-wright.toml +17 -8
  266. package/pack/generated/codex/agents/devrites-spec-reviewer.toml +3 -3
  267. package/pack/generated/codex/agents/devrites-strategy-reviewer.toml +4 -5
  268. package/pack/generated/codex/agents/devrites-test-analyst.toml +6 -3
  269. package/pack/generated/codex/agents/fast-builder.toml +3 -1
  270. package/pack/generated/codex/agents/fast-checker.toml +2 -1
  271. package/pack/generated/codex/agents/fast-critic.toml +2 -1
  272. package/pack/generated/codex/agents/fast-planner.toml +2 -2
  273. package/pack/generated/codex/agents/overhaul-recon.toml +5 -4
  274. package/pack/generated/codex/skills/devrites-api-interface/SKILL.md +1 -1
  275. package/pack/generated/codex/skills/devrites-audit/SKILL.md +1 -1
  276. package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +1 -1
  277. package/pack/generated/codex/skills/devrites-doubt/SKILL.md +5 -5
  278. package/pack/generated/codex/skills/devrites-frontend-craft/reference/reuse-first.md +3 -3
  279. package/pack/generated/codex/skills/devrites-interview/SKILL.md +1 -1
  280. package/pack/generated/codex/skills/devrites-lib/SKILL.md +11 -6
  281. package/pack/generated/codex/skills/devrites-lib/reference/orchestration-profiles.md +2 -0
  282. package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +25 -14
  283. package/pack/generated/codex/skills/devrites-lib/reference/standards/README.md +2 -1
  284. package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +11 -3
  285. package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +43 -19
  286. package/pack/generated/codex/skills/devrites-lib/reference/standards/architecture-health.md +1 -1
  287. package/pack/generated/codex/skills/devrites-lib/reference/standards/code-index.md +111 -0
  288. package/pack/generated/codex/skills/devrites-lib/reference/standards/code-navigation.md +13 -63
  289. package/pack/generated/codex/skills/devrites-lib/reference/standards/context-hygiene.md +8 -9
  290. package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +14 -1
  291. package/pack/generated/codex/skills/devrites-lib/reference/standards/deprecation.md +1 -1
  292. package/pack/generated/codex/skills/devrites-lib/reference/standards/gates.md +10 -1
  293. package/pack/generated/codex/skills/devrites-lib/reference/standards/performance.md +14 -0
  294. package/pack/generated/codex/skills/devrites-lib/reference/standards/security.md +4 -0
  295. package/pack/generated/codex/skills/devrites-lib/reference/standards/testing.md +3 -1
  296. package/pack/generated/codex/skills/devrites-lib/reference/standards/tooling.md +9 -8
  297. package/pack/generated/codex/skills/devrites-lib/reference/standards/windows.md +3 -2
  298. package/pack/generated/codex/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
  299. package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +16 -16
  300. package/pack/generated/codex/skills/devrites-ux-shape/SKILL.md +1 -1
  301. package/pack/generated/codex/skills/overhaul/references/orchestration.md +3 -2
  302. package/pack/generated/codex/skills/rite/SKILL.md +1 -1
  303. package/pack/generated/codex/skills/rite-adopt/SKILL.md +1 -1
  304. package/pack/generated/codex/skills/rite-adopt/reference/adoption.md +1 -1
  305. package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +11 -6
  306. package/pack/generated/codex/skills/rite-autocomplete/reference/lookahead.md +50 -0
  307. package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +7 -0
  308. package/pack/generated/codex/skills/rite-build/SKILL.md +4 -3
  309. package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +2 -0
  310. package/pack/generated/codex/skills/rite-build/reference/checkpoint-protocol.md +4 -1
  311. package/pack/generated/codex/skills/rite-build/reference/checkpoint.md +2 -0
  312. package/pack/generated/codex/skills/rite-build/reference/one-slice-cycle.md +1 -1
  313. package/pack/generated/codex/skills/rite-build/reference/output.md +2 -0
  314. package/pack/generated/codex/skills/rite-build/reference/parallel-batch.md +22 -12
  315. package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +13 -3
  316. package/pack/generated/codex/skills/rite-build/reference/spec-drift-guard.md +4 -0
  317. package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +42 -25
  318. package/pack/generated/codex/skills/rite-clarify/SKILL.md +1 -1
  319. package/pack/generated/codex/skills/rite-converge/SKILL.md +4 -4
  320. package/pack/generated/codex/skills/rite-converge/reference/convergence-assessment.md +3 -3
  321. package/pack/generated/codex/skills/rite-define/SKILL.md +10 -5
  322. package/pack/generated/codex/skills/rite-doctor/SKILL.md +17 -2
  323. package/pack/generated/codex/skills/rite-dogfood/SKILL.md +1 -1
  324. package/pack/generated/codex/skills/rite-explain/SKILL.md +1 -1
  325. package/pack/generated/codex/skills/rite-explain/reference/intake.md +1 -1
  326. package/pack/generated/codex/skills/rite-fast/SKILL.md +1 -1
  327. package/pack/generated/codex/skills/rite-handoff/SKILL.md +3 -3
  328. package/pack/generated/codex/skills/rite-handoff/reference/handoff-template.md +1 -1
  329. package/pack/generated/codex/skills/rite-plan/SKILL.md +4 -4
  330. package/pack/generated/codex/skills/rite-plan/reference/slicing.md +3 -2
  331. package/pack/generated/codex/skills/rite-polish/SKILL.md +6 -3
  332. package/pack/generated/codex/skills/rite-prove/SKILL.md +1 -1
  333. package/pack/generated/codex/skills/rite-quick/SKILL.md +1 -1
  334. package/pack/generated/codex/skills/rite-resolve/SKILL.md +1 -1
  335. package/pack/generated/codex/skills/rite-review/SKILL.md +4 -4
  336. package/pack/generated/codex/skills/rite-seal/SKILL.md +2 -2
  337. package/pack/generated/codex/skills/rite-ship/SKILL.md +1 -1
  338. package/pack/generated/codex/skills/rite-spec/SKILL.md +3 -2
  339. package/pack/generated/codex/skills/rite-spec/reference/investigation.md +5 -5
  340. package/pack/generated/codex/skills/rite-spec/reference/spec-template.md +1 -1
  341. package/pack/generated/codex/skills/rite-spec/reference/state-workspace.md +6 -4
  342. package/pack/generated/codex/skills/rite-status/SKILL.md +1 -1
  343. package/pack/generated/codex/skills/rite-temper/SKILL.md +1 -1
  344. package/pack/generated/codex/skills/rite-temper/reference/review-dimensions.md +2 -2
  345. package/pack/generated/codex/skills/rite-temper/reference/scope-modes.md +2 -2
  346. package/pack/generated/codex/skills/rite-temper/reference/significance.md +2 -2
  347. package/pack/generated/codex/skills/rite-vet/SKILL.md +11 -5
  348. package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +10 -3
  349. package/pack/generated/codex/skills/rite-vet/reference/depth.md +2 -2
  350. package/pack/generated/codex/skills/rite-vet/reference/review-axes.md +2 -2
  351. package/pack/generated/codex/skills/rite-zoom-out/SKILL.md +6 -6
  352. package/pack/generated/devin/agents/devrites-code-reviewer.md +8 -4
  353. package/pack/generated/devin/agents/devrites-devex-reviewer.md +4 -3
  354. package/pack/generated/devin/agents/devrites-doubt-reviewer.md +3 -3
  355. package/pack/generated/devin/agents/devrites-evidence-scout.md +2 -1
  356. package/pack/generated/devin/agents/devrites-frontend-reviewer.md +4 -3
  357. package/pack/generated/devin/agents/devrites-performance-reviewer.md +4 -4
  358. package/pack/generated/devin/agents/devrites-plan-drafter.md +3 -1
  359. package/pack/generated/devin/agents/devrites-plan-reviewer.md +4 -4
  360. package/pack/generated/devin/agents/devrites-security-auditor.md +3 -3
  361. package/pack/generated/devin/agents/devrites-simplifier-reviewer.md +4 -3
  362. package/pack/generated/devin/agents/devrites-slice-wright.md +17 -8
  363. package/pack/generated/devin/agents/devrites-spec-reviewer.md +3 -3
  364. package/pack/generated/devin/agents/devrites-strategy-reviewer.md +4 -5
  365. package/pack/generated/devin/agents/devrites-test-analyst.md +6 -3
  366. package/pack/generated/devin/agents/fast-builder.md +3 -1
  367. package/pack/generated/devin/agents/fast-checker.md +2 -1
  368. package/pack/generated/devin/agents/fast-critic.md +2 -1
  369. package/pack/generated/devin/agents/fast-planner.md +2 -2
  370. package/pack/generated/devin/agents/overhaul-recon.md +5 -4
  371. package/pack/generated/devin/skills/devrites-api-interface/SKILL.md +1 -1
  372. package/pack/generated/devin/skills/devrites-audit/SKILL.md +1 -1
  373. package/pack/generated/devin/skills/devrites-debug-recovery/SKILL.md +1 -1
  374. package/pack/generated/devin/skills/devrites-doubt/SKILL.md +5 -5
  375. package/pack/generated/devin/skills/devrites-frontend-craft/reference/reuse-first.md +3 -3
  376. package/pack/generated/devin/skills/devrites-interview/SKILL.md +1 -1
  377. package/pack/generated/devin/skills/devrites-lib/SKILL.md +11 -6
  378. package/pack/generated/devin/skills/devrites-lib/reference/orchestration-profiles.md +2 -0
  379. package/pack/generated/devin/skills/devrites-lib/reference/parallel-dispatch.md +25 -14
  380. package/pack/generated/devin/skills/devrites-lib/reference/standards/README.md +2 -1
  381. package/pack/generated/devin/skills/devrites-lib/reference/standards/afk-hitl.md +11 -3
  382. package/pack/generated/devin/skills/devrites-lib/reference/standards/agents.md +43 -19
  383. package/pack/generated/devin/skills/devrites-lib/reference/standards/architecture-health.md +1 -1
  384. package/pack/generated/devin/skills/devrites-lib/reference/standards/code-index.md +111 -0
  385. package/pack/generated/devin/skills/devrites-lib/reference/standards/code-navigation.md +13 -63
  386. package/pack/generated/devin/skills/devrites-lib/reference/standards/context-hygiene.md +8 -9
  387. package/pack/generated/devin/skills/devrites-lib/reference/standards/core.md +14 -1
  388. package/pack/generated/devin/skills/devrites-lib/reference/standards/deprecation.md +1 -1
  389. package/pack/generated/devin/skills/devrites-lib/reference/standards/gates.md +10 -1
  390. package/pack/generated/devin/skills/devrites-lib/reference/standards/performance.md +14 -0
  391. package/pack/generated/devin/skills/devrites-lib/reference/standards/security.md +4 -0
  392. package/pack/generated/devin/skills/devrites-lib/reference/standards/testing.md +3 -1
  393. package/pack/generated/devin/skills/devrites-lib/reference/standards/tooling.md +9 -8
  394. package/pack/generated/devin/skills/devrites-lib/reference/standards/windows.md +3 -2
  395. package/pack/generated/devin/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
  396. package/pack/generated/devin/skills/devrites-lib/reference/workspace-artifact-schema.md +16 -16
  397. package/pack/generated/devin/skills/devrites-ux-shape/SKILL.md +1 -1
  398. package/pack/generated/devin/skills/overhaul/references/orchestration.md +3 -2
  399. package/pack/generated/devin/skills/rite/SKILL.md +1 -1
  400. package/pack/generated/devin/skills/rite-adopt/SKILL.md +1 -1
  401. package/pack/generated/devin/skills/rite-adopt/reference/adoption.md +1 -1
  402. package/pack/generated/devin/skills/rite-autocomplete/SKILL.md +11 -6
  403. package/pack/generated/devin/skills/rite-autocomplete/reference/lookahead.md +50 -0
  404. package/pack/generated/devin/skills/rite-autocomplete/reference/loop.md +7 -0
  405. package/pack/generated/devin/skills/rite-build/SKILL.md +4 -3
  406. package/pack/generated/devin/skills/rite-build/reference/afk-discipline.md +2 -0
  407. package/pack/generated/devin/skills/rite-build/reference/checkpoint-protocol.md +4 -1
  408. package/pack/generated/devin/skills/rite-build/reference/checkpoint.md +2 -0
  409. package/pack/generated/devin/skills/rite-build/reference/one-slice-cycle.md +1 -1
  410. package/pack/generated/devin/skills/rite-build/reference/output.md +2 -0
  411. package/pack/generated/devin/skills/rite-build/reference/parallel-batch.md +22 -12
  412. package/pack/generated/devin/skills/rite-build/reference/phase-contract.md +13 -3
  413. package/pack/generated/devin/skills/rite-build/reference/spec-drift-guard.md +4 -0
  414. package/pack/generated/devin/skills/rite-build/reference/wright-dispatch.md +42 -25
  415. package/pack/generated/devin/skills/rite-clarify/SKILL.md +1 -1
  416. package/pack/generated/devin/skills/rite-converge/SKILL.md +4 -4
  417. package/pack/generated/devin/skills/rite-converge/reference/convergence-assessment.md +3 -3
  418. package/pack/generated/devin/skills/rite-define/SKILL.md +10 -5
  419. package/pack/generated/devin/skills/rite-doctor/SKILL.md +17 -2
  420. package/pack/generated/devin/skills/rite-dogfood/SKILL.md +1 -1
  421. package/pack/generated/devin/skills/rite-explain/SKILL.md +1 -1
  422. package/pack/generated/devin/skills/rite-explain/reference/intake.md +1 -1
  423. package/pack/generated/devin/skills/rite-fast/SKILL.md +1 -1
  424. package/pack/generated/devin/skills/rite-handoff/SKILL.md +3 -3
  425. package/pack/generated/devin/skills/rite-handoff/reference/handoff-template.md +1 -1
  426. package/pack/generated/devin/skills/rite-plan/SKILL.md +4 -4
  427. package/pack/generated/devin/skills/rite-plan/reference/slicing.md +3 -2
  428. package/pack/generated/devin/skills/rite-polish/SKILL.md +6 -3
  429. package/pack/generated/devin/skills/rite-prove/SKILL.md +1 -1
  430. package/pack/generated/devin/skills/rite-quick/SKILL.md +1 -1
  431. package/pack/generated/devin/skills/rite-resolve/SKILL.md +1 -1
  432. package/pack/generated/devin/skills/rite-review/SKILL.md +4 -4
  433. package/pack/generated/devin/skills/rite-seal/SKILL.md +2 -2
  434. package/pack/generated/devin/skills/rite-ship/SKILL.md +1 -1
  435. package/pack/generated/devin/skills/rite-spec/SKILL.md +3 -2
  436. package/pack/generated/devin/skills/rite-spec/reference/investigation.md +5 -5
  437. package/pack/generated/devin/skills/rite-spec/reference/spec-template.md +1 -1
  438. package/pack/generated/devin/skills/rite-spec/reference/state-workspace.md +6 -4
  439. package/pack/generated/devin/skills/rite-status/SKILL.md +1 -1
  440. package/pack/generated/devin/skills/rite-temper/SKILL.md +1 -1
  441. package/pack/generated/devin/skills/rite-temper/reference/review-dimensions.md +2 -2
  442. package/pack/generated/devin/skills/rite-temper/reference/scope-modes.md +2 -2
  443. package/pack/generated/devin/skills/rite-temper/reference/significance.md +2 -2
  444. package/pack/generated/devin/skills/rite-vet/SKILL.md +11 -5
  445. package/pack/generated/devin/skills/rite-vet/reference/artifacts.md +10 -3
  446. package/pack/generated/devin/skills/rite-vet/reference/depth.md +2 -2
  447. package/pack/generated/devin/skills/rite-vet/reference/review-axes.md +2 -2
  448. package/pack/generated/devin/skills/rite-zoom-out/SKILL.md +6 -6
  449. package/pack/generated/omp/agents/devrites-code-reviewer.md +9 -5
  450. package/pack/generated/omp/agents/devrites-devex-reviewer.md +5 -4
  451. package/pack/generated/omp/agents/devrites-doubt-reviewer.md +4 -4
  452. package/pack/generated/omp/agents/devrites-evidence-scout.md +3 -2
  453. package/pack/generated/omp/agents/devrites-frontend-reviewer.md +5 -4
  454. package/pack/generated/omp/agents/devrites-performance-reviewer.md +5 -5
  455. package/pack/generated/omp/agents/devrites-plan-drafter.md +4 -2
  456. package/pack/generated/omp/agents/devrites-plan-reviewer.md +5 -5
  457. package/pack/generated/omp/agents/devrites-proof-runner.md +1 -1
  458. package/pack/generated/omp/agents/devrites-retrospector.md +1 -1
  459. package/pack/generated/omp/agents/devrites-security-auditor.md +4 -4
  460. package/pack/generated/omp/agents/devrites-simplifier-reviewer.md +5 -4
  461. package/pack/generated/omp/agents/devrites-slice-wright.md +18 -9
  462. package/pack/generated/omp/agents/devrites-spec-reviewer.md +4 -4
  463. package/pack/generated/omp/agents/devrites-strategy-reviewer.md +5 -6
  464. package/pack/generated/omp/agents/devrites-test-analyst.md +7 -4
  465. package/pack/generated/omp/agents/devrites-upgrade-planner.md +1 -1
  466. package/pack/generated/omp/agents/fast-builder.md +4 -2
  467. package/pack/generated/omp/agents/fast-checker.md +3 -2
  468. package/pack/generated/omp/agents/fast-critic.md +3 -2
  469. package/pack/generated/omp/agents/fast-planner.md +3 -3
  470. package/pack/generated/omp/agents/overhaul-backend-engineer.md +1 -1
  471. package/pack/generated/omp/agents/overhaul-boundary.md +1 -1
  472. package/pack/generated/omp/agents/overhaul-craft.md +1 -1
  473. package/pack/generated/omp/agents/overhaul-frontend-engineer.md +1 -1
  474. package/pack/generated/omp/agents/overhaul-implementer.md +1 -1
  475. package/pack/generated/omp/agents/overhaul-recon.md +6 -5
  476. package/pack/generated/omp/agents/overhaul-specialist.md +1 -1
  477. package/pack/generated/omp/agents/overhaul-verifier.md +1 -1
  478. package/pack/generated/omp/commands/rite-autocomplete.md +1 -1
  479. package/pack/generated/omp/skills/devrites-api-interface/SKILL.md +1 -1
  480. package/pack/generated/omp/skills/devrites-audit/SKILL.md +1 -1
  481. package/pack/generated/omp/skills/devrites-debug-recovery/SKILL.md +1 -1
  482. package/pack/generated/omp/skills/devrites-doubt/SKILL.md +5 -5
  483. package/pack/generated/omp/skills/devrites-frontend-craft/reference/reuse-first.md +3 -3
  484. package/pack/generated/omp/skills/devrites-interview/SKILL.md +1 -1
  485. package/pack/generated/omp/skills/devrites-lib/SKILL.md +11 -6
  486. package/pack/generated/omp/skills/devrites-lib/reference/orchestration-profiles.md +2 -0
  487. package/pack/generated/omp/skills/devrites-lib/reference/parallel-dispatch.md +25 -14
  488. package/pack/generated/omp/skills/devrites-lib/reference/standards/README.md +2 -1
  489. package/pack/generated/omp/skills/devrites-lib/reference/standards/afk-hitl.md +11 -3
  490. package/pack/generated/omp/skills/devrites-lib/reference/standards/agents.md +43 -19
  491. package/pack/generated/omp/skills/devrites-lib/reference/standards/architecture-health.md +1 -1
  492. package/pack/generated/omp/skills/devrites-lib/reference/standards/code-index.md +111 -0
  493. package/pack/generated/omp/skills/devrites-lib/reference/standards/code-navigation.md +13 -63
  494. package/pack/generated/omp/skills/devrites-lib/reference/standards/context-hygiene.md +8 -9
  495. package/pack/generated/omp/skills/devrites-lib/reference/standards/core.md +14 -1
  496. package/pack/generated/omp/skills/devrites-lib/reference/standards/deprecation.md +1 -1
  497. package/pack/generated/omp/skills/devrites-lib/reference/standards/gates.md +10 -1
  498. package/pack/generated/omp/skills/devrites-lib/reference/standards/performance.md +14 -0
  499. package/pack/generated/omp/skills/devrites-lib/reference/standards/security.md +4 -0
  500. package/pack/generated/omp/skills/devrites-lib/reference/standards/testing.md +3 -1
  501. package/pack/generated/omp/skills/devrites-lib/reference/standards/tooling.md +9 -8
  502. package/pack/generated/omp/skills/devrites-lib/reference/standards/windows.md +3 -2
  503. package/pack/generated/omp/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
  504. package/pack/generated/omp/skills/devrites-lib/reference/workspace-artifact-schema.md +16 -16
  505. package/pack/generated/omp/skills/devrites-ux-shape/SKILL.md +1 -1
  506. package/pack/generated/omp/skills/overhaul/references/orchestration.md +3 -2
  507. package/pack/generated/omp/skills/rite/SKILL.md +1 -1
  508. package/pack/generated/omp/skills/rite-adopt/SKILL.md +1 -1
  509. package/pack/generated/omp/skills/rite-adopt/reference/adoption.md +1 -1
  510. package/pack/generated/omp/skills/rite-autocomplete/SKILL.md +11 -6
  511. package/pack/generated/omp/skills/rite-autocomplete/reference/lookahead.md +50 -0
  512. package/pack/generated/omp/skills/rite-autocomplete/reference/loop.md +7 -0
  513. package/pack/generated/omp/skills/rite-build/SKILL.md +4 -3
  514. package/pack/generated/omp/skills/rite-build/reference/afk-discipline.md +2 -0
  515. package/pack/generated/omp/skills/rite-build/reference/checkpoint-protocol.md +4 -1
  516. package/pack/generated/omp/skills/rite-build/reference/checkpoint.md +2 -0
  517. package/pack/generated/omp/skills/rite-build/reference/one-slice-cycle.md +1 -1
  518. package/pack/generated/omp/skills/rite-build/reference/output.md +2 -0
  519. package/pack/generated/omp/skills/rite-build/reference/parallel-batch.md +22 -12
  520. package/pack/generated/omp/skills/rite-build/reference/phase-contract.md +13 -3
  521. package/pack/generated/omp/skills/rite-build/reference/spec-drift-guard.md +4 -0
  522. package/pack/generated/omp/skills/rite-build/reference/wright-dispatch.md +42 -25
  523. package/pack/generated/omp/skills/rite-clarify/SKILL.md +1 -1
  524. package/pack/generated/omp/skills/rite-converge/SKILL.md +4 -4
  525. package/pack/generated/omp/skills/rite-converge/reference/convergence-assessment.md +3 -3
  526. package/pack/generated/omp/skills/rite-define/SKILL.md +10 -5
  527. package/pack/generated/omp/skills/rite-doctor/SKILL.md +17 -2
  528. package/pack/generated/omp/skills/rite-dogfood/SKILL.md +1 -1
  529. package/pack/generated/omp/skills/rite-explain/SKILL.md +1 -1
  530. package/pack/generated/omp/skills/rite-explain/reference/intake.md +1 -1
  531. package/pack/generated/omp/skills/rite-fast/SKILL.md +1 -1
  532. package/pack/generated/omp/skills/rite-handoff/SKILL.md +3 -3
  533. package/pack/generated/omp/skills/rite-handoff/reference/handoff-template.md +1 -1
  534. package/pack/generated/omp/skills/rite-plan/SKILL.md +4 -4
  535. package/pack/generated/omp/skills/rite-plan/reference/slicing.md +3 -2
  536. package/pack/generated/omp/skills/rite-polish/SKILL.md +6 -3
  537. package/pack/generated/omp/skills/rite-prove/SKILL.md +1 -1
  538. package/pack/generated/omp/skills/rite-quick/SKILL.md +1 -1
  539. package/pack/generated/omp/skills/rite-resolve/SKILL.md +1 -1
  540. package/pack/generated/omp/skills/rite-review/SKILL.md +4 -4
  541. package/pack/generated/omp/skills/rite-seal/SKILL.md +2 -2
  542. package/pack/generated/omp/skills/rite-ship/SKILL.md +1 -1
  543. package/pack/generated/omp/skills/rite-spec/SKILL.md +3 -2
  544. package/pack/generated/omp/skills/rite-spec/reference/investigation.md +5 -5
  545. package/pack/generated/omp/skills/rite-spec/reference/spec-template.md +1 -1
  546. package/pack/generated/omp/skills/rite-spec/reference/state-workspace.md +6 -4
  547. package/pack/generated/omp/skills/rite-status/SKILL.md +1 -1
  548. package/pack/generated/omp/skills/rite-temper/SKILL.md +1 -1
  549. package/pack/generated/omp/skills/rite-temper/reference/review-dimensions.md +2 -2
  550. package/pack/generated/omp/skills/rite-temper/reference/scope-modes.md +2 -2
  551. package/pack/generated/omp/skills/rite-temper/reference/significance.md +2 -2
  552. package/pack/generated/omp/skills/rite-vet/SKILL.md +11 -5
  553. package/pack/generated/omp/skills/rite-vet/reference/artifacts.md +10 -3
  554. package/pack/generated/omp/skills/rite-vet/reference/depth.md +2 -2
  555. package/pack/generated/omp/skills/rite-vet/reference/review-axes.md +2 -2
  556. package/pack/generated/omp/skills/rite-zoom-out/SKILL.md +6 -6
  557. package/pack/generated/pi/agents/devrites-code-reviewer.md +9 -5
  558. package/pack/generated/pi/agents/devrites-devex-reviewer.md +5 -4
  559. package/pack/generated/pi/agents/devrites-doubt-reviewer.md +4 -4
  560. package/pack/generated/pi/agents/devrites-evidence-scout.md +3 -2
  561. package/pack/generated/pi/agents/devrites-frontend-reviewer.md +5 -4
  562. package/pack/generated/pi/agents/devrites-performance-reviewer.md +5 -5
  563. package/pack/generated/pi/agents/devrites-plan-drafter.md +4 -2
  564. package/pack/generated/pi/agents/devrites-plan-reviewer.md +5 -5
  565. package/pack/generated/pi/agents/devrites-proof-runner.md +1 -1
  566. package/pack/generated/pi/agents/devrites-retrospector.md +1 -1
  567. package/pack/generated/pi/agents/devrites-security-auditor.md +4 -4
  568. package/pack/generated/pi/agents/devrites-simplifier-reviewer.md +5 -4
  569. package/pack/generated/pi/agents/devrites-slice-wright.md +18 -9
  570. package/pack/generated/pi/agents/devrites-spec-reviewer.md +4 -4
  571. package/pack/generated/pi/agents/devrites-strategy-reviewer.md +5 -6
  572. package/pack/generated/pi/agents/devrites-test-analyst.md +7 -4
  573. package/pack/generated/pi/agents/devrites-upgrade-planner.md +1 -1
  574. package/pack/generated/pi/agents/fast-builder.md +4 -2
  575. package/pack/generated/pi/agents/fast-checker.md +3 -2
  576. package/pack/generated/pi/agents/fast-critic.md +3 -2
  577. package/pack/generated/pi/agents/fast-planner.md +3 -3
  578. package/pack/generated/pi/agents/overhaul-backend-engineer.md +1 -1
  579. package/pack/generated/pi/agents/overhaul-boundary.md +1 -1
  580. package/pack/generated/pi/agents/overhaul-craft.md +1 -1
  581. package/pack/generated/pi/agents/overhaul-frontend-engineer.md +1 -1
  582. package/pack/generated/pi/agents/overhaul-implementer.md +1 -1
  583. package/pack/generated/pi/agents/overhaul-recon.md +6 -5
  584. package/pack/generated/pi/agents/overhaul-specialist.md +1 -1
  585. package/pack/generated/pi/agents/overhaul-verifier.md +1 -1
  586. package/pack/generated/pi/prompts/rite-autocomplete.md +1 -1
  587. package/pack/generated/pi/skills/devrites-api-interface/SKILL.md +1 -1
  588. package/pack/generated/pi/skills/devrites-audit/SKILL.md +1 -1
  589. package/pack/generated/pi/skills/devrites-debug-recovery/SKILL.md +1 -1
  590. package/pack/generated/pi/skills/devrites-doubt/SKILL.md +5 -5
  591. package/pack/generated/pi/skills/devrites-frontend-craft/reference/reuse-first.md +3 -3
  592. package/pack/generated/pi/skills/devrites-interview/SKILL.md +1 -1
  593. package/pack/generated/pi/skills/devrites-lib/SKILL.md +11 -6
  594. package/pack/generated/pi/skills/devrites-lib/reference/orchestration-profiles.md +2 -0
  595. package/pack/generated/pi/skills/devrites-lib/reference/parallel-dispatch.md +25 -14
  596. package/pack/generated/pi/skills/devrites-lib/reference/standards/README.md +2 -1
  597. package/pack/generated/pi/skills/devrites-lib/reference/standards/afk-hitl.md +11 -3
  598. package/pack/generated/pi/skills/devrites-lib/reference/standards/agents.md +43 -19
  599. package/pack/generated/pi/skills/devrites-lib/reference/standards/architecture-health.md +1 -1
  600. package/pack/generated/pi/skills/devrites-lib/reference/standards/code-index.md +111 -0
  601. package/pack/generated/pi/skills/devrites-lib/reference/standards/code-navigation.md +13 -63
  602. package/pack/generated/pi/skills/devrites-lib/reference/standards/context-hygiene.md +8 -9
  603. package/pack/generated/pi/skills/devrites-lib/reference/standards/core.md +14 -1
  604. package/pack/generated/pi/skills/devrites-lib/reference/standards/deprecation.md +1 -1
  605. package/pack/generated/pi/skills/devrites-lib/reference/standards/gates.md +10 -1
  606. package/pack/generated/pi/skills/devrites-lib/reference/standards/performance.md +14 -0
  607. package/pack/generated/pi/skills/devrites-lib/reference/standards/security.md +4 -0
  608. package/pack/generated/pi/skills/devrites-lib/reference/standards/testing.md +3 -1
  609. package/pack/generated/pi/skills/devrites-lib/reference/standards/tooling.md +9 -8
  610. package/pack/generated/pi/skills/devrites-lib/reference/standards/windows.md +3 -2
  611. package/pack/generated/pi/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
  612. package/pack/generated/pi/skills/devrites-lib/reference/workspace-artifact-schema.md +16 -16
  613. package/pack/generated/pi/skills/devrites-ux-shape/SKILL.md +1 -1
  614. package/pack/generated/pi/skills/overhaul/references/orchestration.md +3 -2
  615. package/pack/generated/pi/skills/rite/SKILL.md +1 -1
  616. package/pack/generated/pi/skills/rite-adopt/SKILL.md +1 -1
  617. package/pack/generated/pi/skills/rite-adopt/reference/adoption.md +1 -1
  618. package/pack/generated/pi/skills/rite-autocomplete/SKILL.md +11 -6
  619. package/pack/generated/pi/skills/rite-autocomplete/reference/lookahead.md +50 -0
  620. package/pack/generated/pi/skills/rite-autocomplete/reference/loop.md +7 -0
  621. package/pack/generated/pi/skills/rite-build/SKILL.md +4 -3
  622. package/pack/generated/pi/skills/rite-build/reference/afk-discipline.md +2 -0
  623. package/pack/generated/pi/skills/rite-build/reference/checkpoint-protocol.md +4 -1
  624. package/pack/generated/pi/skills/rite-build/reference/checkpoint.md +2 -0
  625. package/pack/generated/pi/skills/rite-build/reference/one-slice-cycle.md +1 -1
  626. package/pack/generated/pi/skills/rite-build/reference/output.md +2 -0
  627. package/pack/generated/pi/skills/rite-build/reference/parallel-batch.md +22 -12
  628. package/pack/generated/pi/skills/rite-build/reference/phase-contract.md +13 -3
  629. package/pack/generated/pi/skills/rite-build/reference/spec-drift-guard.md +4 -0
  630. package/pack/generated/pi/skills/rite-build/reference/wright-dispatch.md +42 -25
  631. package/pack/generated/pi/skills/rite-clarify/SKILL.md +1 -1
  632. package/pack/generated/pi/skills/rite-converge/SKILL.md +4 -4
  633. package/pack/generated/pi/skills/rite-converge/reference/convergence-assessment.md +3 -3
  634. package/pack/generated/pi/skills/rite-define/SKILL.md +10 -5
  635. package/pack/generated/pi/skills/rite-doctor/SKILL.md +17 -2
  636. package/pack/generated/pi/skills/rite-dogfood/SKILL.md +1 -1
  637. package/pack/generated/pi/skills/rite-explain/SKILL.md +1 -1
  638. package/pack/generated/pi/skills/rite-explain/reference/intake.md +1 -1
  639. package/pack/generated/pi/skills/rite-fast/SKILL.md +1 -1
  640. package/pack/generated/pi/skills/rite-handoff/SKILL.md +3 -3
  641. package/pack/generated/pi/skills/rite-handoff/reference/handoff-template.md +1 -1
  642. package/pack/generated/pi/skills/rite-plan/SKILL.md +4 -4
  643. package/pack/generated/pi/skills/rite-plan/reference/slicing.md +3 -2
  644. package/pack/generated/pi/skills/rite-polish/SKILL.md +6 -3
  645. package/pack/generated/pi/skills/rite-prove/SKILL.md +1 -1
  646. package/pack/generated/pi/skills/rite-quick/SKILL.md +1 -1
  647. package/pack/generated/pi/skills/rite-resolve/SKILL.md +1 -1
  648. package/pack/generated/pi/skills/rite-review/SKILL.md +4 -4
  649. package/pack/generated/pi/skills/rite-seal/SKILL.md +2 -2
  650. package/pack/generated/pi/skills/rite-ship/SKILL.md +1 -1
  651. package/pack/generated/pi/skills/rite-spec/SKILL.md +3 -2
  652. package/pack/generated/pi/skills/rite-spec/reference/investigation.md +5 -5
  653. package/pack/generated/pi/skills/rite-spec/reference/spec-template.md +1 -1
  654. package/pack/generated/pi/skills/rite-spec/reference/state-workspace.md +6 -4
  655. package/pack/generated/pi/skills/rite-status/SKILL.md +1 -1
  656. package/pack/generated/pi/skills/rite-temper/SKILL.md +1 -1
  657. package/pack/generated/pi/skills/rite-temper/reference/review-dimensions.md +2 -2
  658. package/pack/generated/pi/skills/rite-temper/reference/scope-modes.md +2 -2
  659. package/pack/generated/pi/skills/rite-temper/reference/significance.md +2 -2
  660. package/pack/generated/pi/skills/rite-vet/SKILL.md +11 -5
  661. package/pack/generated/pi/skills/rite-vet/reference/artifacts.md +10 -3
  662. package/pack/generated/pi/skills/rite-vet/reference/depth.md +2 -2
  663. package/pack/generated/pi/skills/rite-vet/reference/review-axes.md +2 -2
  664. package/pack/generated/pi/skills/rite-zoom-out/SKILL.md +6 -6
  665. package/package.json +1 -1
  666. package/scripts/build-host-artifacts.sh +5 -4
  667. package/scripts/omp-generate.sh +3 -12
  668. package/scripts/pi-generate.sh +5 -51
@@ -0,0 +1,201 @@
1
+ package acceptance
2
+
3
+ import (
4
+ "context"
5
+ "crypto/sha256"
6
+ "encoding/hex"
7
+ "fmt"
8
+ "io"
9
+ "os"
10
+ "path/filepath"
11
+ "regexp"
12
+ "strconv"
13
+ "strings"
14
+ "time"
15
+
16
+ "github.com/devrites/devrites/internal/devritespaths"
17
+ "github.com/devrites/devrites/internal/state"
18
+ )
19
+
20
+ const preconditionsUsage = "usage: devrites-engine check preconditions <slug> [--slice SLICE-###] [--timeout N]"
21
+
22
+ var preDispatchRunAtRE = regexp.MustCompile(`(?i)^pre-dispatch SLICE-\d+$`)
23
+
24
+ // PreflightGateID names a preflight row's transcript directory. The command
25
+ // and cwd digest keeps two rows sharing a Gate cell apart and retires a
26
+ // transcript the moment its row's command changes.
27
+ func PreflightGateID(row PreflightRow) string {
28
+ sum := sha256.Sum256([]byte(row.Command + "\x00" + row.Cwd))
29
+ return "preflight-" + valueOr(row.Gate, "row") + "-" + hex.EncodeToString(sum[:4])
30
+ }
31
+
32
+ // PreflightRowsPassed reports whether every row has a passing transcript in
33
+ // the feature workspace (see PreflightPassed).
34
+ func PreflightRowsPassed(root, slug string, rows []PreflightRow) (bool, error) {
35
+ work, err := devritespaths.ExistingFeatureDirChecked(root, slug)
36
+ if err != nil {
37
+ return false, err
38
+ }
39
+ for _, row := range rows {
40
+ if !PreflightPassed(work, row) {
41
+ return false, nil
42
+ }
43
+ }
44
+ return true, nil
45
+ }
46
+
47
+ // PreflightPassed reports whether the row's newest transcript under
48
+ // <work>/references/gates/ records RESULT: pass. The transcript records its
49
+ // candidate but the lookup does not compare it: Vet writes workspace artifacts
50
+ // after the run, and only a change to the row's command or cwd retires a pass.
51
+ func PreflightPassed(work string, row PreflightRow) bool {
52
+ dir := filepath.Join(work, "references", "gates", unsafeNameRE.ReplaceAllString(PreflightGateID(row), "_"))
53
+ entries, err := os.ReadDir(dir)
54
+ if err != nil {
55
+ return false
56
+ }
57
+ newest, newestTime := "", time.Time{}
58
+ for _, entry := range entries {
59
+ info, err := entry.Info()
60
+ if err != nil || !info.Mode().IsRegular() || !strings.HasSuffix(entry.Name(), ".log") {
61
+ continue
62
+ }
63
+ if newest == "" || info.ModTime().After(newestTime) {
64
+ newest, newestTime = entry.Name(), info.ModTime()
65
+ }
66
+ }
67
+ if newest == "" {
68
+ return false
69
+ }
70
+ // #nosec G304 -- transcript path built from the workspace and a sanitized row id
71
+ body, err := os.ReadFile(filepath.Join(dir, newest))
72
+ // Only the header counts: command output could print the verdict line.
73
+ header, _, _ := strings.Cut(string(body), "--- OUTPUT ---")
74
+ return err == nil && strings.Contains(header, "\nRESULT: pass\n")
75
+ }
76
+
77
+ // RunPreconditions is `check preconditions <slug> [--slice S]`: it executes
78
+ // the Build-entry preflight rows whose `Run at` is `vet` (or, with --slice,
79
+ // `pre-dispatch <S>`), writes one candidate-bound transcript per row, and exits
80
+ // ExitBlocked on any failure. Rows are the approved surface itself, so nothing
81
+ // outside test-plan.md runs; `action` rows and rows without a `Run at` cell
82
+ // never run here.
83
+ func RunPreconditions(root string, args []string, stdout, stderr io.Writer) int {
84
+ var slug, slice string
85
+ timeout := DefaultTimeout
86
+ for i := 0; i < len(args); i++ {
87
+ switch {
88
+ case (args[i] == "--slice" || args[i] == "--timeout") && i+1 < len(args):
89
+ if args[i] == "--slice" {
90
+ slice = args[i+1]
91
+ } else if n, err := strconv.Atoi(args[i+1]); err == nil && n > 0 {
92
+ timeout = time.Duration(n) * time.Second
93
+ } else {
94
+ fmt.Fprintln(stderr, preconditionsUsage)
95
+ return ExitUsage
96
+ }
97
+ i++
98
+ case strings.HasPrefix(args[i], "-") || slug != "":
99
+ fmt.Fprintln(stderr, preconditionsUsage)
100
+ return ExitUsage
101
+ default:
102
+ slug = args[i]
103
+ }
104
+ }
105
+ runAt := "vet"
106
+ if slice != "" {
107
+ runAt = "pre-dispatch " + slice
108
+ }
109
+ if slug == "" || (slice != "" && !preDispatchRunAtRE.MatchString(runAt)) {
110
+ fmt.Fprintln(stderr, preconditionsUsage)
111
+ return ExitUsage
112
+ }
113
+ work, ledgerPath, testPlanPath, project, err := featurePaths(root, slug)
114
+ if err != nil {
115
+ fmt.Fprintf(stderr, "check preconditions: %v\n", err)
116
+ return ExitBlocked
117
+ }
118
+ var plan []byte
119
+ if err := state.WithFeatureLock(root, slug, func() error {
120
+ var err error
121
+ // #nosec G304 -- workspace artifact path resolved from the operator root
122
+ plan, err = os.ReadFile(testPlanPath)
123
+ return err
124
+ }); err != nil {
125
+ fmt.Fprintf(stderr, "check preconditions: %v\n", err)
126
+ return ExitBlocked
127
+ }
128
+ rows, _ := PreflightRows(plan)
129
+ fmt.Fprintf(stdout, "feature: %s\nrun-at: %s\n", slug, runAt)
130
+
131
+ // The gates lock serializes execution and transcript attempt numbering
132
+ // with `gates run` and any concurrent run of the same row.
133
+ failed, ran := false, false
134
+ lockErr := state.WithLock(ledgerPath+".lock", func() error {
135
+ var err error
136
+ failed, ran, err = runPreflightRows(root, slug, work, project, runAt, rows, timeout, stdout)
137
+ return err
138
+ })
139
+ if lockErr != nil {
140
+ fmt.Fprintf(stderr, "check preconditions: %v\n", lockErr)
141
+ return ExitBlocked
142
+ }
143
+ switch {
144
+ case failed:
145
+ fmt.Fprintln(stdout, "result: fail")
146
+ return ExitBlocked
147
+ case !ran:
148
+ fmt.Fprintln(stdout, "result: none")
149
+ default:
150
+ fmt.Fprintln(stdout, "result: pass")
151
+ }
152
+ return ExitOK
153
+ }
154
+
155
+ // runPreflightRows executes the rows whose Run at equals runAt and writes their
156
+ // transcripts. It reports whether any row failed or carried an invalid Run at,
157
+ // and whether any row ran.
158
+ func runPreflightRows(root, slug, work, project, runAt string, rows []PreflightRow, timeout time.Duration, stdout io.Writer) (bool, bool, error) {
159
+ before := candidateLabel(root, slug)
160
+ failed := false
161
+ doc := &Document{}
162
+ var results []GateResult
163
+ for _, row := range rows {
164
+ lower := strings.ToLower(row.RunAt)
165
+ if lower != "" && lower != "vet" && lower != "action" && !preDispatchRunAtRE.MatchString(row.RunAt) {
166
+ fmt.Fprintf(stdout, "row %s: invalid Run at %q (want vet, pre-dispatch SLICE-###, or action)\n", valueOr(row.Gate, row.Command), row.RunAt)
167
+ failed = true
168
+ continue
169
+ }
170
+ if !strings.EqualFold(row.RunAt, runAt) {
171
+ continue
172
+ }
173
+ gate := &Gate{ID: PreflightGateID(row), Title: row.Gate, Check: row.Command, Cwd: row.Cwd,
174
+ Expect: "exit 0 (Expected: " + valueOr(row.Expected, "unstated") + ")"}
175
+ cwd := project
176
+ if row.Cwd != "" {
177
+ cwd = filepath.Join(project, filepath.FromSlash(row.Cwd))
178
+ }
179
+ started := time.Now().UTC()
180
+ outcome := Execute(context.Background(), row.Command, cwd, timeout)
181
+ passed := outcome.Err == nil && outcome.ExitCode == 0
182
+ doc.Gates = append(doc.Gates, gate)
183
+ results = append(results, GateResult{ID: gate.ID, Ran: true, Passed: passed, Outcome: outcome, Started: started, Ended: time.Now().UTC()})
184
+ if passed {
185
+ fmt.Fprintf(stdout, "row %s: pass\n", gate.ID)
186
+ } else {
187
+ fmt.Fprintf(stdout, "row %s: fail (%s)\n", gate.ID, exitLabel(outcome))
188
+ failed = true
189
+ }
190
+ }
191
+ if len(results) > 0 {
192
+ paths, err := writeTranscripts(work, doc, results, before, candidateLabel(root, slug))
193
+ for _, path := range paths {
194
+ fmt.Fprintf(stdout, "transcript: %s\n", path)
195
+ }
196
+ if err != nil {
197
+ return failed, true, fmt.Errorf("transcript: %w", err)
198
+ }
199
+ }
200
+ return failed, len(results) > 0, nil
201
+ }
@@ -0,0 +1,76 @@
1
+ // Package anchor matches a quoted line against file text: whitespace-normalised
2
+ // containment inside a line range, with quotes too short to identify a line
3
+ // rejected. /overhaul admit and `check anchors` share it so both admit the
4
+ // same quotes.
5
+ package anchor
6
+
7
+ import (
8
+ "strings"
9
+ "unicode/utf8"
10
+ )
11
+
12
+ // MinRunes is the shortest quote (non-space runes) that anchors on its own; a
13
+ // shorter one anchors only when it is the whole cited window.
14
+ const MinRunes = 8
15
+
16
+ // Result is the outcome of matching one quote.
17
+ type Result int
18
+
19
+ const (
20
+ NotFound Result = iota
21
+ Found
22
+ TooShort
23
+ )
24
+
25
+ // Normalize collapses every whitespace run to one space and trims the ends.
26
+ func Normalize(s string) string { return strings.Join(strings.Fields(s), " ") }
27
+
28
+ // Lines decodes b as text (invalid UTF-8 replaced) split like Python's str.splitlines.
29
+ func Lines(b []byte) []string { return Splitlines(strings.ToValidUTF8(string(b), "�")) }
30
+
31
+ // Splitlines is Python's str.splitlines().
32
+ func Splitlines(s string) []string {
33
+ var out []string
34
+ start := 0
35
+ for i := 0; i < len(s); {
36
+ r, size := utf8.DecodeRuneInString(s[i:])
37
+ i += size
38
+ switch r {
39
+ case '\n', '\r', '\v', '\f', 0x1c, 0x1d, 0x1e, 0x85, 0x2028, 0x2029:
40
+ out = append(out, s[start:i-size])
41
+ if r == '\r' && i < len(s) && s[i] == '\n' {
42
+ i++
43
+ }
44
+ start = i
45
+ }
46
+ }
47
+ if start < len(s) {
48
+ out = append(out, s[start:])
49
+ }
50
+ return out
51
+ }
52
+
53
+ // At matches quote inside lines start..end (1-based, inclusive). The caller
54
+ // checks 1 <= start <= end <= len(lines).
55
+ func At(lines []string, start, end int, quote string) Result {
56
+ q := Normalize(quote)
57
+ w := Normalize(strings.Join(lines[start-1:end], " "))
58
+ if q == "" || !strings.Contains(w, q) {
59
+ return NotFound
60
+ }
61
+ if utf8.RuneCountInString(strings.ReplaceAll(q, " ", "")) < MinRunes && q != w {
62
+ return TooShort
63
+ }
64
+ return Found
65
+ }
66
+
67
+ // Find returns every 1-based line whose own text At admits quote on.
68
+ func Find(lines []string, quote string) []int {
69
+ var hits []int
70
+ for i := range lines {
71
+ if At(lines, i+1, i+1, quote) == Found {
72
+ hits = append(hits, i+1)
73
+ }
74
+ }
75
+ return hits
76
+ }
@@ -0,0 +1,144 @@
1
+ package gate
2
+
3
+ import (
4
+ "fmt"
5
+ "regexp"
6
+ "slices"
7
+ "strings"
8
+
9
+ "github.com/devrites/devrites/internal/acceptance"
10
+ "github.com/devrites/devrites/internal/markdowntext"
11
+ "github.com/devrites/devrites/internal/state"
12
+ )
13
+
14
+ var (
15
+ // testDriverRE matches a test driver script: a file under a scripts/
16
+ // directory whose basename carries a whole test/tests word
17
+ // (scripts/dev-run-test.sh, scripts/run-tests.mjs). Word boundaries keep
18
+ // latest-release.sh and attest.sh out, and unit test files outside
19
+ // scripts/ are run by a driver rather than being one.
20
+ testDriverRE = regexp.MustCompile(`(?:^|/)scripts/(?:[^/]+/)*(?:[^/]*[-_.])?tests?(?:[-_.][^/]*)?\.(?:sh|bash|py|mjs|js)$`)
21
+ // writerAllowlistRE reads a tasks.md slice field the way the task parser
22
+ // does: a column-1 `Writer allowlist:` line of `,`/`;` separated paths.
23
+ writerAllowlistRE = regexp.MustCompile(`(?im)^writer allowlist:[ \t]*(.*)$`)
24
+ // touchedPresentRE reads a `present` row of touched-files.md's candidate
25
+ // manifest table (| State | File | Slice | Reason |).
26
+ touchedPresentRE = regexp.MustCompile("(?m)^\\|[ \t]*present[ \t]*\\|[ \t]*`([^`]+)`[ \t]*\\|")
27
+ // driverWaiverRE reads `Driver waiver: <path> — <DEC-id> <reason>` from
28
+ // gates.md; the first DEC id on the line is the backing decision, and a
29
+ // reason must follow it after a space or `:`/`,`/`.`/`;`.
30
+ driverWaiverRE = regexp.MustCompile("(?m)^Driver waiver:[ \t]*`?([^\\s`]+)`?.*?\\b(DEC-[A-Za-z0-9-]*[A-Za-z0-9])[ \t:,.;]+\\S")
31
+ decisionHeadingRE = regexp.MustCompile(`(?m)^#{1,6}[ \t]+(DEC-[A-Za-z0-9-]*[A-Za-z0-9])`)
32
+ )
33
+
34
+ // testDriverProblems blocks a test driver script the feature plans to write (a
35
+ // tasks.md Writer allowlist, before proof) or touched (a touched-files.md
36
+ // present row, once proof is required) when no gates.md CHECK executes it and
37
+ // no `Driver waiver:` line cites a DEC id that decisions.md records. A touched
38
+ // driver no gate runs can be red at seal unnoticed. Waived drivers are returned
39
+ // separately so the gate output names every deferral.
40
+ func testDriverProblems(observation *state.WorkspaceObservation, policy state.PhasePolicy) (problems, waived []string) {
41
+ if !slices.Contains(policy.RequiredArtifacts, state.ArtifactPath(acceptance.GatesFile)) {
42
+ return nil, nil
43
+ }
44
+ gatesText := structuralFact(observation, state.ArtifactPath(acceptance.GatesFile))
45
+ doc := acceptance.ParseLedger(gatesText)
46
+ if len(doc.Errors) > 0 {
47
+ return nil, nil // gateLedgerProblems already blocks a malformed ledger
48
+ }
49
+
50
+ source, re := "tasks.md", writerAllowlistRE
51
+ if policy.ProofRequired {
52
+ source, re = "touched-files.md", touchedPresentRE
53
+ }
54
+ var drivers []string
55
+ for _, match := range re.FindAllStringSubmatch(structuralFact(observation, state.ArtifactPath(source)), -1) {
56
+ for _, part := range strings.FieldsFunc(match[1], func(r rune) bool { return r == ',' || r == ';' }) {
57
+ driver := strings.TrimPrefix(strings.Trim(strings.TrimSpace(part), "`'\""), "./")
58
+ if testDriverRE.MatchString(driver) && !slices.Contains(drivers, driver) {
59
+ drivers = append(drivers, driver)
60
+ }
61
+ }
62
+ }
63
+ if len(drivers) == 0 {
64
+ return nil, nil
65
+ }
66
+ slices.Sort(drivers)
67
+
68
+ waivers := map[string]string{}
69
+ for _, match := range driverWaiverRE.FindAllStringSubmatch(gatesText, -1) {
70
+ waivers[strings.TrimPrefix(match[1], "./")] = match[2]
71
+ }
72
+ decisions := map[string]bool{}
73
+ for _, match := range decisionHeadingRE.FindAllStringSubmatch(structuralFact(observation, "decisions.md"), -1) {
74
+ decisions[match[1]] = true
75
+ }
76
+ for _, driver := range drivers {
77
+ if driverExecuted(driver, doc.Gates) {
78
+ continue
79
+ }
80
+ decision, ok := waivers[driver]
81
+ switch {
82
+ case !ok:
83
+ problems = append(problems, fmt.Sprintf(
84
+ "test driver %s is in %s but no gates.md CHECK executes it; add a CHECK or a DEC-backed `Driver waiver: %s — DEC-### <reason>` line",
85
+ driver, source, driver))
86
+ case !decisions[decision]:
87
+ problems = append(problems, fmt.Sprintf(
88
+ "test driver %s waiver cites %s, which has no decisions.md heading; record that decision or add a CHECK",
89
+ driver, decision))
90
+ default:
91
+ waived = append(waived, fmt.Sprintf("unexecuted driver (waived by %s): %s", decision, driver))
92
+ }
93
+ }
94
+ return problems, waived
95
+ }
96
+
97
+ // driverExecuted reports whether a CHECK names the driver by its
98
+ // repository-relative path, or by its path relative to the gate's CWD.
99
+ func driverExecuted(driver string, gates []*acceptance.Gate) bool {
100
+ for _, gate := range gates {
101
+ if gate.Check == "" {
102
+ continue
103
+ }
104
+ if namesPath(gate.Check, driver) {
105
+ return true
106
+ }
107
+ cwd := strings.TrimSuffix(strings.TrimPrefix(gate.Cwd, "./"), "/")
108
+ if rel, ok := strings.CutPrefix(driver, cwd+"/"); ok && namesPath(gate.Check, rel) {
109
+ return true
110
+ }
111
+ }
112
+ return false
113
+ }
114
+
115
+ // namesPath reports whether check contains path as a whole path: at the start,
116
+ // or after whitespace, a quote, '=' or a leading "./" or "../", so
117
+ // tools/scripts/test.sh never satisfies scripts/test.sh.
118
+ func namesPath(check, path string) bool {
119
+ for from := 0; ; {
120
+ i := strings.Index(check[from:], path)
121
+ if i < 0 {
122
+ return false
123
+ }
124
+ at := from + i
125
+ if at == 0 || strings.ContainsRune(" \t'\"=", rune(check[at-1])) || strings.HasSuffix(check[:at], "./") {
126
+ return true
127
+ }
128
+ from = at + 1
129
+ }
130
+ }
131
+
132
+ // structuralFact returns a present artifact's text with fenced examples
133
+ // masked, or "" when it is absent or unreadable.
134
+ func structuralFact(observation *state.WorkspaceObservation, path state.ArtifactPath) string {
135
+ fact, ok := observation.Fact(path)
136
+ if !ok || fact.State() != state.ArtifactPresent {
137
+ return ""
138
+ }
139
+ structural, err := markdowntext.Structural(fact.Bytes())
140
+ if err != nil {
141
+ return ""
142
+ }
143
+ return string(structural)
144
+ }
@@ -7,6 +7,7 @@ package gate
7
7
  import (
8
8
  "fmt"
9
9
  "regexp"
10
+ "slices"
10
11
  "strings"
11
12
 
12
13
  "github.com/devrites/devrites/internal/markdowntext"
@@ -38,6 +39,7 @@ type Result struct {
38
39
  Diagnostics []state.ArtifactDiagnostic
39
40
  AddContentFiles []string
40
41
  StateProblems []string
42
+ Notes []string // non-blocking lines printed pass or blocked, e.g. waived test drivers
41
43
  Blocked bool
42
44
  ReasonID reason.ID
43
45
  }
@@ -53,6 +55,20 @@ func Check(kind Kind, root, slug string) (*Result, error) {
53
55
  if err != nil {
54
56
  return nil, fmt.Errorf("gate %s: %w", kind, err)
55
57
  }
58
+ for _, problem := range dependencyDryRunProblems(kind, root, observation) {
59
+ result.StateProblems = append(result.StateProblems, "preconditions: "+problem)
60
+ if !result.Blocked {
61
+ result.Blocked = true
62
+ result.ReasonID = ResultReasonID(kind, true)
63
+ }
64
+ }
65
+ if kind == Readiness {
66
+ for _, problem := range predecessorProblems(root, observation) {
67
+ result.StateProblems = append(result.StateProblems, "predecessor: "+problem)
68
+ result.Blocked = true
69
+ result.ReasonID = reason.GateReadinessStale
70
+ }
71
+ }
56
72
  for _, problem := range unsanctionedRootFiles(observation) {
57
73
  result.StateProblems = append(result.StateProblems, "placement: "+problem)
58
74
  // Keep a more specific reason (readiness-stale) when the observation
@@ -150,6 +166,15 @@ func checkObservation(kind Kind, observation *state.WorkspaceObservation) (*Resu
150
166
  blocked = true
151
167
  }
152
168
  }
169
+ var notes []string
170
+ if len(missingFiles) == 0 {
171
+ driverProblems, waived := testDriverProblems(observation, policy)
172
+ for _, problem := range driverProblems {
173
+ stateProblems = append(stateProblems, "gates: "+problem)
174
+ blocked = true
175
+ }
176
+ notes = waived
177
+ }
153
178
  if len(missingFiles) == 0 {
154
179
  for _, problem := range artifactBudgetProblems(observation, policy) {
155
180
  stateProblems = append(stateProblems, "budget: "+problem)
@@ -165,10 +190,7 @@ func checkObservation(kind Kind, observation *state.WorkspaceObservation) (*Resu
165
190
  continue
166
191
  }
167
192
  if diagnostic, has := fact.Diagnostic(); has && diagnostic.Code == state.DiagnosticFileTooLarge {
168
- stateProblems = append(stateProblems, fmt.Sprintf(
169
- "budget: %s exceeds the %d-byte artifact cap; relocate history (history/<file>-<YYYYMMDD>.md) or split the feature via /rite-plan revise|course-correct",
170
- artifact, state.MaxArtifactBytes,
171
- ))
193
+ stateProblems = append(stateProblems, "budget: "+readCapProblem(artifact))
172
194
  blocked = true
173
195
  }
174
196
  }
@@ -196,6 +218,7 @@ func checkObservation(kind Kind, observation *state.WorkspaceObservation) (*Resu
196
218
  Diagnostics: diagnostics,
197
219
  AddContentFiles: addContentFiles,
198
220
  StateProblems: stateProblems,
221
+ Notes: notes,
199
222
  Blocked: blocked,
200
223
  }
201
224
  result.ReasonID = ResultReasonID(kind, blocked)
@@ -205,18 +228,25 @@ func checkObservation(kind Kind, observation *state.WorkspaceObservation) (*Resu
205
228
  return result, nil
206
229
  }
207
230
 
208
- // artifactBudgetProblems blocks a required artifact only on a material overshoot
209
- // (>= state.BudgetBlockFactor of a line or byte budget) with no structural
210
- // `Budget override:` line. Smaller overshoots stay advisory and are reported by
211
- // `orient`.
231
+ // artifactBudgetProblems blocks every present budget-gated artifact, required
232
+ // by the phase or not (an unrequired drift.md once grew to 7x its budget), on a
233
+ // material overshoot (>= state.BudgetBlockFactor of a line or byte budget) that
234
+ // no bounded `Budget override: <=N lines; <reason>` line covers. Smaller
235
+ // overshoots stay advisory and are reported by `orient`.
212
236
  func artifactBudgetProblems(observation *state.WorkspaceObservation, policy state.PhasePolicy) []string {
213
237
  var problems []string
214
- for _, artifact := range policy.RequiredArtifacts {
238
+ for _, artifact := range state.BudgetGatedArtifacts() {
215
239
  fact, ok := observation.Fact(artifact)
216
- if !ok || fact.State() != state.ArtifactPresent {
240
+ if !ok {
217
241
  continue
218
242
  }
219
- if !state.ArtifactBudgetGateApplies(string(artifact)) {
243
+ // A required artifact over the read cap is already reported with the
244
+ // missing files; an unrequired one is caught only here.
245
+ if diagnostic, has := fact.Diagnostic(); has && diagnostic.Code == state.DiagnosticFileTooLarge && !slices.Contains(policy.RequiredArtifacts, artifact) {
246
+ problems = append(problems, readCapProblem(artifact))
247
+ continue
248
+ }
249
+ if fact.State() != state.ArtifactPresent {
220
250
  continue
221
251
  }
222
252
  status, ok := state.ArtifactBudget(string(artifact), fact.Bytes())
@@ -224,14 +254,21 @@ func artifactBudgetProblems(observation *state.WorkspaceObservation, policy stat
224
254
  continue
225
255
  }
226
256
  problems = append(problems, fmt.Sprintf(
227
- "%s is %d lines/%d bytes, at or above %gx its %d-line/%d-byte budget; relocate history (history/<file>-<YYYYMMDD>.md) or split the feature via /rite-plan revise|course-correct, or record a structural `Budget override: <reason>` line",
257
+ "%s is %d lines/%d bytes, at or above %gx its %d-line/%d-byte budget; %s",
228
258
  status.File, status.Lines, status.Bytes, state.BudgetBlockFactor,
229
- status.LineBudget, status.ByteBudget,
259
+ status.LineBudget, status.ByteBudget, state.BudgetRemedy(status.LineBudget),
230
260
  ))
231
261
  }
232
262
  return problems
233
263
  }
234
264
 
265
+ func readCapProblem(artifact state.ArtifactPath) string {
266
+ return fmt.Sprintf(
267
+ "%s exceeds the %d-byte artifact cap; relocate history (history/<file>-<YYYYMMDD>.md) or split the feature via /rite-plan revise|course-correct",
268
+ artifact, state.MaxArtifactBytes,
269
+ )
270
+ }
271
+
235
272
  func acceptanceMapProblems(observation *state.WorkspaceObservation, policy state.PhasePolicy) []string {
236
273
  requireTasks := phaseRequiresTasks(policy)
237
274
  requireTestPlan := phaseRequiresTestPlan(policy)
@@ -350,6 +387,9 @@ func (r *Result) Render() string {
350
387
  if !r.Blocked {
351
388
  b.WriteString("result: pass\n")
352
389
  fmt.Fprintf(&b, "reason: %s\n", r.ReasonID)
390
+ for _, note := range r.Notes {
391
+ fmt.Fprintf(&b, "note: %s\n", note)
392
+ }
353
393
  return b.String()
354
394
  }
355
395
  missing := r.MissingFiles
@@ -377,6 +417,9 @@ func (r *Result) Render() string {
377
417
  for _, problem := range r.StateProblems {
378
418
  fmt.Fprintf(&b, "invariant: %s\n", problem)
379
419
  }
420
+ for _, note := range r.Notes {
421
+ fmt.Fprintf(&b, "note: %s\n", note)
422
+ }
380
423
  fmt.Fprintf(&b, "retry: devrites-engine check %s %s\n", r.Kind, r.Slug)
381
424
  return b.String()
382
425
  }
@@ -0,0 +1,121 @@
1
+ package gate
2
+
3
+ import (
4
+ "fmt"
5
+ "path"
6
+ "regexp"
7
+ "strings"
8
+
9
+ "github.com/devrites/devrites/internal/acceptance"
10
+ "github.com/devrites/devrites/internal/state"
11
+ )
12
+
13
+ // DependencyManifests pairs each package manifest with its lockfiles; an edit
14
+ // to any of them changes dependency resolution.
15
+ var DependencyManifests = []struct {
16
+ Manifest string
17
+ Locks []string
18
+ }{
19
+ {"go.mod", []string{"go.sum"}},
20
+ {"Cargo.toml", []string{"Cargo.lock"}},
21
+ {"package.json", []string{"package-lock.json", "npm-shrinkwrap.json", "pnpm-lock.yaml", "yarn.lock", "bun.lock", "bun.lockb"}},
22
+ {"pyproject.toml", []string{"uv.lock", "poetry.lock"}},
23
+ {"Pipfile", []string{"Pipfile.lock"}},
24
+ }
25
+
26
+ // dependencyManifests are the manifest and lockfile basenames whose edit
27
+ // changes dependency resolution, which only a dry run observes before Build.
28
+ var dependencyManifests = func() map[string]bool {
29
+ names := map[string]bool{}
30
+ for _, m := range DependencyManifests {
31
+ names[m.Manifest] = true
32
+ for _, lock := range m.Locks {
33
+ names[lock] = true
34
+ }
35
+ }
36
+ return names
37
+ }()
38
+
39
+ var slicePathFieldRE = regexp.MustCompile(`(?im)^\s*(?:[-*]\s+)?(?:files likely touched|writer allowlist):\s*(.*)$`)
40
+
41
+ // dependencyDryRunProblems blocks leaving Vet while a slice that edits a
42
+ // dependency manifest lacks a `dependency-dry-run <SLICE>` Build-entry
43
+ // preflight row with `Run at` `vet` whose newest transcript passed. Test plans
44
+ // without the `Run at` column predate the requirement and keep today's
45
+ // behavior.
46
+ func dependencyDryRunProblems(kind Kind, root string, observation *state.WorkspaceObservation) []string {
47
+ if kind != Readiness {
48
+ return nil
49
+ }
50
+ if phase, err := observation.DeclaredPhase(); err != nil || phase != state.PhaseVet {
51
+ return nil
52
+ }
53
+ tasks, ok := observation.Fact("tasks.md")
54
+ plan, planOK := observation.Fact("test-plan.md")
55
+ if !ok || !planOK || tasks.State() != state.ArtifactPresent || plan.State() != state.ArtifactPresent {
56
+ return nil // the missing-artifact path already blocks it
57
+ }
58
+ rows, hasRunAt := acceptance.PreflightRows(plan.Bytes())
59
+ if !hasRunAt {
60
+ return nil
61
+ }
62
+ slug := observation.Slug()
63
+ var problems []string
64
+ for _, slice := range state.ParseTaskGraph(tasks.Bytes()).Slices {
65
+ block, _ := state.ExtractTaskSlice(tasks.Bytes(), slice.ID)
66
+ manifest := touchedManifest(block)
67
+ if manifest == "" {
68
+ continue
69
+ }
70
+ matching := dryRunRows(rows, slice.ID)
71
+ switch {
72
+ case len(matching) == 0:
73
+ problems = append(problems, fmt.Sprintf(
74
+ "%s touches %s but test-plan.md has no `dependency-dry-run %s` Build-entry preflight row with Run at `vet`; add one that applies the planned change in an isolated copy, runs the tidy/lock step, then the project's admission checks",
75
+ slice.ID, manifest, slice.ID))
76
+ default:
77
+ passed, err := acceptance.PreflightRowsPassed(root, slug, matching)
78
+ if err != nil {
79
+ return []string{fmt.Sprintf("dependency dry-run transcripts cannot be read: %v", err)}
80
+ }
81
+ if passed {
82
+ continue
83
+ }
84
+ problems = append(problems, fmt.Sprintf(
85
+ "%s dependency dry run has a row without a passing transcript; run `devrites-engine check preconditions %s` and route a failure to Plan repair",
86
+ slice.ID, slug))
87
+ }
88
+ }
89
+ return problems
90
+ }
91
+
92
+ func touchedManifest(block string) string {
93
+ for _, match := range slicePathFieldRE.FindAllStringSubmatch(block, -1) {
94
+ for _, part := range strings.FieldsFunc(match[1], func(r rune) bool { return r == ';' || r == ',' }) {
95
+ if name := path.Base(strings.Trim(strings.TrimSpace(part), "`'\"")); dependencyManifests[name] {
96
+ return name
97
+ }
98
+ }
99
+ }
100
+ return ""
101
+ }
102
+
103
+ func dryRunRows(rows []acceptance.PreflightRow, sliceID string) []acceptance.PreflightRow {
104
+ var matching []acceptance.PreflightRow
105
+ for _, row := range rows {
106
+ if strings.EqualFold(row.RunAt, "vet") && strings.Contains(row.Gate, "dependency-dry-run") &&
107
+ containsToken(row.Gate, sliceID) {
108
+ matching = append(matching, row)
109
+ }
110
+ }
111
+ return matching
112
+ }
113
+
114
+ func containsToken(text, token string) bool {
115
+ for _, field := range strings.FieldsFunc(text, func(r rune) bool { return r == ' ' || r == ',' || r == ';' }) {
116
+ if field == token {
117
+ return true
118
+ }
119
+ }
120
+ return false
121
+ }