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,67 @@
1
+ package gate
2
+
3
+ import (
4
+ "fmt"
5
+ "regexp"
6
+ "strings"
7
+
8
+ "github.com/devrites/devrites/internal/markdowntext"
9
+ "github.com/devrites/devrites/internal/state"
10
+ )
11
+
12
+ // predecessorLabel opens the line a lookahead Vet records in eng-review.md: the
13
+ // predecessor workspace this plan was written against and that predecessor's
14
+ // readiness binding digest at the time.
15
+ const predecessorLabel = "Predecessor readiness: "
16
+
17
+ // The slug pattern keeps the predecessor a single workspace name; the gate
18
+ // package resolves no workspace path itself.
19
+ var predecessorLineRE = regexp.MustCompile(`^Predecessor readiness: ([A-Za-z0-9][A-Za-z0-9._-]*) ([0-9a-f]{64})$`)
20
+
21
+ // predecessorProblems blocks readiness when the predecessor a lookahead plan
22
+ // was written against has since changed its planning inputs, so this plan must
23
+ // be re-vetted against them. A workspace without the line is never checked.
24
+ func predecessorProblems(root string, observation *state.WorkspaceObservation) []string {
25
+ phase, err := observation.DeclaredPhase()
26
+ if err != nil {
27
+ return nil
28
+ }
29
+ policy, ok := state.PolicyFor(phase)
30
+ if !ok || !phaseRequiresReadinessBinding(policy) {
31
+ return nil
32
+ }
33
+ fact, ok := observation.Fact("eng-review.md")
34
+ if !ok || fact.State() != state.ArtifactPresent {
35
+ return nil
36
+ }
37
+ visible, err := markdowntext.Structural(fact.Bytes())
38
+ if err != nil {
39
+ return nil
40
+ }
41
+ var lines []string
42
+ for _, raw := range strings.Split(string(visible), "\n") {
43
+ if line := strings.TrimSuffix(raw, "\r"); strings.Contains(line, predecessorLabel) {
44
+ lines = append(lines, line)
45
+ }
46
+ }
47
+ switch {
48
+ case len(lines) == 0:
49
+ return nil
50
+ case len(lines) > 1:
51
+ return []string{"eng-review.md holds more than one Predecessor readiness line; rerun /rite-vet and record exactly one"}
52
+ }
53
+ match := predecessorLineRE.FindStringSubmatch(lines[0])
54
+ if match == nil {
55
+ return []string{fmt.Sprintf("malformed %q; rerun /rite-vet and record `%s<slug> <64-hex digest>`", lines[0], predecessorLabel)}
56
+ }
57
+ slug, recorded := match[1], match[2]
58
+ current, err := ReadinessBinding(root, slug)
59
+ if err != nil {
60
+ return []string{fmt.Sprintf("predecessor %s readiness cannot be computed (%v); rerun /rite-vet against its current plan", slug, err)}
61
+ }
62
+ if strings.TrimPrefix(current, readinessBindingLabel) != recorded {
63
+ return []string{fmt.Sprintf("predecessor %s changed its planning inputs since this plan was vetted; rerun /rite-vet to re-check this plan against them and record `%s%s %s`",
64
+ slug, predecessorLabel, slug, strings.TrimPrefix(current, readinessBindingLabel))}
65
+ }
66
+ return nil
67
+ }
@@ -0,0 +1,270 @@
1
+ package lib
2
+
3
+ import (
4
+ "fmt"
5
+ "io"
6
+ "path/filepath"
7
+ "regexp"
8
+ "strconv"
9
+ "strings"
10
+ "unicode/utf8"
11
+
12
+ "github.com/devrites/devrites/internal/anchor"
13
+ "github.com/devrites/devrites/internal/devritespaths"
14
+ "github.com/devrites/devrites/internal/safepath"
15
+ )
16
+
17
+ // anchors.go: deterministic quote anchoring for one reviewer return.
18
+ // agents.md § Result admission has root anchor each Critical/Important row's
19
+ // quote at its cited file:line and its `breaks` quote in the spec or standard it
20
+ // names before the row counts as a finding. This check does that with the same
21
+ // matcher /overhaul admit uses, so no row reaches a repair round on a quote
22
+ // nobody can find.
23
+ //
24
+ // devrites-engine check anchors <slug> <return-file> [--skills-root <dir>]
25
+ //
26
+ // 0 every Critical/Important row anchored (exact or relocated)
27
+ // 2 usage error, workspace or return unreadable
28
+ // 3 blocked: an Unverified or Deferred row, which never drives a repair round
29
+ //
30
+ // A row's site is the first `;`-separated location in its second cell
31
+ // (`path:line[-line]`, or a workspace .md file with no line); its quote is the
32
+ // first backticked span in its observed cell. Paths resolve in the workspace,
33
+ // then the project. Exact match at the cited lines anchors; a quote on exactly
34
+ // one other line relocates; otherwise the row is Unverified (anchor lost or
35
+ // ambiguous). The `breaks "<quote>"` cell must quote spec.md/decisions.md for a
36
+ // spec ID, or the named shipped standard (under --skills-root when a host passes
37
+ // it); with no quote the row is Deferred.
38
+
39
+ // AnchorsUsage is the help and usage-error text for `check anchors`.
40
+ const AnchorsUsage = "usage: devrites-engine check anchors <slug> <return-file> [--skills-root <dir>]"
41
+
42
+ var (
43
+ anchorSiteRE = regexp.MustCompile(`^(\S+?)(?::([0-9]+)(?::[0-9]+)?(?:[-–]([0-9]+))?)?$`)
44
+ anchorSeverityRE = regexp.MustCompile(`(?i)^\W*(critical|important)\b`)
45
+ )
46
+
47
+ type anchorer struct{ root, project, workspace, skillsRoot string }
48
+
49
+ // RunCheckAnchors implements `devrites-engine check anchors`.
50
+ func RunCheckAnchors(root string, args []string, stdout, stderr io.Writer) int {
51
+ var positional []string
52
+ skillsRoot := ""
53
+ for i := 0; i < len(args); i++ {
54
+ if args[i] == "--skills-root" && i+1 < len(args) {
55
+ skillsRoot = args[i+1]
56
+ i++
57
+ continue
58
+ }
59
+ positional = append(positional, args[i])
60
+ }
61
+ if len(positional) != 2 || strings.HasPrefix(positional[0], "-") || strings.HasPrefix(positional[1], "-") {
62
+ fmt.Fprintln(stderr, AnchorsUsage)
63
+ return 2
64
+ }
65
+ args = positional
66
+ slug := args[0]
67
+ workspace, err := devritespaths.ExistingFeatureDirChecked(root, slug)
68
+ if err != nil {
69
+ fmt.Fprintf(stderr, "check anchors: %v\n", err)
70
+ return 2
71
+ }
72
+ raw, err := readBoundedRegularFile(args[1], maxReturnBytes)
73
+ if err != nil {
74
+ fmt.Fprintf(stderr, "check anchors: %s: %v\n", args[1], err)
75
+ return 2
76
+ }
77
+ // The digest lets root confirm it anchored on the candidate the reviewer saw.
78
+ if digest, n, err := CandidateIdentity(root, slug); err == nil {
79
+ fmt.Fprintf(stdout, "check anchors: candidate %s (%d files)\n", digest, n)
80
+ } else {
81
+ fmt.Fprintf(stdout, "check anchors: no candidate (%v); quotes read the live tree\n", err)
82
+ }
83
+ a := anchorer{root: root, project: projectDir(root), workspace: workspace, skillsRoot: skillsRoot}
84
+ counts := map[string]int{}
85
+ rows := 0
86
+ for i, line := range strings.Split(string(raw), "\n") {
87
+ // Fail closed on format drift: a bulleted row or a bold/colon severity is still a blocker row.
88
+ row, ok := strings.CutPrefix(strings.TrimLeft(line, " \t-*•"), "Finding:")
89
+ if !ok {
90
+ continue
91
+ }
92
+ cells := splitFindingCells(row)
93
+ if !anchorSeverityRE.MatchString(cells[0]) {
94
+ continue
95
+ }
96
+ rows++
97
+ status, detail := a.row(cells)
98
+ counts[status]++
99
+ switch claim := strings.TrimSpace(row); status {
100
+ case "Unverified":
101
+ fmt.Fprintf(stdout, "%d: Unverified: %s — %s\n", i+1, claim, detail)
102
+ case "Deferred":
103
+ fmt.Fprintf(stdout, "%d: Deferred: %s — no spec anchor\n", i+1, claim)
104
+ default:
105
+ fmt.Fprintf(stdout, "%d: %s %s\n", i+1, status, detail)
106
+ }
107
+ }
108
+ summary := fmt.Sprintf("anchored=%d relocated=%d unverified=%d deferred=%d",
109
+ counts["anchored"], counts["relocated"], counts["Unverified"], counts["Deferred"])
110
+ recordMetricNote(root, slug, cursorPhase(root, slug), "anchors", "", summary)
111
+ if counts["Unverified"]+counts["Deferred"] > 0 {
112
+ fmt.Fprintf(stdout, "check anchors: BLOCKED: %d Critical/Important rows, %s; Unverified and Deferred rows never drive a repair round\n", rows, summary)
113
+ return 3
114
+ }
115
+ fmt.Fprintf(stdout, "check anchors: OK: %d Critical/Important rows, %s\n", rows, summary)
116
+ return 0
117
+ }
118
+
119
+ // row classifies one blocker row: anchored, relocated, Unverified or Deferred.
120
+ func (a anchorer) row(cells []string) (status, detail string) {
121
+ if len(cells) < 3 {
122
+ return "Unverified", "missing file:line"
123
+ }
124
+ status, detail = a.site(cells[1], cells[2])
125
+ if status == "Unverified" {
126
+ return status, detail
127
+ }
128
+ if bs, bd := a.breaks(cells[2:]); bs != "anchored" {
129
+ return bs, bd
130
+ }
131
+ return status, detail
132
+ }
133
+
134
+ // site anchors the observed quote at the row's cited location.
135
+ func (a anchorer) site(location, observed string) (status, detail string) {
136
+ cited := strings.TrimSpace(strings.Split(strings.ReplaceAll(location, "`", ""), ";")[0])
137
+ cited, _, _ = strings.Cut(cited, "§")
138
+ cited = strings.TrimSpace(cited)
139
+ m := anchorSiteRE.FindStringSubmatch(cited)
140
+ if m == nil || m[2] == "" && !strings.HasSuffix(m[1], ".md") {
141
+ return "Unverified", "missing file:line"
142
+ }
143
+ _, rest, hasQuote := strings.Cut(observed, "`")
144
+ quote, _, closed := strings.Cut(rest, "`")
145
+ if !hasQuote || !closed || strings.TrimSpace(quote) == "" {
146
+ return "Unverified", "missing quote"
147
+ }
148
+ lines, err := a.lines(m[1])
149
+ if err != nil {
150
+ return "Unverified", "anchor lost: " + err.Error()
151
+ }
152
+ if m[2] != "" {
153
+ s, _ := strconv.Atoi(m[2])
154
+ e := s
155
+ if m[3] != "" {
156
+ e, _ = strconv.Atoi(m[3])
157
+ }
158
+ if 1 <= s && s <= e && e <= len(lines) {
159
+ switch anchor.At(lines, s, e, quote) {
160
+ case anchor.Found:
161
+ return "anchored", cited
162
+ case anchor.TooShort:
163
+ return "Unverified", fmt.Sprintf("anchor ambiguous: quote under %d characters; quote the whole line", anchor.MinRunes)
164
+ }
165
+ }
166
+ }
167
+ // shortcut: relocation searches single lines; a quote spanning lines anchors only at its cited range.
168
+ switch hits := anchor.Find(lines, quote); {
169
+ case len(hits) == 1 && m[2] == "":
170
+ return "anchored", fmt.Sprintf("%s:%d", m[1], hits[0])
171
+ case len(hits) == 1:
172
+ return "relocated", fmt.Sprintf("%s -> %s:%d", cited, m[1], hits[0])
173
+ case len(hits) == 0:
174
+ return "Unverified", "anchor lost"
175
+ }
176
+ return "Unverified", "anchor ambiguous"
177
+ }
178
+
179
+ // breaks anchors the `breaks <anchor> "<quote>"` cell in the spec or standard it names.
180
+ func (a anchorer) breaks(cells []string) (status, detail string) {
181
+ for _, cell := range cells {
182
+ cited, ok := strings.CutPrefix(strings.TrimSpace(cell), "breaks ")
183
+ if !ok {
184
+ continue
185
+ }
186
+ open := strings.IndexAny(cited, "\"“")
187
+ closing := strings.LastIndexAny(cited, "\"”")
188
+ if open < 0 || closing <= open {
189
+ return "Deferred", ""
190
+ }
191
+ _, size := utf8.DecodeRuneInString(cited[open:])
192
+ name, quote := cited[:open], cited[open+size:closing]
193
+ var paths []string
194
+ switch base := mdName(name); base {
195
+ case "":
196
+ paths = []string{filepath.Join(a.workspace, "spec.md"), filepath.Join(a.workspace, "decisions.md")}
197
+ case "spec.md", "decisions.md":
198
+ paths = []string{filepath.Join(a.workspace, base)}
199
+ default:
200
+ if skills, err := resolveSkillsRoot(a.root, a.skillsRoot); err == nil {
201
+ paths = []string{filepath.Join(skills, "devrites-lib", "reference", "standards", base)}
202
+ }
203
+ }
204
+ var text []string
205
+ for _, p := range paths {
206
+ if raw, err := readBoundedRegularFile(p, workspaceArtifactLimit); err == nil {
207
+ text = append(text, anchor.Lines(raw)...)
208
+ }
209
+ }
210
+ if len(text) == 0 {
211
+ return "Unverified", fmt.Sprintf("breaks anchor lost: %s is unreadable", strings.TrimSpace(name))
212
+ }
213
+ // One window over the whole text, so a quote wrapped across lines matches.
214
+ switch anchor.At([]string{strings.Join(text, " ")}, 1, 1, quote) {
215
+ case anchor.NotFound:
216
+ return "Unverified", "breaks anchor lost"
217
+ case anchor.TooShort:
218
+ return "Unverified", fmt.Sprintf("breaks anchor ambiguous: quote under %d characters", anchor.MinRunes)
219
+ }
220
+ return "anchored", ""
221
+ }
222
+ return "Deferred", ""
223
+ }
224
+
225
+ // lines reads a cited file from the workspace, else the project, never outside them.
226
+ func (a anchorer) lines(rel string) ([]string, error) {
227
+ for _, base := range []string{a.workspace, a.project} {
228
+ full := rel
229
+ if !filepath.IsAbs(rel) {
230
+ full = filepath.Join(base, filepath.FromSlash(rel))
231
+ }
232
+ if !safepath.WithinResolved(full, base) {
233
+ continue
234
+ }
235
+ if raw, err := readBoundedRegularFile(full, maxCandidateFileBytes); err == nil {
236
+ return anchor.Lines(raw), nil
237
+ }
238
+ }
239
+ return nil, fmt.Errorf("%s is not a file under the workspace or project", rel)
240
+ }
241
+
242
+ // mdName is the base name of the first .md file a breaks anchor names, or "".
243
+ func mdName(name string) string {
244
+ for _, field := range strings.Fields(strings.ReplaceAll(name, "`", " ")) {
245
+ if field = strings.TrimRight(field, ",;:"); strings.HasSuffix(field, ".md") {
246
+ return filepath.Base(field)
247
+ }
248
+ }
249
+ return ""
250
+ }
251
+
252
+ // splitFindingCells splits a Finding: row on "|" outside backticked code, so a
253
+ // quoted `a || b` stays one cell.
254
+ func splitFindingCells(row string) []string {
255
+ var cells []string
256
+ var b strings.Builder
257
+ code := false
258
+ for _, r := range row {
259
+ switch {
260
+ case r == '`':
261
+ code = !code
262
+ case r == '|' && !code:
263
+ cells = append(cells, b.String())
264
+ b.Reset()
265
+ continue
266
+ }
267
+ b.WriteRune(r)
268
+ }
269
+ return append(cells, b.String())
270
+ }
@@ -361,7 +361,8 @@ func applyHunks(base string, hunks []candidateHunk) (string, []string) {
361
361
  // checkBundleResult rejects an outcome the root would otherwise discover only
362
362
  // at Vet: a tracked ID that vanished from every touched file without being
363
363
  // listed in retired_ids, a new tasks.md graph problem, or a budgeted artifact
364
- // that grew into material overshoot without a `Budget override:` line.
364
+ // that grew into material overshoot without a covering
365
+ // `Budget override: <=N lines; <reason>` line.
365
366
  func checkBundleResult(targets []*bundleTarget, retired map[string]bool) []string {
366
367
  var problems []string
367
368
  beforeIDs, afterIDs := map[string]bool{}, map[string]bool{}
@@ -69,29 +69,38 @@ func loadCandidateIdentity(root, slug string) (candidateIdentity, error) {
69
69
  return candidateIdentity{}, fmt.Errorf("candidate manifest %s: %w; refresh touched-files.md", manifestPath, err)
70
70
  }
71
71
  project := projectDir(root)
72
+ if err := validateCandidateRows(project, rows); err != nil {
73
+ return candidateIdentity{}, err
74
+ }
75
+ digest, err := hashCandidate(project, rows)
76
+ if err != nil {
77
+ return candidateIdentity{}, err
78
+ }
79
+ return candidateIdentity{digest: digest, rows: rows}, nil
80
+ }
81
+
82
+ // validateCandidateRows checks every row against the filesystem and the
83
+ // per-file, aggregate, and distinct-object bounds before anything is hashed.
84
+ func validateCandidateRows(project string, rows []candidateRow) error {
72
85
  var total int64
73
86
  for i := range rows {
74
87
  if err := validateCandidateRow(project, &rows[i]); err != nil {
75
- return candidateIdentity{}, fmt.Errorf("candidate %q: %w", rows[i].path, err)
88
+ return fmt.Errorf("candidate %q: %w", rows[i].path, err)
76
89
  }
77
90
  if rows[i].state == "present" {
78
91
  // ponytail: the 4096-row cap bounds portable pairwise identity checks; index native file IDs if that cap grows.
79
92
  for prior := range rows[:i] {
80
93
  if rows[prior].state == "present" && os.SameFile(rows[prior].info, rows[i].info) {
81
- return candidateIdentity{}, fmt.Errorf("candidate %q: same filesystem object as candidate %q", rows[i].path, rows[prior].path)
94
+ return fmt.Errorf("candidate %q: same filesystem object as candidate %q", rows[i].path, rows[prior].path)
82
95
  }
83
96
  }
84
97
  if rows[i].size > maxCandidateTotalBytes-total {
85
- return candidateIdentity{}, errors.New("candidate present files exceed 256 MiB aggregate limit")
98
+ return errors.New("candidate present files exceed 256 MiB aggregate limit")
86
99
  }
87
100
  total += rows[i].size
88
101
  }
89
102
  }
90
- digest, err := hashCandidate(project, rows)
91
- if err != nil {
92
- return candidateIdentity{}, err
93
- }
94
- return candidateIdentity{digest: digest, rows: rows}, nil
103
+ return nil
95
104
  }
96
105
 
97
106
  func readBoundedRegularFile(name string, limit int64) ([]byte, error) {
@@ -15,6 +15,7 @@ import (
15
15
  "strings"
16
16
  "time"
17
17
 
18
+ "github.com/devrites/devrites/internal/devritespaths"
18
19
  "github.com/devrites/devrites/internal/parallel"
19
20
  "github.com/devrites/devrites/internal/state"
20
21
  )
@@ -37,10 +38,13 @@ const (
37
38
 
38
39
  const claimUsage = `usage: devrites-engine claim <add|release|list|check> ...
39
40
 
40
- claim add --session <id> [--ttl <minutes>] [--reason <s>] <path>...
41
+ claim add --session <id> [--ttl <minutes>] [--reason <s>] [--workspace <slug>] <path>...
41
42
  claim release --session <id> --id <claim-id>
42
43
  claim list [--session <id>] [--all]
43
- claim check [--session <id>] <path>...
44
+ claim check [--session <id>] [--workspace <slug>] <path>...
45
+
46
+ --workspace leases a whole feature workspace, so two root sessions never work
47
+ one workspace at once (sequence lookahead).
44
48
  `
45
49
 
46
50
  type claimRecord struct {
@@ -184,6 +188,42 @@ func normalizeClaimPaths(raw []string) ([]string, error) {
184
188
  return out, nil
185
189
  }
186
190
 
191
+ // workspaceClaimPath is the lease path for one feature workspace. Only
192
+ // --workspace reaches it; a positional .devrites path stays refused.
193
+ func workspaceClaimPath(slug string) (string, error) {
194
+ if !devritespaths.ValidSlug(slug) {
195
+ return "", fmt.Errorf("--workspace expects a feature slug, got %q", slug)
196
+ }
197
+ return ".devrites/work/" + slug, nil
198
+ }
199
+
200
+ // claimTargets normalizes positional paths and adds each --workspace lease.
201
+ func claimTargets(raw, workspaces []string) ([]string, error) {
202
+ if len(workspaces) == 0 {
203
+ return normalizeClaimPaths(raw)
204
+ }
205
+ var out []string
206
+ if len(raw) > 0 {
207
+ paths, err := normalizeClaimPaths(raw)
208
+ if err != nil {
209
+ return nil, err
210
+ }
211
+ out = paths
212
+ }
213
+ for _, slug := range workspaces {
214
+ p, err := workspaceClaimPath(slug)
215
+ if err != nil {
216
+ return nil, err
217
+ }
218
+ if slices.Contains(out, p) {
219
+ return nil, fmt.Errorf("duplicate workspace %q", slug)
220
+ }
221
+ out = append(out, p)
222
+ }
223
+ sort.Strings(out)
224
+ return out, nil
225
+ }
226
+
187
227
  func validSession(s string) bool {
188
228
  if s == "" || len(s) > 128 {
189
229
  return false
@@ -247,12 +287,15 @@ func newClaimID() string {
247
287
  func claimAdd(root string, args []string, stdout, stderr io.Writer) int {
248
288
  session, reason := "", ""
249
289
  ttl := claimDefaultTTL
250
- var raw []string
290
+ var raw, workspaces []string
251
291
  for i := 0; i < len(args); i++ {
252
292
  switch args[i] {
253
293
  case "--session":
254
294
  session = argAt(args, i+1)
255
295
  i++
296
+ case "--workspace":
297
+ workspaces = append(workspaces, argAt(args, i+1))
298
+ i++
256
299
  case "--reason":
257
300
  reason = argAt(args, i+1)
258
301
  i++
@@ -272,45 +315,56 @@ func claimAdd(root string, args []string, stdout, stderr io.Writer) int {
272
315
  raw = append(raw, args[i])
273
316
  }
274
317
  }
318
+ _, code := addClaimTargets(root, session, reason, ttl, raw, workspaces, stdout, stderr)
319
+ return code
320
+ }
321
+
322
+ // addClaim records one claim and returns its id. It refuses, writing nothing,
323
+ // while a live foreign session holds an overlapping path.
324
+ func addClaim(root, session, reason string, ttl int, raw []string, stdout, stderr io.Writer) (string, int) {
325
+ return addClaimTargets(root, session, reason, ttl, raw, nil, stdout, stderr)
326
+ }
327
+
328
+ func addClaimTargets(root, session, reason string, ttl int, raw, workspaces []string, stdout, stderr io.Writer) (string, int) {
275
329
  if !validSession(session) {
276
330
  fmt.Fprintln(stderr, "claim: --session is required (1-128 chars: letters, digits, - _ . : /)")
277
- return 2
331
+ return "", 2
278
332
  }
279
- paths, err := normalizeClaimPaths(raw)
333
+ paths, err := claimTargets(raw, workspaces)
280
334
  if err != nil {
281
335
  fmt.Fprintf(stderr, "claim: %v\n", err)
282
- return 2
336
+ return "", 2
283
337
  }
284
338
  path := claimsPath(root)
285
339
  // Hold the ledger lock across read, conflict check, and append so two
286
340
  // sessions cannot both pass the check and claim the same path.
287
- code := 0
341
+ id, code := "", 0
288
342
  if err := state.WithLock(path+".lock", func() error {
289
- code = claimAddLocked(path, session, reason, ttl, paths, stdout, stderr)
343
+ id, code = claimAddLocked(path, session, reason, ttl, paths, stdout, stderr)
290
344
  return nil
291
345
  }); err != nil {
292
346
  fmt.Fprintf(stderr, "claim: %v\n", err)
293
- return 2
347
+ return "", 2
294
348
  }
295
- return code
349
+ return id, code
296
350
  }
297
351
 
298
- func claimAddLocked(path, session, reason string, ttl int, paths []string, stdout, stderr io.Writer) int {
352
+ func claimAddLocked(path, session, reason string, ttl int, paths []string, stdout, stderr io.Writer) (string, int) {
299
353
  latest, order, bad, err := readClaims(path)
300
354
  if err != nil {
301
355
  fmt.Fprintf(stderr, "claim: %v\n", err)
302
- return 2
356
+ return "", 2
303
357
  }
304
358
  if bad > 0 {
305
359
  fmt.Fprintf(stderr, unparsedLedgerMsg, bad)
306
- return 2
360
+ return "", 2
307
361
  }
308
362
  now := time.Now().UTC()
309
363
  probe := newHolderProbe()
310
364
  conflicts := claimConflicts(probe.withoutGone(liveClaims(latest, order, now)), session, paths)
311
365
  if len(conflicts) > 0 {
312
366
  printConflicts(stderr, conflicts)
313
- return 3
367
+ return "", 3
314
368
  }
315
369
  rec := &claimRecord{
316
370
  ID: newClaimID(),
@@ -325,10 +379,10 @@ func claimAddLocked(path, session, reason string, ttl int, paths []string, stdou
325
379
  }
326
380
  if err := appendClaim(path, rec); err != nil {
327
381
  fmt.Fprintf(stderr, "claim: %v\n", err)
328
- return 2
382
+ return "", 2
329
383
  }
330
384
  fmt.Fprintf(stdout, "claim: %s claimed %d path(s) until %s\n", rec.ID, len(paths), rec.ExpiresAt)
331
- return 0
385
+ return rec.ID, 0
332
386
  }
333
387
 
334
388
  func claimRelease(root string, args []string, stdout, stderr io.Writer) int {
@@ -350,33 +404,38 @@ func claimRelease(root string, args []string, stdout, stderr io.Writer) int {
350
404
  fmt.Fprintln(stderr, "claim: release requires --session and --id")
351
405
  return 2
352
406
  }
353
- path := claimsPath(root)
354
- latest, _, _, err := readClaims(path)
407
+ n, err := releaseClaim(root, session, id)
355
408
  if err != nil {
356
409
  fmt.Fprintf(stderr, "claim: %v\n", err)
357
410
  return 2
358
411
  }
412
+ fmt.Fprintf(stdout, "claim: %s released %d path(s)\n", id, n)
413
+ return 0
414
+ }
415
+
416
+ // releaseClaim marks session's claim id released and returns its path count.
417
+ func releaseClaim(root, session, id string) (int, error) {
418
+ path := claimsPath(root)
419
+ latest, _, _, err := readClaims(path)
420
+ if err != nil {
421
+ return 0, err
422
+ }
359
423
  rec, ok := latest[id]
360
424
  if !ok {
361
- fmt.Fprintf(stderr, "claim: unknown claim %q\n", id)
362
- return 2
425
+ return 0, fmt.Errorf("unknown claim %q", id)
363
426
  }
364
427
  if rec.Session != session {
365
- fmt.Fprintf(stderr, "claim: %q belongs to session %q, not %q\n", id, rec.Session, session)
366
- return 2
428
+ return 0, fmt.Errorf("%q belongs to session %q, not %q", id, rec.Session, session)
367
429
  }
368
430
  if rec.Released {
369
- fmt.Fprintf(stderr, "claim: %q already released\n", id)
370
- return 2
431
+ return 0, fmt.Errorf("%q already released", id)
371
432
  }
372
433
  released := *rec
373
434
  released.Released = true
374
435
  if err := appendClaim(path, &released); err != nil {
375
- fmt.Fprintf(stderr, "claim: %v\n", err)
376
- return 2
436
+ return 0, err
377
437
  }
378
- fmt.Fprintf(stdout, "claim: %s released %d path(s)\n", id, len(rec.Paths))
379
- return 0
438
+ return len(rec.Paths), nil
380
439
  }
381
440
 
382
441
  func claimList(root string, args []string, stdout, stderr io.Writer) int {
@@ -401,18 +460,18 @@ func claimList(root string, args []string, stdout, stderr io.Writer) int {
401
460
  }
402
461
  now := time.Now().UTC()
403
462
  probe := newHolderProbe()
404
- rows := liveClaims(latest, order, now)
405
- if all {
406
- rows = rows[:0]
407
- for _, id := range order {
408
- rows = append(rows, latest[id])
409
- }
410
- }
411
- printed := 0
412
- for _, rec := range rows {
463
+ // Bare list keeps every unreleased claim (expired and dead rows decide
464
+ // who may take a path) and folds the released history into one count.
465
+ printed, released := 0, 0
466
+ for _, id := range order {
467
+ rec := latest[id]
413
468
  if rec == nil || (session != "" && rec.Session != session) {
414
469
  continue
415
470
  }
471
+ if rec.Released && !all {
472
+ released++
473
+ continue
474
+ }
416
475
  state := "live"
417
476
  if rec.Released {
418
477
  state = "released"
@@ -431,6 +490,9 @@ func claimList(root string, args []string, stdout, stderr io.Writer) int {
431
490
  if printed == 0 {
432
491
  fmt.Fprintln(stdout, "claim: no claims")
433
492
  }
493
+ if released > 0 {
494
+ fmt.Fprintf(stdout, "claim: %d released (use --all)\n", released)
495
+ }
434
496
  if bad > 0 {
435
497
  fmt.Fprintf(stdout, "claim: %d unparsed ledger line(s)\n", bad)
436
498
  }
@@ -439,12 +501,15 @@ func claimList(root string, args []string, stdout, stderr io.Writer) int {
439
501
 
440
502
  func claimCheck(root string, args []string, stdout, stderr io.Writer) int {
441
503
  session := ""
442
- var raw []string
504
+ var raw, workspaces []string
443
505
  for i := 0; i < len(args); i++ {
444
506
  switch args[i] {
445
507
  case "--session":
446
508
  session = argAt(args, i+1)
447
509
  i++
510
+ case "--workspace":
511
+ workspaces = append(workspaces, argAt(args, i+1))
512
+ i++
448
513
  default:
449
514
  if strings.HasPrefix(args[i], "-") {
450
515
  fmt.Fprintf(stderr, "claim: unknown flag %q\n", args[i])
@@ -453,7 +518,7 @@ func claimCheck(root string, args []string, stdout, stderr io.Writer) int {
453
518
  raw = append(raw, args[i])
454
519
  }
455
520
  }
456
- paths, err := normalizeClaimPaths(raw)
521
+ paths, err := claimTargets(raw, workspaces)
457
522
  if err != nil {
458
523
  fmt.Fprintf(stderr, "claim: %v\n", err)
459
524
  return 2