devrites 6.9.6 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (678) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +10 -5
  3. package/SECURITY.md +3 -3
  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 +21 -19
  8. package/docs/engine/commands.md +22 -15
  9. package/docs/skills.md +1 -1
  10. package/docs/usage.md +3 -3
  11. package/engine/commands.go +8 -3
  12. package/engine/help.go +43 -16
  13. package/engine/internal/acceptance/approve.go +46 -7
  14. package/engine/internal/acceptance/cli.go +102 -0
  15. package/engine/internal/acceptance/exec.go +8 -6
  16. package/engine/internal/acceptance/ledger.go +16 -1
  17. package/engine/internal/acceptance/lint.go +9 -1
  18. package/engine/internal/acceptance/preconditions.go +201 -0
  19. package/engine/internal/anchor/anchor.go +76 -0
  20. package/engine/internal/gate/drivers.go +144 -0
  21. package/engine/internal/gate/gate.go +49 -13
  22. package/engine/internal/gate/preconditions.go +121 -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 +48 -33
  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-browser-proof/SKILL.md +33 -13
  79. package/pack/.claude/skills/devrites-browser-proof/reference/browser-performance.md +2 -1
  80. package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +1 -1
  81. package/pack/.claude/skills/devrites-doubt/SKILL.md +5 -5
  82. package/pack/.claude/skills/devrites-frontend-craft/reference/reuse-first.md +3 -3
  83. package/pack/.claude/skills/devrites-interview/SKILL.md +1 -1
  84. package/pack/.claude/skills/devrites-lib/SKILL.md +11 -6
  85. package/pack/.claude/skills/devrites-lib/reference/orchestration-profiles.md +2 -0
  86. package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +25 -14
  87. package/pack/.claude/skills/devrites-lib/reference/standards/README.md +2 -1
  88. package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +11 -3
  89. package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +43 -19
  90. package/pack/.claude/skills/devrites-lib/reference/standards/architecture-health.md +1 -1
  91. package/pack/.claude/skills/devrites-lib/reference/standards/code-index.md +111 -0
  92. package/pack/.claude/skills/devrites-lib/reference/standards/code-navigation.md +13 -63
  93. package/pack/.claude/skills/devrites-lib/reference/standards/context-hygiene.md +8 -9
  94. package/pack/.claude/skills/devrites-lib/reference/standards/core.md +14 -1
  95. package/pack/.claude/skills/devrites-lib/reference/standards/deprecation.md +1 -1
  96. package/pack/.claude/skills/devrites-lib/reference/standards/gates.md +10 -1
  97. package/pack/.claude/skills/devrites-lib/reference/standards/security.md +4 -0
  98. package/pack/.claude/skills/devrites-lib/reference/standards/testing.md +3 -1
  99. package/pack/.claude/skills/devrites-lib/reference/standards/tooling.md +9 -8
  100. package/pack/.claude/skills/devrites-lib/reference/standards/windows.md +3 -2
  101. package/pack/.claude/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
  102. package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +16 -16
  103. package/pack/.claude/skills/devrites-ux-shape/SKILL.md +1 -1
  104. package/pack/.claude/skills/overhaul/references/orchestration.md +3 -2
  105. package/pack/.claude/skills/rite/SKILL.md +1 -1
  106. package/pack/.claude/skills/rite-adopt/SKILL.md +1 -1
  107. package/pack/.claude/skills/rite-adopt/reference/adoption.md +1 -1
  108. package/pack/.claude/skills/rite-autocomplete/SKILL.md +5 -4
  109. package/pack/.claude/skills/rite-build/SKILL.md +4 -3
  110. package/pack/.claude/skills/rite-build/reference/afk-discipline.md +2 -0
  111. package/pack/.claude/skills/rite-build/reference/checkpoint-protocol.md +4 -1
  112. package/pack/.claude/skills/rite-build/reference/checkpoint.md +2 -0
  113. package/pack/.claude/skills/rite-build/reference/one-slice-cycle.md +1 -1
  114. package/pack/.claude/skills/rite-build/reference/output.md +2 -0
  115. package/pack/.claude/skills/rite-build/reference/parallel-batch.md +22 -12
  116. package/pack/.claude/skills/rite-build/reference/phase-contract.md +13 -3
  117. package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +42 -25
  118. package/pack/.claude/skills/rite-clarify/SKILL.md +1 -1
  119. package/pack/.claude/skills/rite-converge/SKILL.md +4 -4
  120. package/pack/.claude/skills/rite-converge/reference/convergence-assessment.md +3 -3
  121. package/pack/.claude/skills/rite-define/SKILL.md +10 -5
  122. package/pack/.claude/skills/rite-doctor/SKILL.md +17 -2
  123. package/pack/.claude/skills/rite-dogfood/SKILL.md +1 -1
  124. package/pack/.claude/skills/rite-explain/SKILL.md +1 -1
  125. package/pack/.claude/skills/rite-explain/reference/intake.md +1 -1
  126. package/pack/.claude/skills/rite-fast/SKILL.md +1 -1
  127. package/pack/.claude/skills/rite-handoff/SKILL.md +3 -3
  128. package/pack/.claude/skills/rite-handoff/reference/handoff-template.md +1 -1
  129. package/pack/.claude/skills/rite-harness/SKILL.md +2 -1
  130. package/pack/.claude/skills/rite-plan/SKILL.md +4 -4
  131. package/pack/.claude/skills/rite-plan/reference/slicing.md +3 -2
  132. package/pack/.claude/skills/rite-polish/SKILL.md +6 -3
  133. package/pack/.claude/skills/rite-polish/reference/harden-checklist.md +1 -1
  134. package/pack/.claude/skills/rite-prove/SKILL.md +1 -1
  135. package/pack/.claude/skills/rite-prove/reference/anti-patterns.md +1 -1
  136. package/pack/.claude/skills/rite-prove/reference/proof-ladder.md +16 -5
  137. package/pack/.claude/skills/rite-quick/SKILL.md +1 -1
  138. package/pack/.claude/skills/rite-resolve/SKILL.md +1 -1
  139. package/pack/.claude/skills/rite-review/SKILL.md +4 -4
  140. package/pack/.claude/skills/rite-seal/SKILL.md +2 -2
  141. package/pack/.claude/skills/rite-ship/SKILL.md +1 -1
  142. package/pack/.claude/skills/rite-spec/SKILL.md +1 -1
  143. package/pack/.claude/skills/rite-spec/reference/investigation.md +5 -5
  144. package/pack/.claude/skills/rite-spec/reference/spec-template.md +1 -1
  145. package/pack/.claude/skills/rite-spec/reference/state-workspace.md +6 -4
  146. package/pack/.claude/skills/rite-status/SKILL.md +1 -1
  147. package/pack/.claude/skills/rite-temper/SKILL.md +1 -1
  148. package/pack/.claude/skills/rite-temper/reference/review-dimensions.md +2 -2
  149. package/pack/.claude/skills/rite-temper/reference/scope-modes.md +2 -2
  150. package/pack/.claude/skills/rite-temper/reference/significance.md +2 -2
  151. package/pack/.claude/skills/rite-vet/SKILL.md +8 -4
  152. package/pack/.claude/skills/rite-vet/reference/artifacts.md +10 -3
  153. package/pack/.claude/skills/rite-vet/reference/depth.md +2 -2
  154. package/pack/.claude/skills/rite-vet/reference/review-axes.md +2 -2
  155. package/pack/.claude/skills/rite-zoom-out/SKILL.md +6 -6
  156. package/pack/generated/claude/agents/devrites-code-reviewer.md +9 -5
  157. package/pack/generated/claude/agents/devrites-devex-reviewer.md +5 -4
  158. package/pack/generated/claude/agents/devrites-doubt-reviewer.md +4 -4
  159. package/pack/generated/claude/agents/devrites-evidence-scout.md +3 -2
  160. package/pack/generated/claude/agents/devrites-frontend-reviewer.md +5 -4
  161. package/pack/generated/claude/agents/devrites-performance-reviewer.md +5 -5
  162. package/pack/generated/claude/agents/devrites-plan-drafter.md +4 -2
  163. package/pack/generated/claude/agents/devrites-plan-reviewer.md +5 -5
  164. package/pack/generated/claude/agents/devrites-proof-runner.md +1 -1
  165. package/pack/generated/claude/agents/devrites-retrospector.md +1 -1
  166. package/pack/generated/claude/agents/devrites-security-auditor.md +4 -4
  167. package/pack/generated/claude/agents/devrites-simplifier-reviewer.md +5 -4
  168. package/pack/generated/claude/agents/devrites-slice-wright.md +18 -9
  169. package/pack/generated/claude/agents/devrites-spec-reviewer.md +4 -4
  170. package/pack/generated/claude/agents/devrites-strategy-reviewer.md +5 -6
  171. package/pack/generated/claude/agents/devrites-test-analyst.md +7 -4
  172. package/pack/generated/claude/agents/devrites-upgrade-planner.md +1 -1
  173. package/pack/generated/claude/agents/fast-builder.md +4 -2
  174. package/pack/generated/claude/agents/fast-checker.md +3 -2
  175. package/pack/generated/claude/agents/fast-critic.md +3 -2
  176. package/pack/generated/claude/agents/fast-planner.md +3 -3
  177. package/pack/generated/claude/agents/overhaul-recon.md +5 -4
  178. package/pack/generated/claude/settings.json +19 -7
  179. package/pack/generated/claude/skills/devrites-api-interface/SKILL.md +1 -1
  180. package/pack/generated/claude/skills/devrites-audit/SKILL.md +1 -1
  181. package/pack/generated/claude/skills/devrites-browser-proof/SKILL.md +33 -13
  182. package/pack/generated/claude/skills/devrites-browser-proof/reference/browser-performance.md +2 -1
  183. package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +1 -1
  184. package/pack/generated/claude/skills/devrites-doubt/SKILL.md +5 -5
  185. package/pack/generated/claude/skills/devrites-frontend-craft/reference/reuse-first.md +3 -3
  186. package/pack/generated/claude/skills/devrites-interview/SKILL.md +1 -1
  187. package/pack/generated/claude/skills/devrites-lib/SKILL.md +11 -6
  188. package/pack/generated/claude/skills/devrites-lib/reference/orchestration-profiles.md +2 -0
  189. package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +25 -14
  190. package/pack/generated/claude/skills/devrites-lib/reference/standards/README.md +2 -1
  191. package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +11 -3
  192. package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +43 -19
  193. package/pack/generated/claude/skills/devrites-lib/reference/standards/architecture-health.md +1 -1
  194. package/pack/generated/claude/skills/devrites-lib/reference/standards/code-index.md +111 -0
  195. package/pack/generated/claude/skills/devrites-lib/reference/standards/code-navigation.md +13 -63
  196. package/pack/generated/claude/skills/devrites-lib/reference/standards/context-hygiene.md +8 -9
  197. package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +14 -1
  198. package/pack/generated/claude/skills/devrites-lib/reference/standards/deprecation.md +1 -1
  199. package/pack/generated/claude/skills/devrites-lib/reference/standards/gates.md +10 -1
  200. package/pack/generated/claude/skills/devrites-lib/reference/standards/security.md +4 -0
  201. package/pack/generated/claude/skills/devrites-lib/reference/standards/testing.md +3 -1
  202. package/pack/generated/claude/skills/devrites-lib/reference/standards/tooling.md +9 -8
  203. package/pack/generated/claude/skills/devrites-lib/reference/standards/windows.md +3 -2
  204. package/pack/generated/claude/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
  205. package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +16 -16
  206. package/pack/generated/claude/skills/devrites-ux-shape/SKILL.md +1 -1
  207. package/pack/generated/claude/skills/overhaul/references/orchestration.md +3 -2
  208. package/pack/generated/claude/skills/rite/SKILL.md +1 -1
  209. package/pack/generated/claude/skills/rite-adopt/SKILL.md +1 -1
  210. package/pack/generated/claude/skills/rite-adopt/reference/adoption.md +1 -1
  211. package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +5 -4
  212. package/pack/generated/claude/skills/rite-build/SKILL.md +4 -3
  213. package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +2 -0
  214. package/pack/generated/claude/skills/rite-build/reference/checkpoint-protocol.md +4 -1
  215. package/pack/generated/claude/skills/rite-build/reference/checkpoint.md +2 -0
  216. package/pack/generated/claude/skills/rite-build/reference/one-slice-cycle.md +1 -1
  217. package/pack/generated/claude/skills/rite-build/reference/output.md +2 -0
  218. package/pack/generated/claude/skills/rite-build/reference/parallel-batch.md +22 -12
  219. package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +13 -3
  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-harness/SKILL.md +2 -1
  233. package/pack/generated/claude/skills/rite-plan/SKILL.md +4 -4
  234. package/pack/generated/claude/skills/rite-plan/reference/slicing.md +3 -2
  235. package/pack/generated/claude/skills/rite-polish/SKILL.md +6 -3
  236. package/pack/generated/claude/skills/rite-polish/reference/harden-checklist.md +1 -1
  237. package/pack/generated/claude/skills/rite-prove/SKILL.md +1 -1
  238. package/pack/generated/claude/skills/rite-prove/reference/anti-patterns.md +1 -1
  239. package/pack/generated/claude/skills/rite-prove/reference/proof-ladder.md +16 -5
  240. package/pack/generated/claude/skills/rite-quick/SKILL.md +1 -1
  241. package/pack/generated/claude/skills/rite-resolve/SKILL.md +1 -1
  242. package/pack/generated/claude/skills/rite-review/SKILL.md +4 -4
  243. package/pack/generated/claude/skills/rite-seal/SKILL.md +2 -2
  244. package/pack/generated/claude/skills/rite-ship/SKILL.md +1 -1
  245. package/pack/generated/claude/skills/rite-spec/SKILL.md +1 -1
  246. package/pack/generated/claude/skills/rite-spec/reference/investigation.md +5 -5
  247. package/pack/generated/claude/skills/rite-spec/reference/spec-template.md +1 -1
  248. package/pack/generated/claude/skills/rite-spec/reference/state-workspace.md +6 -4
  249. package/pack/generated/claude/skills/rite-status/SKILL.md +1 -1
  250. package/pack/generated/claude/skills/rite-temper/SKILL.md +1 -1
  251. package/pack/generated/claude/skills/rite-temper/reference/review-dimensions.md +2 -2
  252. package/pack/generated/claude/skills/rite-temper/reference/scope-modes.md +2 -2
  253. package/pack/generated/claude/skills/rite-temper/reference/significance.md +2 -2
  254. package/pack/generated/claude/skills/rite-vet/SKILL.md +8 -4
  255. package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +10 -3
  256. package/pack/generated/claude/skills/rite-vet/reference/depth.md +2 -2
  257. package/pack/generated/claude/skills/rite-vet/reference/review-axes.md +2 -2
  258. package/pack/generated/claude/skills/rite-zoom-out/SKILL.md +6 -6
  259. package/pack/generated/codex/agents/devrites-code-reviewer.toml +8 -4
  260. package/pack/generated/codex/agents/devrites-devex-reviewer.toml +4 -3
  261. package/pack/generated/codex/agents/devrites-doubt-reviewer.toml +3 -3
  262. package/pack/generated/codex/agents/devrites-evidence-scout.toml +2 -1
  263. package/pack/generated/codex/agents/devrites-frontend-reviewer.toml +4 -3
  264. package/pack/generated/codex/agents/devrites-performance-reviewer.toml +4 -4
  265. package/pack/generated/codex/agents/devrites-plan-drafter.toml +3 -1
  266. package/pack/generated/codex/agents/devrites-plan-reviewer.toml +4 -4
  267. package/pack/generated/codex/agents/devrites-security-auditor.toml +3 -3
  268. package/pack/generated/codex/agents/devrites-simplifier-reviewer.toml +4 -3
  269. package/pack/generated/codex/agents/devrites-slice-wright.toml +17 -8
  270. package/pack/generated/codex/agents/devrites-spec-reviewer.toml +3 -3
  271. package/pack/generated/codex/agents/devrites-strategy-reviewer.toml +4 -5
  272. package/pack/generated/codex/agents/devrites-test-analyst.toml +6 -3
  273. package/pack/generated/codex/agents/fast-builder.toml +3 -1
  274. package/pack/generated/codex/agents/fast-checker.toml +2 -1
  275. package/pack/generated/codex/agents/fast-critic.toml +2 -1
  276. package/pack/generated/codex/agents/fast-planner.toml +2 -2
  277. package/pack/generated/codex/agents/overhaul-recon.toml +5 -4
  278. package/pack/generated/codex/skills/devrites-api-interface/SKILL.md +1 -1
  279. package/pack/generated/codex/skills/devrites-audit/SKILL.md +1 -1
  280. package/pack/generated/codex/skills/devrites-browser-proof/SKILL.md +33 -13
  281. package/pack/generated/codex/skills/devrites-browser-proof/reference/browser-performance.md +2 -1
  282. package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +1 -1
  283. package/pack/generated/codex/skills/devrites-doubt/SKILL.md +5 -5
  284. package/pack/generated/codex/skills/devrites-frontend-craft/reference/reuse-first.md +3 -3
  285. package/pack/generated/codex/skills/devrites-interview/SKILL.md +1 -1
  286. package/pack/generated/codex/skills/devrites-lib/SKILL.md +11 -6
  287. package/pack/generated/codex/skills/devrites-lib/reference/orchestration-profiles.md +2 -0
  288. package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +25 -14
  289. package/pack/generated/codex/skills/devrites-lib/reference/standards/README.md +2 -1
  290. package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +11 -3
  291. package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +43 -19
  292. package/pack/generated/codex/skills/devrites-lib/reference/standards/architecture-health.md +1 -1
  293. package/pack/generated/codex/skills/devrites-lib/reference/standards/code-index.md +111 -0
  294. package/pack/generated/codex/skills/devrites-lib/reference/standards/code-navigation.md +13 -63
  295. package/pack/generated/codex/skills/devrites-lib/reference/standards/context-hygiene.md +8 -9
  296. package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +14 -1
  297. package/pack/generated/codex/skills/devrites-lib/reference/standards/deprecation.md +1 -1
  298. package/pack/generated/codex/skills/devrites-lib/reference/standards/gates.md +10 -1
  299. package/pack/generated/codex/skills/devrites-lib/reference/standards/security.md +4 -0
  300. package/pack/generated/codex/skills/devrites-lib/reference/standards/testing.md +3 -1
  301. package/pack/generated/codex/skills/devrites-lib/reference/standards/tooling.md +9 -8
  302. package/pack/generated/codex/skills/devrites-lib/reference/standards/windows.md +3 -2
  303. package/pack/generated/codex/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
  304. package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +16 -16
  305. package/pack/generated/codex/skills/devrites-ux-shape/SKILL.md +1 -1
  306. package/pack/generated/codex/skills/overhaul/references/orchestration.md +3 -2
  307. package/pack/generated/codex/skills/rite/SKILL.md +1 -1
  308. package/pack/generated/codex/skills/rite-adopt/SKILL.md +1 -1
  309. package/pack/generated/codex/skills/rite-adopt/reference/adoption.md +1 -1
  310. package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +5 -4
  311. package/pack/generated/codex/skills/rite-build/SKILL.md +4 -3
  312. package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +2 -0
  313. package/pack/generated/codex/skills/rite-build/reference/checkpoint-protocol.md +4 -1
  314. package/pack/generated/codex/skills/rite-build/reference/checkpoint.md +2 -0
  315. package/pack/generated/codex/skills/rite-build/reference/one-slice-cycle.md +1 -1
  316. package/pack/generated/codex/skills/rite-build/reference/output.md +2 -0
  317. package/pack/generated/codex/skills/rite-build/reference/parallel-batch.md +22 -12
  318. package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +13 -3
  319. package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +42 -25
  320. package/pack/generated/codex/skills/rite-clarify/SKILL.md +1 -1
  321. package/pack/generated/codex/skills/rite-converge/SKILL.md +4 -4
  322. package/pack/generated/codex/skills/rite-converge/reference/convergence-assessment.md +3 -3
  323. package/pack/generated/codex/skills/rite-define/SKILL.md +10 -5
  324. package/pack/generated/codex/skills/rite-doctor/SKILL.md +17 -2
  325. package/pack/generated/codex/skills/rite-dogfood/SKILL.md +1 -1
  326. package/pack/generated/codex/skills/rite-explain/SKILL.md +1 -1
  327. package/pack/generated/codex/skills/rite-explain/reference/intake.md +1 -1
  328. package/pack/generated/codex/skills/rite-fast/SKILL.md +1 -1
  329. package/pack/generated/codex/skills/rite-handoff/SKILL.md +3 -3
  330. package/pack/generated/codex/skills/rite-handoff/reference/handoff-template.md +1 -1
  331. package/pack/generated/codex/skills/rite-harness/SKILL.md +2 -1
  332. package/pack/generated/codex/skills/rite-plan/SKILL.md +4 -4
  333. package/pack/generated/codex/skills/rite-plan/reference/slicing.md +3 -2
  334. package/pack/generated/codex/skills/rite-polish/SKILL.md +6 -3
  335. package/pack/generated/codex/skills/rite-polish/reference/harden-checklist.md +1 -1
  336. package/pack/generated/codex/skills/rite-prove/SKILL.md +1 -1
  337. package/pack/generated/codex/skills/rite-prove/reference/anti-patterns.md +1 -1
  338. package/pack/generated/codex/skills/rite-prove/reference/proof-ladder.md +16 -5
  339. package/pack/generated/codex/skills/rite-quick/SKILL.md +1 -1
  340. package/pack/generated/codex/skills/rite-resolve/SKILL.md +1 -1
  341. package/pack/generated/codex/skills/rite-review/SKILL.md +4 -4
  342. package/pack/generated/codex/skills/rite-seal/SKILL.md +2 -2
  343. package/pack/generated/codex/skills/rite-ship/SKILL.md +1 -1
  344. package/pack/generated/codex/skills/rite-spec/SKILL.md +1 -1
  345. package/pack/generated/codex/skills/rite-spec/reference/investigation.md +5 -5
  346. package/pack/generated/codex/skills/rite-spec/reference/spec-template.md +1 -1
  347. package/pack/generated/codex/skills/rite-spec/reference/state-workspace.md +6 -4
  348. package/pack/generated/codex/skills/rite-status/SKILL.md +1 -1
  349. package/pack/generated/codex/skills/rite-temper/SKILL.md +1 -1
  350. package/pack/generated/codex/skills/rite-temper/reference/review-dimensions.md +2 -2
  351. package/pack/generated/codex/skills/rite-temper/reference/scope-modes.md +2 -2
  352. package/pack/generated/codex/skills/rite-temper/reference/significance.md +2 -2
  353. package/pack/generated/codex/skills/rite-vet/SKILL.md +8 -4
  354. package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +10 -3
  355. package/pack/generated/codex/skills/rite-vet/reference/depth.md +2 -2
  356. package/pack/generated/codex/skills/rite-vet/reference/review-axes.md +2 -2
  357. package/pack/generated/codex/skills/rite-zoom-out/SKILL.md +6 -6
  358. package/pack/generated/devin/agents/devrites-code-reviewer.md +8 -4
  359. package/pack/generated/devin/agents/devrites-devex-reviewer.md +4 -3
  360. package/pack/generated/devin/agents/devrites-doubt-reviewer.md +3 -3
  361. package/pack/generated/devin/agents/devrites-evidence-scout.md +2 -1
  362. package/pack/generated/devin/agents/devrites-frontend-reviewer.md +4 -3
  363. package/pack/generated/devin/agents/devrites-performance-reviewer.md +4 -4
  364. package/pack/generated/devin/agents/devrites-plan-drafter.md +3 -1
  365. package/pack/generated/devin/agents/devrites-plan-reviewer.md +4 -4
  366. package/pack/generated/devin/agents/devrites-security-auditor.md +3 -3
  367. package/pack/generated/devin/agents/devrites-simplifier-reviewer.md +4 -3
  368. package/pack/generated/devin/agents/devrites-slice-wright.md +17 -8
  369. package/pack/generated/devin/agents/devrites-spec-reviewer.md +3 -3
  370. package/pack/generated/devin/agents/devrites-strategy-reviewer.md +4 -5
  371. package/pack/generated/devin/agents/devrites-test-analyst.md +6 -3
  372. package/pack/generated/devin/agents/fast-builder.md +3 -1
  373. package/pack/generated/devin/agents/fast-checker.md +2 -1
  374. package/pack/generated/devin/agents/fast-critic.md +2 -1
  375. package/pack/generated/devin/agents/fast-planner.md +2 -2
  376. package/pack/generated/devin/agents/overhaul-recon.md +5 -4
  377. package/pack/generated/devin/skills/devrites-api-interface/SKILL.md +1 -1
  378. package/pack/generated/devin/skills/devrites-audit/SKILL.md +1 -1
  379. package/pack/generated/devin/skills/devrites-browser-proof/SKILL.md +33 -13
  380. package/pack/generated/devin/skills/devrites-browser-proof/reference/browser-performance.md +2 -1
  381. package/pack/generated/devin/skills/devrites-debug-recovery/SKILL.md +1 -1
  382. package/pack/generated/devin/skills/devrites-doubt/SKILL.md +5 -5
  383. package/pack/generated/devin/skills/devrites-frontend-craft/reference/reuse-first.md +3 -3
  384. package/pack/generated/devin/skills/devrites-interview/SKILL.md +1 -1
  385. package/pack/generated/devin/skills/devrites-lib/SKILL.md +11 -6
  386. package/pack/generated/devin/skills/devrites-lib/reference/orchestration-profiles.md +2 -0
  387. package/pack/generated/devin/skills/devrites-lib/reference/parallel-dispatch.md +25 -14
  388. package/pack/generated/devin/skills/devrites-lib/reference/standards/README.md +2 -1
  389. package/pack/generated/devin/skills/devrites-lib/reference/standards/afk-hitl.md +11 -3
  390. package/pack/generated/devin/skills/devrites-lib/reference/standards/agents.md +43 -19
  391. package/pack/generated/devin/skills/devrites-lib/reference/standards/architecture-health.md +1 -1
  392. package/pack/generated/devin/skills/devrites-lib/reference/standards/code-index.md +111 -0
  393. package/pack/generated/devin/skills/devrites-lib/reference/standards/code-navigation.md +13 -63
  394. package/pack/generated/devin/skills/devrites-lib/reference/standards/context-hygiene.md +8 -9
  395. package/pack/generated/devin/skills/devrites-lib/reference/standards/core.md +14 -1
  396. package/pack/generated/devin/skills/devrites-lib/reference/standards/deprecation.md +1 -1
  397. package/pack/generated/devin/skills/devrites-lib/reference/standards/gates.md +10 -1
  398. package/pack/generated/devin/skills/devrites-lib/reference/standards/security.md +4 -0
  399. package/pack/generated/devin/skills/devrites-lib/reference/standards/testing.md +3 -1
  400. package/pack/generated/devin/skills/devrites-lib/reference/standards/tooling.md +9 -8
  401. package/pack/generated/devin/skills/devrites-lib/reference/standards/windows.md +3 -2
  402. package/pack/generated/devin/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
  403. package/pack/generated/devin/skills/devrites-lib/reference/workspace-artifact-schema.md +16 -16
  404. package/pack/generated/devin/skills/devrites-ux-shape/SKILL.md +1 -1
  405. package/pack/generated/devin/skills/overhaul/references/orchestration.md +3 -2
  406. package/pack/generated/devin/skills/rite/SKILL.md +1 -1
  407. package/pack/generated/devin/skills/rite-adopt/SKILL.md +1 -1
  408. package/pack/generated/devin/skills/rite-adopt/reference/adoption.md +1 -1
  409. package/pack/generated/devin/skills/rite-autocomplete/SKILL.md +5 -4
  410. package/pack/generated/devin/skills/rite-build/SKILL.md +4 -3
  411. package/pack/generated/devin/skills/rite-build/reference/afk-discipline.md +2 -0
  412. package/pack/generated/devin/skills/rite-build/reference/checkpoint-protocol.md +4 -1
  413. package/pack/generated/devin/skills/rite-build/reference/checkpoint.md +2 -0
  414. package/pack/generated/devin/skills/rite-build/reference/one-slice-cycle.md +1 -1
  415. package/pack/generated/devin/skills/rite-build/reference/output.md +2 -0
  416. package/pack/generated/devin/skills/rite-build/reference/parallel-batch.md +22 -12
  417. package/pack/generated/devin/skills/rite-build/reference/phase-contract.md +13 -3
  418. package/pack/generated/devin/skills/rite-build/reference/wright-dispatch.md +42 -25
  419. package/pack/generated/devin/skills/rite-clarify/SKILL.md +1 -1
  420. package/pack/generated/devin/skills/rite-converge/SKILL.md +4 -4
  421. package/pack/generated/devin/skills/rite-converge/reference/convergence-assessment.md +3 -3
  422. package/pack/generated/devin/skills/rite-define/SKILL.md +10 -5
  423. package/pack/generated/devin/skills/rite-doctor/SKILL.md +17 -2
  424. package/pack/generated/devin/skills/rite-dogfood/SKILL.md +1 -1
  425. package/pack/generated/devin/skills/rite-explain/SKILL.md +1 -1
  426. package/pack/generated/devin/skills/rite-explain/reference/intake.md +1 -1
  427. package/pack/generated/devin/skills/rite-fast/SKILL.md +1 -1
  428. package/pack/generated/devin/skills/rite-handoff/SKILL.md +3 -3
  429. package/pack/generated/devin/skills/rite-handoff/reference/handoff-template.md +1 -1
  430. package/pack/generated/devin/skills/rite-harness/SKILL.md +2 -1
  431. package/pack/generated/devin/skills/rite-plan/SKILL.md +4 -4
  432. package/pack/generated/devin/skills/rite-plan/reference/slicing.md +3 -2
  433. package/pack/generated/devin/skills/rite-polish/SKILL.md +6 -3
  434. package/pack/generated/devin/skills/rite-polish/reference/harden-checklist.md +1 -1
  435. package/pack/generated/devin/skills/rite-prove/SKILL.md +1 -1
  436. package/pack/generated/devin/skills/rite-prove/reference/anti-patterns.md +1 -1
  437. package/pack/generated/devin/skills/rite-prove/reference/proof-ladder.md +16 -5
  438. package/pack/generated/devin/skills/rite-quick/SKILL.md +1 -1
  439. package/pack/generated/devin/skills/rite-resolve/SKILL.md +1 -1
  440. package/pack/generated/devin/skills/rite-review/SKILL.md +4 -4
  441. package/pack/generated/devin/skills/rite-seal/SKILL.md +2 -2
  442. package/pack/generated/devin/skills/rite-ship/SKILL.md +1 -1
  443. package/pack/generated/devin/skills/rite-spec/SKILL.md +1 -1
  444. package/pack/generated/devin/skills/rite-spec/reference/investigation.md +5 -5
  445. package/pack/generated/devin/skills/rite-spec/reference/spec-template.md +1 -1
  446. package/pack/generated/devin/skills/rite-spec/reference/state-workspace.md +6 -4
  447. package/pack/generated/devin/skills/rite-status/SKILL.md +1 -1
  448. package/pack/generated/devin/skills/rite-temper/SKILL.md +1 -1
  449. package/pack/generated/devin/skills/rite-temper/reference/review-dimensions.md +2 -2
  450. package/pack/generated/devin/skills/rite-temper/reference/scope-modes.md +2 -2
  451. package/pack/generated/devin/skills/rite-temper/reference/significance.md +2 -2
  452. package/pack/generated/devin/skills/rite-vet/SKILL.md +8 -4
  453. package/pack/generated/devin/skills/rite-vet/reference/artifacts.md +10 -3
  454. package/pack/generated/devin/skills/rite-vet/reference/depth.md +2 -2
  455. package/pack/generated/devin/skills/rite-vet/reference/review-axes.md +2 -2
  456. package/pack/generated/devin/skills/rite-zoom-out/SKILL.md +6 -6
  457. package/pack/generated/omp/agents/devrites-code-reviewer.md +9 -5
  458. package/pack/generated/omp/agents/devrites-devex-reviewer.md +5 -4
  459. package/pack/generated/omp/agents/devrites-doubt-reviewer.md +4 -4
  460. package/pack/generated/omp/agents/devrites-evidence-scout.md +3 -2
  461. package/pack/generated/omp/agents/devrites-frontend-reviewer.md +5 -4
  462. package/pack/generated/omp/agents/devrites-performance-reviewer.md +5 -5
  463. package/pack/generated/omp/agents/devrites-plan-drafter.md +4 -2
  464. package/pack/generated/omp/agents/devrites-plan-reviewer.md +5 -5
  465. package/pack/generated/omp/agents/devrites-proof-runner.md +1 -1
  466. package/pack/generated/omp/agents/devrites-retrospector.md +1 -1
  467. package/pack/generated/omp/agents/devrites-security-auditor.md +4 -4
  468. package/pack/generated/omp/agents/devrites-simplifier-reviewer.md +5 -4
  469. package/pack/generated/omp/agents/devrites-slice-wright.md +18 -9
  470. package/pack/generated/omp/agents/devrites-spec-reviewer.md +4 -4
  471. package/pack/generated/omp/agents/devrites-strategy-reviewer.md +5 -6
  472. package/pack/generated/omp/agents/devrites-test-analyst.md +7 -4
  473. package/pack/generated/omp/agents/devrites-upgrade-planner.md +1 -1
  474. package/pack/generated/omp/agents/fast-builder.md +4 -2
  475. package/pack/generated/omp/agents/fast-checker.md +3 -2
  476. package/pack/generated/omp/agents/fast-critic.md +3 -2
  477. package/pack/generated/omp/agents/fast-planner.md +3 -3
  478. package/pack/generated/omp/agents/overhaul-backend-engineer.md +1 -1
  479. package/pack/generated/omp/agents/overhaul-boundary.md +1 -1
  480. package/pack/generated/omp/agents/overhaul-craft.md +1 -1
  481. package/pack/generated/omp/agents/overhaul-frontend-engineer.md +1 -1
  482. package/pack/generated/omp/agents/overhaul-implementer.md +1 -1
  483. package/pack/generated/omp/agents/overhaul-recon.md +6 -5
  484. package/pack/generated/omp/agents/overhaul-specialist.md +1 -1
  485. package/pack/generated/omp/agents/overhaul-verifier.md +1 -1
  486. package/pack/generated/omp/skills/devrites-api-interface/SKILL.md +1 -1
  487. package/pack/generated/omp/skills/devrites-audit/SKILL.md +1 -1
  488. package/pack/generated/omp/skills/devrites-browser-proof/SKILL.md +33 -13
  489. package/pack/generated/omp/skills/devrites-browser-proof/reference/browser-performance.md +2 -1
  490. package/pack/generated/omp/skills/devrites-debug-recovery/SKILL.md +1 -1
  491. package/pack/generated/omp/skills/devrites-doubt/SKILL.md +5 -5
  492. package/pack/generated/omp/skills/devrites-frontend-craft/reference/reuse-first.md +3 -3
  493. package/pack/generated/omp/skills/devrites-interview/SKILL.md +1 -1
  494. package/pack/generated/omp/skills/devrites-lib/SKILL.md +11 -6
  495. package/pack/generated/omp/skills/devrites-lib/reference/orchestration-profiles.md +2 -0
  496. package/pack/generated/omp/skills/devrites-lib/reference/parallel-dispatch.md +25 -14
  497. package/pack/generated/omp/skills/devrites-lib/reference/standards/README.md +2 -1
  498. package/pack/generated/omp/skills/devrites-lib/reference/standards/afk-hitl.md +11 -3
  499. package/pack/generated/omp/skills/devrites-lib/reference/standards/agents.md +43 -19
  500. package/pack/generated/omp/skills/devrites-lib/reference/standards/architecture-health.md +1 -1
  501. package/pack/generated/omp/skills/devrites-lib/reference/standards/code-index.md +111 -0
  502. package/pack/generated/omp/skills/devrites-lib/reference/standards/code-navigation.md +13 -63
  503. package/pack/generated/omp/skills/devrites-lib/reference/standards/context-hygiene.md +8 -9
  504. package/pack/generated/omp/skills/devrites-lib/reference/standards/core.md +14 -1
  505. package/pack/generated/omp/skills/devrites-lib/reference/standards/deprecation.md +1 -1
  506. package/pack/generated/omp/skills/devrites-lib/reference/standards/gates.md +10 -1
  507. package/pack/generated/omp/skills/devrites-lib/reference/standards/security.md +4 -0
  508. package/pack/generated/omp/skills/devrites-lib/reference/standards/testing.md +3 -1
  509. package/pack/generated/omp/skills/devrites-lib/reference/standards/tooling.md +9 -8
  510. package/pack/generated/omp/skills/devrites-lib/reference/standards/windows.md +3 -2
  511. package/pack/generated/omp/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
  512. package/pack/generated/omp/skills/devrites-lib/reference/workspace-artifact-schema.md +16 -16
  513. package/pack/generated/omp/skills/devrites-ux-shape/SKILL.md +1 -1
  514. package/pack/generated/omp/skills/overhaul/references/orchestration.md +3 -2
  515. package/pack/generated/omp/skills/rite/SKILL.md +1 -1
  516. package/pack/generated/omp/skills/rite-adopt/SKILL.md +1 -1
  517. package/pack/generated/omp/skills/rite-adopt/reference/adoption.md +1 -1
  518. package/pack/generated/omp/skills/rite-autocomplete/SKILL.md +5 -4
  519. package/pack/generated/omp/skills/rite-build/SKILL.md +4 -3
  520. package/pack/generated/omp/skills/rite-build/reference/afk-discipline.md +2 -0
  521. package/pack/generated/omp/skills/rite-build/reference/checkpoint-protocol.md +4 -1
  522. package/pack/generated/omp/skills/rite-build/reference/checkpoint.md +2 -0
  523. package/pack/generated/omp/skills/rite-build/reference/one-slice-cycle.md +1 -1
  524. package/pack/generated/omp/skills/rite-build/reference/output.md +2 -0
  525. package/pack/generated/omp/skills/rite-build/reference/parallel-batch.md +22 -12
  526. package/pack/generated/omp/skills/rite-build/reference/phase-contract.md +13 -3
  527. package/pack/generated/omp/skills/rite-build/reference/wright-dispatch.md +42 -25
  528. package/pack/generated/omp/skills/rite-clarify/SKILL.md +1 -1
  529. package/pack/generated/omp/skills/rite-converge/SKILL.md +4 -4
  530. package/pack/generated/omp/skills/rite-converge/reference/convergence-assessment.md +3 -3
  531. package/pack/generated/omp/skills/rite-define/SKILL.md +10 -5
  532. package/pack/generated/omp/skills/rite-doctor/SKILL.md +17 -2
  533. package/pack/generated/omp/skills/rite-dogfood/SKILL.md +1 -1
  534. package/pack/generated/omp/skills/rite-explain/SKILL.md +1 -1
  535. package/pack/generated/omp/skills/rite-explain/reference/intake.md +1 -1
  536. package/pack/generated/omp/skills/rite-fast/SKILL.md +1 -1
  537. package/pack/generated/omp/skills/rite-handoff/SKILL.md +3 -3
  538. package/pack/generated/omp/skills/rite-handoff/reference/handoff-template.md +1 -1
  539. package/pack/generated/omp/skills/rite-harness/SKILL.md +2 -1
  540. package/pack/generated/omp/skills/rite-plan/SKILL.md +4 -4
  541. package/pack/generated/omp/skills/rite-plan/reference/slicing.md +3 -2
  542. package/pack/generated/omp/skills/rite-polish/SKILL.md +6 -3
  543. package/pack/generated/omp/skills/rite-polish/reference/harden-checklist.md +1 -1
  544. package/pack/generated/omp/skills/rite-prove/SKILL.md +1 -1
  545. package/pack/generated/omp/skills/rite-prove/reference/anti-patterns.md +1 -1
  546. package/pack/generated/omp/skills/rite-prove/reference/proof-ladder.md +16 -5
  547. package/pack/generated/omp/skills/rite-quick/SKILL.md +1 -1
  548. package/pack/generated/omp/skills/rite-resolve/SKILL.md +1 -1
  549. package/pack/generated/omp/skills/rite-review/SKILL.md +4 -4
  550. package/pack/generated/omp/skills/rite-seal/SKILL.md +2 -2
  551. package/pack/generated/omp/skills/rite-ship/SKILL.md +1 -1
  552. package/pack/generated/omp/skills/rite-spec/SKILL.md +1 -1
  553. package/pack/generated/omp/skills/rite-spec/reference/investigation.md +5 -5
  554. package/pack/generated/omp/skills/rite-spec/reference/spec-template.md +1 -1
  555. package/pack/generated/omp/skills/rite-spec/reference/state-workspace.md +6 -4
  556. package/pack/generated/omp/skills/rite-status/SKILL.md +1 -1
  557. package/pack/generated/omp/skills/rite-temper/SKILL.md +1 -1
  558. package/pack/generated/omp/skills/rite-temper/reference/review-dimensions.md +2 -2
  559. package/pack/generated/omp/skills/rite-temper/reference/scope-modes.md +2 -2
  560. package/pack/generated/omp/skills/rite-temper/reference/significance.md +2 -2
  561. package/pack/generated/omp/skills/rite-vet/SKILL.md +8 -4
  562. package/pack/generated/omp/skills/rite-vet/reference/artifacts.md +10 -3
  563. package/pack/generated/omp/skills/rite-vet/reference/depth.md +2 -2
  564. package/pack/generated/omp/skills/rite-vet/reference/review-axes.md +2 -2
  565. package/pack/generated/omp/skills/rite-zoom-out/SKILL.md +6 -6
  566. package/pack/generated/pi/agents/devrites-code-reviewer.md +9 -5
  567. package/pack/generated/pi/agents/devrites-devex-reviewer.md +5 -4
  568. package/pack/generated/pi/agents/devrites-doubt-reviewer.md +4 -4
  569. package/pack/generated/pi/agents/devrites-evidence-scout.md +3 -2
  570. package/pack/generated/pi/agents/devrites-frontend-reviewer.md +5 -4
  571. package/pack/generated/pi/agents/devrites-performance-reviewer.md +5 -5
  572. package/pack/generated/pi/agents/devrites-plan-drafter.md +4 -2
  573. package/pack/generated/pi/agents/devrites-plan-reviewer.md +5 -5
  574. package/pack/generated/pi/agents/devrites-proof-runner.md +1 -1
  575. package/pack/generated/pi/agents/devrites-retrospector.md +1 -1
  576. package/pack/generated/pi/agents/devrites-security-auditor.md +4 -4
  577. package/pack/generated/pi/agents/devrites-simplifier-reviewer.md +5 -4
  578. package/pack/generated/pi/agents/devrites-slice-wright.md +18 -9
  579. package/pack/generated/pi/agents/devrites-spec-reviewer.md +4 -4
  580. package/pack/generated/pi/agents/devrites-strategy-reviewer.md +5 -6
  581. package/pack/generated/pi/agents/devrites-test-analyst.md +7 -4
  582. package/pack/generated/pi/agents/devrites-upgrade-planner.md +1 -1
  583. package/pack/generated/pi/agents/fast-builder.md +4 -2
  584. package/pack/generated/pi/agents/fast-checker.md +3 -2
  585. package/pack/generated/pi/agents/fast-critic.md +3 -2
  586. package/pack/generated/pi/agents/fast-planner.md +3 -3
  587. package/pack/generated/pi/agents/overhaul-backend-engineer.md +1 -1
  588. package/pack/generated/pi/agents/overhaul-boundary.md +1 -1
  589. package/pack/generated/pi/agents/overhaul-craft.md +1 -1
  590. package/pack/generated/pi/agents/overhaul-frontend-engineer.md +1 -1
  591. package/pack/generated/pi/agents/overhaul-implementer.md +1 -1
  592. package/pack/generated/pi/agents/overhaul-recon.md +6 -5
  593. package/pack/generated/pi/agents/overhaul-specialist.md +1 -1
  594. package/pack/generated/pi/agents/overhaul-verifier.md +1 -1
  595. package/pack/generated/pi/skills/devrites-api-interface/SKILL.md +1 -1
  596. package/pack/generated/pi/skills/devrites-audit/SKILL.md +1 -1
  597. package/pack/generated/pi/skills/devrites-browser-proof/SKILL.md +33 -13
  598. package/pack/generated/pi/skills/devrites-browser-proof/reference/browser-performance.md +2 -1
  599. package/pack/generated/pi/skills/devrites-debug-recovery/SKILL.md +1 -1
  600. package/pack/generated/pi/skills/devrites-doubt/SKILL.md +5 -5
  601. package/pack/generated/pi/skills/devrites-frontend-craft/reference/reuse-first.md +3 -3
  602. package/pack/generated/pi/skills/devrites-interview/SKILL.md +1 -1
  603. package/pack/generated/pi/skills/devrites-lib/SKILL.md +11 -6
  604. package/pack/generated/pi/skills/devrites-lib/reference/orchestration-profiles.md +2 -0
  605. package/pack/generated/pi/skills/devrites-lib/reference/parallel-dispatch.md +25 -14
  606. package/pack/generated/pi/skills/devrites-lib/reference/standards/README.md +2 -1
  607. package/pack/generated/pi/skills/devrites-lib/reference/standards/afk-hitl.md +11 -3
  608. package/pack/generated/pi/skills/devrites-lib/reference/standards/agents.md +43 -19
  609. package/pack/generated/pi/skills/devrites-lib/reference/standards/architecture-health.md +1 -1
  610. package/pack/generated/pi/skills/devrites-lib/reference/standards/code-index.md +111 -0
  611. package/pack/generated/pi/skills/devrites-lib/reference/standards/code-navigation.md +13 -63
  612. package/pack/generated/pi/skills/devrites-lib/reference/standards/context-hygiene.md +8 -9
  613. package/pack/generated/pi/skills/devrites-lib/reference/standards/core.md +14 -1
  614. package/pack/generated/pi/skills/devrites-lib/reference/standards/deprecation.md +1 -1
  615. package/pack/generated/pi/skills/devrites-lib/reference/standards/gates.md +10 -1
  616. package/pack/generated/pi/skills/devrites-lib/reference/standards/security.md +4 -0
  617. package/pack/generated/pi/skills/devrites-lib/reference/standards/testing.md +3 -1
  618. package/pack/generated/pi/skills/devrites-lib/reference/standards/tooling.md +9 -8
  619. package/pack/generated/pi/skills/devrites-lib/reference/standards/windows.md +3 -2
  620. package/pack/generated/pi/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
  621. package/pack/generated/pi/skills/devrites-lib/reference/workspace-artifact-schema.md +16 -16
  622. package/pack/generated/pi/skills/devrites-ux-shape/SKILL.md +1 -1
  623. package/pack/generated/pi/skills/overhaul/references/orchestration.md +3 -2
  624. package/pack/generated/pi/skills/rite/SKILL.md +1 -1
  625. package/pack/generated/pi/skills/rite-adopt/SKILL.md +1 -1
  626. package/pack/generated/pi/skills/rite-adopt/reference/adoption.md +1 -1
  627. package/pack/generated/pi/skills/rite-autocomplete/SKILL.md +5 -4
  628. package/pack/generated/pi/skills/rite-build/SKILL.md +4 -3
  629. package/pack/generated/pi/skills/rite-build/reference/afk-discipline.md +2 -0
  630. package/pack/generated/pi/skills/rite-build/reference/checkpoint-protocol.md +4 -1
  631. package/pack/generated/pi/skills/rite-build/reference/checkpoint.md +2 -0
  632. package/pack/generated/pi/skills/rite-build/reference/one-slice-cycle.md +1 -1
  633. package/pack/generated/pi/skills/rite-build/reference/output.md +2 -0
  634. package/pack/generated/pi/skills/rite-build/reference/parallel-batch.md +22 -12
  635. package/pack/generated/pi/skills/rite-build/reference/phase-contract.md +13 -3
  636. package/pack/generated/pi/skills/rite-build/reference/wright-dispatch.md +42 -25
  637. package/pack/generated/pi/skills/rite-clarify/SKILL.md +1 -1
  638. package/pack/generated/pi/skills/rite-converge/SKILL.md +4 -4
  639. package/pack/generated/pi/skills/rite-converge/reference/convergence-assessment.md +3 -3
  640. package/pack/generated/pi/skills/rite-define/SKILL.md +10 -5
  641. package/pack/generated/pi/skills/rite-doctor/SKILL.md +17 -2
  642. package/pack/generated/pi/skills/rite-dogfood/SKILL.md +1 -1
  643. package/pack/generated/pi/skills/rite-explain/SKILL.md +1 -1
  644. package/pack/generated/pi/skills/rite-explain/reference/intake.md +1 -1
  645. package/pack/generated/pi/skills/rite-fast/SKILL.md +1 -1
  646. package/pack/generated/pi/skills/rite-handoff/SKILL.md +3 -3
  647. package/pack/generated/pi/skills/rite-handoff/reference/handoff-template.md +1 -1
  648. package/pack/generated/pi/skills/rite-harness/SKILL.md +2 -1
  649. package/pack/generated/pi/skills/rite-plan/SKILL.md +4 -4
  650. package/pack/generated/pi/skills/rite-plan/reference/slicing.md +3 -2
  651. package/pack/generated/pi/skills/rite-polish/SKILL.md +6 -3
  652. package/pack/generated/pi/skills/rite-polish/reference/harden-checklist.md +1 -1
  653. package/pack/generated/pi/skills/rite-prove/SKILL.md +1 -1
  654. package/pack/generated/pi/skills/rite-prove/reference/anti-patterns.md +1 -1
  655. package/pack/generated/pi/skills/rite-prove/reference/proof-ladder.md +16 -5
  656. package/pack/generated/pi/skills/rite-quick/SKILL.md +1 -1
  657. package/pack/generated/pi/skills/rite-resolve/SKILL.md +1 -1
  658. package/pack/generated/pi/skills/rite-review/SKILL.md +4 -4
  659. package/pack/generated/pi/skills/rite-seal/SKILL.md +2 -2
  660. package/pack/generated/pi/skills/rite-ship/SKILL.md +1 -1
  661. package/pack/generated/pi/skills/rite-spec/SKILL.md +1 -1
  662. package/pack/generated/pi/skills/rite-spec/reference/investigation.md +5 -5
  663. package/pack/generated/pi/skills/rite-spec/reference/spec-template.md +1 -1
  664. package/pack/generated/pi/skills/rite-spec/reference/state-workspace.md +6 -4
  665. package/pack/generated/pi/skills/rite-status/SKILL.md +1 -1
  666. package/pack/generated/pi/skills/rite-temper/SKILL.md +1 -1
  667. package/pack/generated/pi/skills/rite-temper/reference/review-dimensions.md +2 -2
  668. package/pack/generated/pi/skills/rite-temper/reference/scope-modes.md +2 -2
  669. package/pack/generated/pi/skills/rite-temper/reference/significance.md +2 -2
  670. package/pack/generated/pi/skills/rite-vet/SKILL.md +8 -4
  671. package/pack/generated/pi/skills/rite-vet/reference/artifacts.md +10 -3
  672. package/pack/generated/pi/skills/rite-vet/reference/depth.md +2 -2
  673. package/pack/generated/pi/skills/rite-vet/reference/review-axes.md +2 -2
  674. package/pack/generated/pi/skills/rite-zoom-out/SKILL.md +6 -6
  675. package/package.json +1 -1
  676. package/scripts/build-host-artifacts.sh +5 -4
  677. package/scripts/omp-generate.sh +3 -12
  678. package/scripts/pi-generate.sh +5 -51
@@ -11,6 +11,7 @@ import (
11
11
 
12
12
  "github.com/devrites/devrites/internal/devritespaths"
13
13
  "github.com/devrites/devrites/internal/markdowntext"
14
+ "github.com/devrites/devrites/internal/parallel"
14
15
  "github.com/devrites/devrites/internal/state"
15
16
  "github.com/devrites/devrites/internal/workflow"
16
17
  )
@@ -18,7 +19,8 @@ import (
18
19
  // RunNext prints the minimal remaining lifecycle path: the first phase whose
19
20
  // required artifacts are not all present, plus advisory skips for phases whose
20
21
  // remaining work is vacuous (e.g. clarify with zero open questions). Advisory
21
- // only — the rite still owns the decision to advance.
22
+ // only — the rite still owns the decision to advance — except the root-edit
23
+ // tripwire, which exits 3 while an unattributed product edit is in the tree.
22
24
  func RunNext(root string, args []string, stdout, stderr io.Writer) int {
23
25
  slug, code, err := ActiveSlug(root, args)
24
26
  if err != nil {
@@ -60,10 +62,24 @@ func RunNext(root string, args []string, stdout, stderr io.Writer) int {
60
62
  fmt.Fprintln(stdout, "current-status: incomplete")
61
63
  }
62
64
  fmt.Fprintf(stdout, "open-questions: %d\n", openQuestions)
65
+ // The root-edit tripwire (ADR-0038) leads the output and exits 3; the rest
66
+ // still prints so the root sees where it resumes once the edit is routed.
67
+ exit := 0
68
+ if flagged, err := unattributedEdits(root, slug); err != nil {
69
+ fmt.Fprintf(stdout, "blocked: tree baseline: %v\n", err)
70
+ exit = 3
71
+ } else if len(flagged) > 0 {
72
+ recordUnattributed(root, slug, string(report.Phase), flagged)
73
+ fmt.Fprintf(stdout, "blocked: %s\n", unattributedMessage(slug, flagged))
74
+ exit = 3
75
+ }
76
+ if report.Phase == state.PhaseBuild {
77
+ printPlanBatch(stdout, root, slug)
78
+ }
63
79
 
64
80
  if report.Phase == state.PhaseDone {
65
81
  fmt.Fprintln(stdout, "next-phase: done")
66
- return 0
82
+ return exit
67
83
  }
68
84
 
69
85
  // Walk from the current phase to the first incomplete one. Vacuous phases
@@ -74,7 +90,7 @@ func RunNext(root string, args []string, stdout, stderr io.Writer) int {
74
90
  if policy.Target == state.PhaseDone {
75
91
  fmt.Fprintln(stdout, "next-phase: done")
76
92
  printSkips(stdout, skips)
77
- return 0
93
+ return exit
78
94
  }
79
95
  var missing []string
80
96
  if i == currentIdx {
@@ -106,11 +122,35 @@ func RunNext(root string, args []string, stdout, stderr io.Writer) int {
106
122
  fmt.Fprintf(stdout, "missing: %s\n", strings.Join(missing, ","))
107
123
  }
108
124
  printSkips(stdout, skips)
109
- return 0
125
+ return exit
110
126
  }
111
127
  fmt.Fprintln(stdout, "next-phase: done")
112
128
  printSkips(stdout, skips)
113
- return 0
129
+ return exit
130
+ }
131
+
132
+ // printPlanBatch prints the slices runnable now and the batch `parallel select
133
+ // --from-plan` picks at the AFK max_parallel cap (else the maximum), with the
134
+ // command itself. Advisory: an unreadable plan prints why, never an exit code.
135
+ func printPlanBatch(stdout io.Writer, root, slug string) {
136
+ capN := afkMaxParallel(root)
137
+ if capN < 1 || capN > parallel.MaxParallelSlices {
138
+ capN = parallel.MaxParallelSlices
139
+ }
140
+ eligible, batch, err := planBatch(root, slug, capN)
141
+ if err != nil {
142
+ fmt.Fprintf(stdout, "batch: unavailable (%v)\n", err)
143
+ return
144
+ }
145
+ list := func(ids []string) string {
146
+ if len(ids) == 0 {
147
+ return "none"
148
+ }
149
+ return strings.Join(ids, ",")
150
+ }
151
+ fmt.Fprintf(stdout, "eligible_now: %s\n", list(eligible))
152
+ fmt.Fprintf(stdout, "batch: %s\n", list(batch))
153
+ fmt.Fprintf(stdout, "select-command: %s\n", planSelectCommand(filepath.Dir(root), slug, capN))
114
154
  }
115
155
 
116
156
  func renderNextCommand(policy state.PhasePolicy) string {
@@ -157,13 +157,11 @@ func missingSectionNames(sections []state.Section) []string {
157
157
  return out
158
158
  }
159
159
 
160
- // WriteObserveSummaryJSON prints one JSON object to stdout.
160
+ // WriteObserveSummaryJSON prints one compact JSON object line to stdout.
161
161
  func WriteObserveSummaryJSON(root, slug string, stdout io.Writer) error {
162
162
  summary, err := ObserveSummaryFor(root, slug)
163
163
  if err != nil {
164
164
  return err
165
165
  }
166
- enc := json.NewEncoder(stdout)
167
- enc.SetIndent("", " ")
168
- return enc.Encode(summary)
166
+ return json.NewEncoder(stdout).Encode(summary)
169
167
  }
@@ -0,0 +1,319 @@
1
+ package lib
2
+
3
+ import (
4
+ "errors"
5
+ "fmt"
6
+ "io"
7
+ "os"
8
+ "path/filepath"
9
+ "regexp"
10
+ "strings"
11
+
12
+ "github.com/devrites/devrites/internal/acceptance"
13
+ "github.com/devrites/devrites/internal/devritespaths"
14
+ "github.com/devrites/devrites/internal/state"
15
+ )
16
+
17
+ // PacketUsage is the help and usage-error text for `packet`.
18
+ const PacketUsage = `usage: devrites-engine packet <slug> --wave <w> --phase <p> --role <r> [--slice <SLICE-ID>] [--recheck] [--checks <G-ID,...>] [--focus <file>]
19
+
20
+ Renders one role's by-reference dispatch packet and runs the lints dispatch
21
+ open runs on it; a refused packet is removed and the command exits 3. A
22
+ wright role (needs --slice and --checks) writes a same-worktree
23
+ packets/<w>.contract.md with the slice's Writer allowlist and each --checks
24
+ gates.md gate's CHECK, which must be an approved test-plan.md Build-entry
25
+ preflight row; a native-worktree pilot keeps its own contract. A reviewer
26
+ role (*-reviewer, *-auditor, test-analyst) writes packets/<w>.<role>.md with
27
+ its Outcome/Counts return head. Read first names the role's context bundle
28
+ (run context first; --recheck names the build --recheck bundle) and
29
+ packets/<w>.diff when candidate freeze wrote one; Candidate copies
30
+ packets/<w>.sha256 verbatim, or only its header rows when the per-file rows
31
+ would overflow the packet (required at review and seal). --focus (relative
32
+ to the workspace) holds one "- <ID> <path:line> <text>" row per line, text up
33
+ to 240 characters, and any other non-blank line is refused: open findings
34
+ for a reviewer, defects and quoted carry-forward constraints for a wright,
35
+ and the 1-3 row claim a doubt-reviewer attacks (required for that role).
36
+ `
37
+
38
+ // focusRowRE is the only open-finding shape a packet carries: an ID, an
39
+ // anchor, and a bounded defect statement, never narrative or outcomes.
40
+ var focusRowRE = regexp.MustCompile(`^- [A-Za-z][A-Za-z0-9._-]{0,63} [^\s:]+(?::[0-9]+)+(?:-[0-9]+)? \S.{0,239}$`)
41
+
42
+ // RunPacket implements `packet`: it renders the fixed skeleton so the root
43
+ // never hand-writes packet prose, hashes, or IDs.
44
+ func RunPacket(root string, args []string, stdout, stderr io.Writer) int {
45
+ var wave, phase, role, slice, checks, focus, recheck string
46
+ var positional []string
47
+ for i := 0; i < len(args); i++ {
48
+ value := argAt(args, i+1)
49
+ switch args[i] {
50
+ case "--recheck":
51
+ // Non-empty selects the .recheck bundle name; the text is the context hint.
52
+ recheck = " --recheck <inventory>"
53
+ continue
54
+ case "--wave":
55
+ wave = value
56
+ case "--phase":
57
+ phase = value
58
+ case "--role":
59
+ role = value
60
+ case "--slice":
61
+ slice = value
62
+ case "--checks":
63
+ checks = value
64
+ case "--focus":
65
+ focus = value
66
+ default:
67
+ if strings.HasPrefix(args[i], "-") {
68
+ fmt.Fprintf(stderr, "packet: unknown flag %q\n", args[i])
69
+ return 2
70
+ }
71
+ positional = append(positional, args[i])
72
+ continue
73
+ }
74
+ i++
75
+ }
76
+ wright := strings.Contains(role, "wright")
77
+ doubt := roleBase(role) == "doubt-reviewer"
78
+ if len(positional) != 1 || !packetNameRE.MatchString(wave) || !packetNameRE.MatchString(phase) || !packetNameRE.MatchString(role) ||
79
+ (slice != "" && !packetNameRE.MatchString(slice)) || (!wright && !isReviewerRole(role)) || (wright && slice == "") || (!wright && checks != "") ||
80
+ (recheck != "" && (phase != "build" || slice == "")) || (doubt && focus == "") {
81
+ fmt.Fprint(stderr, PacketUsage)
82
+ return 2
83
+ }
84
+ slug := positional[0]
85
+ fail := func(err error) int {
86
+ fmt.Fprintf(stderr, "packet: %v\n", err)
87
+ return 3
88
+ }
89
+ workspace, err := devritespaths.ExistingFeatureDirChecked(root, slug)
90
+ if err != nil {
91
+ return fail(err)
92
+ }
93
+ rel := workspaceRel(root, workspace)
94
+ bundle := "ctx/" + bundleName(contextOpts{phase: phase, role: role, slice: slice, recheck: recheck})
95
+ if info, err := os.Stat(filepath.Join(workspace, filepath.FromSlash(bundle))); err != nil || !info.Mode().IsRegular() {
96
+ scope := recheck
97
+ if slice != "" {
98
+ scope = " --slice " + slice + recheck
99
+ }
100
+ return fail(fmt.Errorf("%s/%s is missing; run devrites-engine context %s --phase %s --role %s%s first", rel, bundle, slug, phase, role, scope))
101
+ }
102
+ candidate, partial, err := frozenCandidate(workspace, wave)
103
+ if err != nil {
104
+ return fail(err)
105
+ }
106
+ finalPhase := strings.EqualFold(phase, "review") || strings.EqualFold(phase, "seal")
107
+ if candidate == "" && !wright && finalPhase {
108
+ return fail(fmt.Errorf("a %s reviewer packet needs a frozen candidate; run devrites-engine candidate freeze %s --wave %s first", phase, slug, wave))
109
+ }
110
+
111
+ var b strings.Builder
112
+ fmt.Fprintf(&b, "# Packet %s: %s\n\nFeature: %s\nPhase: %s\n", wave, role, slug, phase)
113
+ if slice != "" {
114
+ fmt.Fprintf(&b, "Slice: %s\n", slice)
115
+ }
116
+ if wright {
117
+ b.WriteString("Isolation: same-worktree\n")
118
+ b.WriteString("Authority: sole writer for this slice. Edit only the Allowlist paths; never edit .devrites/**, never commit or push, and ask the user nothing.\n")
119
+ } else {
120
+ b.WriteString("Authority: read-only reviewer. Edit nothing and ask the user nothing; judge the candidate against the bundle sources.\n")
121
+ }
122
+ fmt.Fprintf(&b, "\nRead first:\n- %s/%s\n", rel, bundle)
123
+ if candidate != "" {
124
+ fmt.Fprintf(&b, "- %s/packets/%s.diff\n", rel, wave)
125
+ }
126
+ if wright {
127
+ raw, err := readWorkspaceArtifact(root, slug, "tasks.md")
128
+ if err != nil {
129
+ return fail(err)
130
+ }
131
+ writes, _ := sliceWritePaths(raw, ParseTaskGraph(raw))
132
+ if len(writes[slice]) == 0 {
133
+ return fail(fmt.Errorf("slice %s names no Writer allowlist or Files likely touched in tasks.md", slice))
134
+ }
135
+ b.WriteString("\nAllowlist:\n")
136
+ for _, p := range writes[slice] {
137
+ fmt.Fprintf(&b, "- %s\n", p)
138
+ }
139
+ if checks != "" {
140
+ lines, err := writerSafeChecks(root, slug, checks)
141
+ if err != nil {
142
+ return fail(err)
143
+ }
144
+ b.WriteString("\n" + lines)
145
+ }
146
+ }
147
+ if candidate != "" {
148
+ source := "verbatim from"
149
+ if partial {
150
+ source = "header rows verbatim; per-file rows in"
151
+ }
152
+ fmt.Fprintf(&b, "\nCandidate (%s %s/packets/%s.sha256):\n```text\n%s```\n", source, rel, wave, candidate)
153
+ }
154
+ if focus != "" {
155
+ rows, err := focusRows(workspace, focus)
156
+ if err != nil {
157
+ return fail(err)
158
+ }
159
+ heading := "Open findings:"
160
+ switch {
161
+ case wright:
162
+ heading = "Focus (defects to fix, carry-forward constraints to honor):"
163
+ case doubt:
164
+ heading = "Claim to attack:"
165
+ if rows == "" || strings.Count(rows, "\n") > 3 {
166
+ return fail(fmt.Errorf("--focus %s must hold the 1-3 row claim the doubt-reviewer attacks", focus))
167
+ }
168
+ }
169
+ if rows != "" {
170
+ b.WriteString("\n" + heading + "\n" + rows)
171
+ }
172
+ }
173
+ if wright {
174
+ b.WriteString("\nReturn: every field of your role's return block, with each Writer-safe check's command and exit status.\n")
175
+ } else {
176
+ b.WriteString("\nReturn (lines 1-2 exactly, then your role's rows):\nOutcome: <findings|no-findings|gap>\nCounts:")
177
+ for _, key := range countKeys(role) {
178
+ fmt.Fprintf(&b, " %s=<n>", key)
179
+ }
180
+ b.WriteString("\n")
181
+ }
182
+
183
+ name := wave + "." + role + ".md"
184
+ if wright {
185
+ name = wave + ".contract.md"
186
+ }
187
+ out := filepath.Join(workspace, "packets", name)
188
+ if err := os.MkdirAll(filepath.Dir(out), 0o755); err != nil {
189
+ return fail(err)
190
+ }
191
+ // Lint a sibling draft so a refused re-render keeps the packet already on disk.
192
+ draft := filepath.Join(workspace, "packets", "."+name+".draft")
193
+ if err := state.AtomicWrite(draft, []byte(b.String()), 0o600); err != nil {
194
+ return fail(err)
195
+ }
196
+ if err := lintRenderedPacket(root, slug, draft, role, wright, finalPhase); err != nil {
197
+ _ = os.Remove(draft)
198
+ return fail(fmt.Errorf("BLOCKED: %w", err))
199
+ }
200
+ if err := os.Rename(draft, out); err != nil {
201
+ _ = os.Remove(draft)
202
+ return fail(err)
203
+ }
204
+ fmt.Fprintf(stdout, "packet: %s/packets/%s (%s, %d bytes)\n", rel, name, role, b.Len())
205
+ return 0
206
+ }
207
+
208
+ // lintRenderedPacket runs the lints dispatch open runs for the role; a wright
209
+ // contract also gets the gates.md `RUN: writer` precheck lint.
210
+ func lintRenderedPacket(root, slug, path, role string, wright, finalPhase bool) error {
211
+ if wright {
212
+ return lintWrightContractFor(root, slug, path)
213
+ }
214
+ if err := lintReviewerWavePacket(path, []string{role}); err != nil {
215
+ return err
216
+ }
217
+ if finalPhase {
218
+ return lintReviewCandidate(root, slug, path)
219
+ }
220
+ return nil
221
+ }
222
+
223
+ // frozenCandidate returns packets/<wave>.sha256 when candidate freeze wrote
224
+ // both it and a non-empty diff, or "" when the wave has no frozen candidate.
225
+ // partial reports that only the header rows were kept: the per-file rows of a
226
+ // large candidate would push the packet past the dispatch lints' read bound.
227
+ func frozenCandidate(workspace, wave string) (sums string, partial bool, err error) {
228
+ raw, err := readBoundedRegularFile(filepath.Join(workspace, "packets", wave+".sha256"), workspaceArtifactLimit)
229
+ if errors.Is(err, os.ErrNotExist) {
230
+ return "", false, nil
231
+ }
232
+ if err != nil {
233
+ return "", false, fmt.Errorf("packets/%s.sha256: %w", wave, err)
234
+ }
235
+ if info, err := os.Stat(filepath.Join(workspace, "packets", wave+".diff")); err != nil || !info.Mode().IsRegular() || info.Size() == 0 {
236
+ return "", false, fmt.Errorf("packets/%s.sha256 has no non-empty packets/%s.diff beside it; rerun candidate freeze under a new wave", wave, wave)
237
+ }
238
+ if len(raw) <= maxContractBytes/2 {
239
+ return string(raw), false, nil
240
+ }
241
+ var head strings.Builder
242
+ for _, line := range strings.SplitAfter(string(raw), "\n") {
243
+ if !strings.HasPrefix(line, "file ") {
244
+ head.WriteString(line)
245
+ }
246
+ }
247
+ return head.String(), true, nil
248
+ }
249
+
250
+ // writerSafeChecks resolves each named gates.md gate to its CHECK, refusing an
251
+ // unknown gate or a CHECK no approved test-plan.md preflight row vets, and adds
252
+ // `gates precheck` when the ledger marks a gate `RUN: writer`.
253
+ func writerSafeChecks(root, slug, ids string) (string, error) {
254
+ ledger, err := readWorkspaceArtifact(root, slug, acceptance.GatesFile)
255
+ if err != nil {
256
+ return "", fmt.Errorf("--checks: %w", err)
257
+ }
258
+ plan, err := readWorkspaceArtifact(root, slug, "test-plan.md")
259
+ if err != nil {
260
+ return "", fmt.Errorf("--checks: %w", err)
261
+ }
262
+ doc := acceptance.ParseLedger(string(ledger))
263
+ approved := acceptance.ApprovedCommands(plan)
264
+ var names []string
265
+ var rows strings.Builder
266
+ for _, id := range strings.Split(ids, ",") {
267
+ id = strings.TrimSpace(id)
268
+ var gate *acceptance.Gate
269
+ for _, g := range doc.Gates {
270
+ if g.ID == id {
271
+ gate = g
272
+ break
273
+ }
274
+ }
275
+ switch {
276
+ case gate == nil:
277
+ return "", fmt.Errorf("--checks: gate %q is not in %s", id, acceptance.GatesFile)
278
+ case gate.Check == "":
279
+ return "", fmt.Errorf("--checks: gate %s has no CHECK", id)
280
+ case !acceptance.Approved(gate.Check, gate.Cwd, approved):
281
+ return "", fmt.Errorf("--checks: gate %s CHECK is not an approved test-plan.md Build-entry preflight row", id)
282
+ }
283
+ names = append(names, id)
284
+ cwd := gate.Cwd
285
+ if cwd == "" {
286
+ cwd = "repository root"
287
+ }
288
+ fmt.Fprintf(&rows, "- %s (cwd %s): `%s`\n", id, cwd, gate.Check)
289
+ }
290
+ if len(doc.WriterGates()) > 0 {
291
+ fmt.Fprintf(&rows, "- gates precheck (cwd repository root): `devrites-engine gates precheck %s --worktree .`\n", slug)
292
+ }
293
+ return "Writer-safe checks: " + strings.Join(names, ", ") + "\n" + rows.String(), nil
294
+ }
295
+
296
+ // focusRows reads the --focus file (relative to the workspace) and returns its
297
+ // open-finding rows, refusing any non-blank line of another shape.
298
+ func focusRows(workspace, focus string) (string, error) {
299
+ path := focus
300
+ if !filepath.IsAbs(path) {
301
+ path = filepath.Join(workspace, filepath.FromSlash(focus))
302
+ }
303
+ raw, err := readBoundedRegularFile(path, maxContractBytes)
304
+ if err != nil {
305
+ return "", fmt.Errorf("--focus %s: %w", focus, err)
306
+ }
307
+ var rows strings.Builder
308
+ for i, line := range strings.Split(string(raw), "\n") {
309
+ line = strings.TrimRight(line, "\r")
310
+ if strings.TrimSpace(line) == "" {
311
+ continue
312
+ }
313
+ if !focusRowRE.MatchString(line) {
314
+ return "", fmt.Errorf("--focus %s:%d is not an open-finding row \"- <finding-ID> <path:line> <text up to 240 characters>\"; a packet carries open findings only, never narrative or outcomes", focus, i+1)
315
+ }
316
+ rows.WriteString(line + "\n")
317
+ }
318
+ return rows.String(), nil
319
+ }
@@ -0,0 +1,227 @@
1
+ package lib
2
+
3
+ import (
4
+ "crypto/sha256"
5
+ "errors"
6
+ "fmt"
7
+ "io"
8
+ "os"
9
+ "path/filepath"
10
+ "regexp"
11
+ "sort"
12
+ "strings"
13
+
14
+ "github.com/devrites/devrites/internal/devritespaths"
15
+ "github.com/devrites/devrites/internal/state"
16
+ )
17
+
18
+ // CandidateFreezeUsage is the help and usage-error text for `candidate freeze`.
19
+ const CandidateFreezeUsage = `usage: devrites-engine candidate freeze <slug> --wave <w> (--slice <SLICE-ID> | --paths <path>...) [--base <ref>]
20
+
21
+ Freezes one review candidate. It writes packets/<w>.diff (the path set's
22
+ tracked changes against --base, default HEAD, plus each untracked file as a
23
+ /dev/null diff) and packets/<w>.sha256 (base commit, diff digest, per-file
24
+ sha256, and the aggregate candidate digest under the check candidate domain
25
+ and bounds). --slice takes that slice's Writer allowlist (else Files likely
26
+ touched) from tasks.md. A wave's frozen candidate is never replaced by a
27
+ different one; freeze a changed candidate under a new wave.
28
+ `
29
+
30
+ // packetNameRE bounds a wave, role, phase, or slice used in a packets/ or
31
+ // ctx/ file name: one path component, no traversal.
32
+ var packetNameRE = regexp.MustCompile(`^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$`)
33
+
34
+ // RunCandidateFreeze implements `candidate freeze`: the producer of the frozen
35
+ // .diff a Review or Seal reviewer packet must name.
36
+ func RunCandidateFreeze(root string, args []string, stdout, stderr io.Writer) int {
37
+ var wave, slice, base string
38
+ var paths, positional []string
39
+ for i := 0; i < len(args); i++ {
40
+ value := argAt(args, i+1)
41
+ switch args[i] {
42
+ case "--wave":
43
+ wave = value
44
+ case "--slice":
45
+ slice = value
46
+ case "--base":
47
+ base = value
48
+ case "--paths":
49
+ for i+1 < len(args) && !strings.HasPrefix(args[i+1], "-") {
50
+ i++
51
+ paths = append(paths, args[i])
52
+ }
53
+ continue
54
+ default:
55
+ if strings.HasPrefix(args[i], "-") {
56
+ fmt.Fprintf(stderr, "candidate freeze: unknown flag %q\n", args[i])
57
+ return 2
58
+ }
59
+ positional = append(positional, args[i])
60
+ continue
61
+ }
62
+ i++
63
+ }
64
+ if len(positional) != 1 || !packetNameRE.MatchString(wave) || (slice == "") == (len(paths) == 0) {
65
+ fmt.Fprint(stderr, CandidateFreezeUsage)
66
+ return 2
67
+ }
68
+ slug := positional[0]
69
+ fail := func(err error) int {
70
+ fmt.Fprintf(stderr, "candidate freeze: %v\n", err)
71
+ return 3
72
+ }
73
+ workspace, err := devritespaths.ExistingFeatureDirChecked(root, slug)
74
+ if err != nil {
75
+ return fail(err)
76
+ }
77
+ if slice != "" {
78
+ raw, err := readWorkspaceArtifact(root, slug, "tasks.md")
79
+ if err != nil {
80
+ return fail(err)
81
+ }
82
+ writes, _ := sliceWritePaths(raw, ParseTaskGraph(raw))
83
+ if paths = writes[slice]; len(paths) == 0 {
84
+ return fail(fmt.Errorf("slice %s names no Writer allowlist or Files likely touched in tasks.md", slice))
85
+ }
86
+ }
87
+ project := projectDir(root)
88
+ rows, err := freezeRows(project, paths)
89
+ if err != nil {
90
+ return fail(err)
91
+ }
92
+ if err := validateCandidateRows(project, rows); err != nil {
93
+ return fail(err)
94
+ }
95
+ diff, baseCommit, err := freezeDiff(project, base, rows)
96
+ if err != nil {
97
+ return fail(err)
98
+ }
99
+ if len(diff) == 0 {
100
+ return fail(errors.New("the path set has no change against the base; there is no candidate to freeze"))
101
+ }
102
+ digest, err := hashCandidate(project, rows)
103
+ if err != nil {
104
+ return fail(err)
105
+ }
106
+ var sums strings.Builder
107
+ fmt.Fprintf(&sums, "%s %s\nbase %s\ndiff %x packets/%s.diff\n", candidateDigestDomain, candidateDigestVersion, baseCommit, sha256.Sum256(diff), wave)
108
+ for _, row := range rows {
109
+ if row.state != "present" {
110
+ fmt.Fprintf(&sums, "file absent %s\n", row.path)
111
+ continue
112
+ }
113
+ file := sha256.New()
114
+ if err := hashCandidateFile(file, project, row); err != nil {
115
+ return fail(fmt.Errorf("candidate %q: %w", row.path, err))
116
+ }
117
+ fmt.Fprintf(&sums, "file %x %s\n", file.Sum(nil), row.path)
118
+ }
119
+ fmt.Fprintf(&sums, "aggregate %s\n", digest)
120
+
121
+ dir := filepath.Join(workspace, "packets")
122
+ diffPath, sumPath := filepath.Join(dir, wave+".diff"), filepath.Join(dir, wave+".sha256")
123
+ if prev, err := readBoundedRegularFile(sumPath, workspaceArtifactLimit); err == nil && string(prev) != sums.String() {
124
+ return fail(fmt.Errorf("packets/%s.sha256 already freezes a different candidate; a frozen candidate is never replaced, so freeze this one under a new wave", wave))
125
+ } else if err != nil && !errors.Is(err, os.ErrNotExist) {
126
+ return fail(err)
127
+ }
128
+ if err := os.MkdirAll(dir, 0o755); err != nil {
129
+ return fail(err)
130
+ }
131
+ if err := state.AtomicWrite(diffPath, diff, 0o600); err != nil {
132
+ return fail(err)
133
+ }
134
+ if err := state.AtomicWrite(sumPath, []byte(sums.String()), 0o600); err != nil {
135
+ return fail(err)
136
+ }
137
+ rel := workspaceRel(root, workspace)
138
+ fmt.Fprintf(stdout, "candidate: %s (%d paths, base %s)\ndiff: %s/packets/%s.diff\nsha256: %s/packets/%s.sha256\n", digest, len(rows), baseCommit, rel, wave, rel, wave)
139
+ return 0
140
+ }
141
+
142
+ // freezeRows normalizes, deduplicates, and sorts the path set, marking each
143
+ // row present or deleted (absent) as hashCandidate expects.
144
+ func freezeRows(project string, paths []string) ([]candidateRow, error) {
145
+ seen := map[string]bool{}
146
+ var rows []candidateRow
147
+ for _, p := range paths {
148
+ name, err := normalizeCandidatePath(p)
149
+ if err != nil {
150
+ return nil, fmt.Errorf("path %q: %w", p, err)
151
+ }
152
+ if seen[name] {
153
+ continue
154
+ }
155
+ seen[name] = true
156
+ _, exists, err := candidatePathInfo(project, name)
157
+ if err != nil {
158
+ return nil, fmt.Errorf("candidate %q: %w", name, err)
159
+ }
160
+ row := candidateRow{state: "deleted", path: name}
161
+ if exists {
162
+ row.state = "present"
163
+ }
164
+ rows = append(rows, row)
165
+ }
166
+ if len(rows) > maxCandidateRows {
167
+ return nil, errors.New("path set exceeds 4096 rows")
168
+ }
169
+ sort.Slice(rows, func(i, j int) bool { return rows[i].path < rows[j].path })
170
+ return rows, nil
171
+ }
172
+
173
+ // freezeDiff renders the path set's tracked changes against base, then each
174
+ // untracked file as a /dev/null diff, with fixed prefixes so git apply takes it
175
+ // whatever the user's diff config.
176
+ func freezeDiff(project, base string, rows []candidateRow) ([]byte, string, error) {
177
+ if base == "" {
178
+ base = "HEAD"
179
+ }
180
+ if strings.HasPrefix(base, "-") {
181
+ return nil, "", fmt.Errorf("--base %q is not a revision", base)
182
+ }
183
+ out, err := runGitCommand(project, nil, "rev-parse", "--verify", "--quiet", base+"^{commit}")
184
+ if err != nil {
185
+ return nil, "", fmt.Errorf("--base %q is not a commit: %w", base, err)
186
+ }
187
+ commit := strings.TrimSpace(string(out))
188
+ names := make([]string, len(rows))
189
+ for i, row := range rows {
190
+ names[i] = row.path
191
+ }
192
+ flags := []string{"--binary", "--no-color", "--no-ext-diff", "--no-textconv", "--no-renames", "--src-prefix=a/", "--dst-prefix=b/"}
193
+ diff, err := runGitCommand(project, nil, append(append(append([]string{"--literal-pathspecs", "diff"}, flags...), "--relative", commit, "--"), names...)...)
194
+ if err != nil {
195
+ return nil, "", err
196
+ }
197
+ diff = append([]byte(nil), diff...)
198
+ untracked, err := runGitCommand(project, nil, append([]string{"--literal-pathspecs", "ls-files", "--others", "-z", "--"}, names...)...)
199
+ if err != nil {
200
+ return nil, "", err
201
+ }
202
+ for _, name := range strings.Split(string(untracked), "\x00") {
203
+ if name == "" {
204
+ continue
205
+ }
206
+ var part cappedGitOutput
207
+ _, err := runGitCommandIO(project, nil, nil, &part, append(append([]string{"diff", "--no-index"}, flags...), "--", "/dev/null", name)...)
208
+ var gitErr *gitCommandError
209
+ if err != nil && !(errors.As(err, &gitErr) && gitErr.exitCode == 1) {
210
+ return nil, "", err // --no-index exits 1 when the files differ
211
+ }
212
+ if part.truncated || len(diff)+part.Len() > gitOutputLimit {
213
+ return nil, "", errors.New("candidate diff exceeds the git output limit")
214
+ }
215
+ diff = append(diff, part.Bytes()...)
216
+ }
217
+ return diff, commit, nil
218
+ }
219
+
220
+ // workspaceRel is the feature workspace as a slash path relative to the
221
+ // project, the form packets hand agents; it falls back to the absolute path.
222
+ func workspaceRel(root, workspace string) string {
223
+ if rel, err := filepath.Rel(projectDir(root), workspace); err == nil {
224
+ return filepath.ToSlash(rel)
225
+ }
226
+ return filepath.ToSlash(workspace)
227
+ }