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
@@ -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) {
@@ -272,45 +272,52 @@ func claimAdd(root string, args []string, stdout, stderr io.Writer) int {
272
272
  raw = append(raw, args[i])
273
273
  }
274
274
  }
275
+ _, code := addClaim(root, session, reason, ttl, raw, stdout, stderr)
276
+ return code
277
+ }
278
+
279
+ // addClaim records one claim and returns its id. It refuses, writing nothing,
280
+ // while a live foreign session holds an overlapping path.
281
+ func addClaim(root, session, reason string, ttl int, raw []string, stdout, stderr io.Writer) (string, int) {
275
282
  if !validSession(session) {
276
283
  fmt.Fprintln(stderr, "claim: --session is required (1-128 chars: letters, digits, - _ . : /)")
277
- return 2
284
+ return "", 2
278
285
  }
279
286
  paths, err := normalizeClaimPaths(raw)
280
287
  if err != nil {
281
288
  fmt.Fprintf(stderr, "claim: %v\n", err)
282
- return 2
289
+ return "", 2
283
290
  }
284
291
  path := claimsPath(root)
285
292
  // Hold the ledger lock across read, conflict check, and append so two
286
293
  // sessions cannot both pass the check and claim the same path.
287
- code := 0
294
+ id, code := "", 0
288
295
  if err := state.WithLock(path+".lock", func() error {
289
- code = claimAddLocked(path, session, reason, ttl, paths, stdout, stderr)
296
+ id, code = claimAddLocked(path, session, reason, ttl, paths, stdout, stderr)
290
297
  return nil
291
298
  }); err != nil {
292
299
  fmt.Fprintf(stderr, "claim: %v\n", err)
293
- return 2
300
+ return "", 2
294
301
  }
295
- return code
302
+ return id, code
296
303
  }
297
304
 
298
- func claimAddLocked(path, session, reason string, ttl int, paths []string, stdout, stderr io.Writer) int {
305
+ func claimAddLocked(path, session, reason string, ttl int, paths []string, stdout, stderr io.Writer) (string, int) {
299
306
  latest, order, bad, err := readClaims(path)
300
307
  if err != nil {
301
308
  fmt.Fprintf(stderr, "claim: %v\n", err)
302
- return 2
309
+ return "", 2
303
310
  }
304
311
  if bad > 0 {
305
312
  fmt.Fprintf(stderr, unparsedLedgerMsg, bad)
306
- return 2
313
+ return "", 2
307
314
  }
308
315
  now := time.Now().UTC()
309
316
  probe := newHolderProbe()
310
317
  conflicts := claimConflicts(probe.withoutGone(liveClaims(latest, order, now)), session, paths)
311
318
  if len(conflicts) > 0 {
312
319
  printConflicts(stderr, conflicts)
313
- return 3
320
+ return "", 3
314
321
  }
315
322
  rec := &claimRecord{
316
323
  ID: newClaimID(),
@@ -325,10 +332,10 @@ func claimAddLocked(path, session, reason string, ttl int, paths []string, stdou
325
332
  }
326
333
  if err := appendClaim(path, rec); err != nil {
327
334
  fmt.Fprintf(stderr, "claim: %v\n", err)
328
- return 2
335
+ return "", 2
329
336
  }
330
337
  fmt.Fprintf(stdout, "claim: %s claimed %d path(s) until %s\n", rec.ID, len(paths), rec.ExpiresAt)
331
- return 0
338
+ return rec.ID, 0
332
339
  }
333
340
 
334
341
  func claimRelease(root string, args []string, stdout, stderr io.Writer) int {
@@ -350,33 +357,38 @@ func claimRelease(root string, args []string, stdout, stderr io.Writer) int {
350
357
  fmt.Fprintln(stderr, "claim: release requires --session and --id")
351
358
  return 2
352
359
  }
353
- path := claimsPath(root)
354
- latest, _, _, err := readClaims(path)
360
+ n, err := releaseClaim(root, session, id)
355
361
  if err != nil {
356
362
  fmt.Fprintf(stderr, "claim: %v\n", err)
357
363
  return 2
358
364
  }
365
+ fmt.Fprintf(stdout, "claim: %s released %d path(s)\n", id, n)
366
+ return 0
367
+ }
368
+
369
+ // releaseClaim marks session's claim id released and returns its path count.
370
+ func releaseClaim(root, session, id string) (int, error) {
371
+ path := claimsPath(root)
372
+ latest, _, _, err := readClaims(path)
373
+ if err != nil {
374
+ return 0, err
375
+ }
359
376
  rec, ok := latest[id]
360
377
  if !ok {
361
- fmt.Fprintf(stderr, "claim: unknown claim %q\n", id)
362
- return 2
378
+ return 0, fmt.Errorf("unknown claim %q", id)
363
379
  }
364
380
  if rec.Session != session {
365
- fmt.Fprintf(stderr, "claim: %q belongs to session %q, not %q\n", id, rec.Session, session)
366
- return 2
381
+ return 0, fmt.Errorf("%q belongs to session %q, not %q", id, rec.Session, session)
367
382
  }
368
383
  if rec.Released {
369
- fmt.Fprintf(stderr, "claim: %q already released\n", id)
370
- return 2
384
+ return 0, fmt.Errorf("%q already released", id)
371
385
  }
372
386
  released := *rec
373
387
  released.Released = true
374
388
  if err := appendClaim(path, &released); err != nil {
375
- fmt.Fprintf(stderr, "claim: %v\n", err)
376
- return 2
389
+ return 0, err
377
390
  }
378
- fmt.Fprintf(stdout, "claim: %s released %d path(s)\n", id, len(rec.Paths))
379
- return 0
391
+ return len(rec.Paths), nil
380
392
  }
381
393
 
382
394
  func claimList(root string, args []string, stdout, stderr io.Writer) int {
@@ -401,18 +413,18 @@ func claimList(root string, args []string, stdout, stderr io.Writer) int {
401
413
  }
402
414
  now := time.Now().UTC()
403
415
  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 {
416
+ // Bare list keeps every unreleased claim (expired and dead rows decide
417
+ // who may take a path) and folds the released history into one count.
418
+ printed, released := 0, 0
419
+ for _, id := range order {
420
+ rec := latest[id]
413
421
  if rec == nil || (session != "" && rec.Session != session) {
414
422
  continue
415
423
  }
424
+ if rec.Released && !all {
425
+ released++
426
+ continue
427
+ }
416
428
  state := "live"
417
429
  if rec.Released {
418
430
  state = "released"
@@ -431,6 +443,9 @@ func claimList(root string, args []string, stdout, stderr io.Writer) int {
431
443
  if printed == 0 {
432
444
  fmt.Fprintln(stdout, "claim: no claims")
433
445
  }
446
+ if released > 0 {
447
+ fmt.Fprintf(stdout, "claim: %d released (use --all)\n", released)
448
+ }
434
449
  if bad > 0 {
435
450
  fmt.Fprintf(stdout, "claim: %d unparsed ledger line(s)\n", bad)
436
451
  }