devrites 6.10.0 → 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 (641) hide show
  1. package/CHANGELOG.md +19 -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 +21 -19
  8. package/docs/engine/commands.md +22 -15
  9. package/docs/usage.md +3 -3
  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 +49 -13
  21. package/engine/internal/gate/preconditions.go +121 -0
  22. package/engine/internal/lib/anchors.go +270 -0
  23. package/engine/internal/lib/apply_bundle.go +2 -1
  24. package/engine/internal/lib/candidate.go +17 -8
  25. package/engine/internal/lib/claims.go +48 -33
  26. package/engine/internal/lib/context.go +337 -22
  27. package/engine/internal/lib/diffscope.go +201 -12
  28. package/engine/internal/lib/dispatch.go +393 -21
  29. package/engine/internal/lib/dispatch_contract.go +82 -2
  30. package/engine/internal/lib/dispatch_packet.go +224 -8
  31. package/engine/internal/lib/environment_report.go +2 -3
  32. package/engine/internal/lib/handoff.go +33 -3
  33. package/engine/internal/lib/metrics.go +119 -11
  34. package/engine/internal/lib/next.go +45 -5
  35. package/engine/internal/lib/observe_summary.go +2 -4
  36. package/engine/internal/lib/packet.go +319 -0
  37. package/engine/internal/lib/packet_freeze.go +227 -0
  38. package/engine/internal/lib/perturb.go +403 -0
  39. package/engine/internal/lib/questions_lint.go +99 -0
  40. package/engine/internal/lib/state_edit.go +396 -0
  41. package/engine/internal/lib/taskgraph.go +166 -0
  42. package/engine/internal/lib/treebaseline.go +331 -0
  43. package/engine/internal/lib/triggers.go +19 -0
  44. package/engine/internal/lib/windows.go +110 -5
  45. package/engine/internal/overhaul/admit/run.go +7 -30
  46. package/engine/internal/parallel/cli.go +27 -33
  47. package/engine/internal/parallel/git.go +10 -0
  48. package/engine/internal/parallel/select.go +36 -0
  49. package/engine/internal/state/budgets.go +60 -13
  50. package/engine/internal/state/observation.go +1 -1
  51. package/engine/main.go +61 -14
  52. package/pack/.claude/agents/devrites-code-reviewer.md +9 -5
  53. package/pack/.claude/agents/devrites-devex-reviewer.md +5 -4
  54. package/pack/.claude/agents/devrites-doubt-reviewer.md +4 -4
  55. package/pack/.claude/agents/devrites-evidence-scout.md +3 -2
  56. package/pack/.claude/agents/devrites-frontend-reviewer.md +5 -4
  57. package/pack/.claude/agents/devrites-performance-reviewer.md +5 -5
  58. package/pack/.claude/agents/devrites-plan-drafter.md +4 -2
  59. package/pack/.claude/agents/devrites-plan-reviewer.md +5 -5
  60. package/pack/.claude/agents/devrites-proof-runner.md +1 -1
  61. package/pack/.claude/agents/devrites-retrospector.md +1 -1
  62. package/pack/.claude/agents/devrites-security-auditor.md +4 -4
  63. package/pack/.claude/agents/devrites-simplifier-reviewer.md +5 -4
  64. package/pack/.claude/agents/devrites-slice-wright.md +18 -9
  65. package/pack/.claude/agents/devrites-spec-reviewer.md +4 -4
  66. package/pack/.claude/agents/devrites-strategy-reviewer.md +5 -6
  67. package/pack/.claude/agents/devrites-test-analyst.md +7 -4
  68. package/pack/.claude/agents/devrites-upgrade-planner.md +1 -1
  69. package/pack/.claude/agents/fast-builder.md +4 -2
  70. package/pack/.claude/agents/fast-checker.md +3 -2
  71. package/pack/.claude/agents/fast-critic.md +3 -2
  72. package/pack/.claude/agents/fast-planner.md +3 -3
  73. package/pack/.claude/agents/overhaul-recon.md +5 -4
  74. package/pack/.claude/settings.json +19 -7
  75. package/pack/.claude/skills/devrites-api-interface/SKILL.md +1 -1
  76. package/pack/.claude/skills/devrites-audit/SKILL.md +1 -1
  77. package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +1 -1
  78. package/pack/.claude/skills/devrites-doubt/SKILL.md +5 -5
  79. package/pack/.claude/skills/devrites-frontend-craft/reference/reuse-first.md +3 -3
  80. package/pack/.claude/skills/devrites-interview/SKILL.md +1 -1
  81. package/pack/.claude/skills/devrites-lib/SKILL.md +11 -6
  82. package/pack/.claude/skills/devrites-lib/reference/orchestration-profiles.md +2 -0
  83. package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +25 -14
  84. package/pack/.claude/skills/devrites-lib/reference/standards/README.md +2 -1
  85. package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +11 -3
  86. package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +43 -19
  87. package/pack/.claude/skills/devrites-lib/reference/standards/architecture-health.md +1 -1
  88. package/pack/.claude/skills/devrites-lib/reference/standards/code-index.md +111 -0
  89. package/pack/.claude/skills/devrites-lib/reference/standards/code-navigation.md +13 -63
  90. package/pack/.claude/skills/devrites-lib/reference/standards/context-hygiene.md +8 -9
  91. package/pack/.claude/skills/devrites-lib/reference/standards/core.md +14 -1
  92. package/pack/.claude/skills/devrites-lib/reference/standards/deprecation.md +1 -1
  93. package/pack/.claude/skills/devrites-lib/reference/standards/gates.md +10 -1
  94. package/pack/.claude/skills/devrites-lib/reference/standards/security.md +4 -0
  95. package/pack/.claude/skills/devrites-lib/reference/standards/testing.md +3 -1
  96. package/pack/.claude/skills/devrites-lib/reference/standards/tooling.md +9 -8
  97. package/pack/.claude/skills/devrites-lib/reference/standards/windows.md +3 -2
  98. package/pack/.claude/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
  99. package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +16 -16
  100. package/pack/.claude/skills/devrites-ux-shape/SKILL.md +1 -1
  101. package/pack/.claude/skills/overhaul/references/orchestration.md +3 -2
  102. package/pack/.claude/skills/rite/SKILL.md +1 -1
  103. package/pack/.claude/skills/rite-adopt/SKILL.md +1 -1
  104. package/pack/.claude/skills/rite-adopt/reference/adoption.md +1 -1
  105. package/pack/.claude/skills/rite-autocomplete/SKILL.md +5 -4
  106. package/pack/.claude/skills/rite-build/SKILL.md +4 -3
  107. package/pack/.claude/skills/rite-build/reference/afk-discipline.md +2 -0
  108. package/pack/.claude/skills/rite-build/reference/checkpoint-protocol.md +4 -1
  109. package/pack/.claude/skills/rite-build/reference/checkpoint.md +2 -0
  110. package/pack/.claude/skills/rite-build/reference/one-slice-cycle.md +1 -1
  111. package/pack/.claude/skills/rite-build/reference/output.md +2 -0
  112. package/pack/.claude/skills/rite-build/reference/parallel-batch.md +22 -12
  113. package/pack/.claude/skills/rite-build/reference/phase-contract.md +13 -3
  114. package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +42 -25
  115. package/pack/.claude/skills/rite-clarify/SKILL.md +1 -1
  116. package/pack/.claude/skills/rite-converge/SKILL.md +4 -4
  117. package/pack/.claude/skills/rite-converge/reference/convergence-assessment.md +3 -3
  118. package/pack/.claude/skills/rite-define/SKILL.md +10 -5
  119. package/pack/.claude/skills/rite-doctor/SKILL.md +17 -2
  120. package/pack/.claude/skills/rite-dogfood/SKILL.md +1 -1
  121. package/pack/.claude/skills/rite-explain/SKILL.md +1 -1
  122. package/pack/.claude/skills/rite-explain/reference/intake.md +1 -1
  123. package/pack/.claude/skills/rite-fast/SKILL.md +1 -1
  124. package/pack/.claude/skills/rite-handoff/SKILL.md +3 -3
  125. package/pack/.claude/skills/rite-handoff/reference/handoff-template.md +1 -1
  126. package/pack/.claude/skills/rite-plan/SKILL.md +4 -4
  127. package/pack/.claude/skills/rite-plan/reference/slicing.md +3 -2
  128. package/pack/.claude/skills/rite-polish/SKILL.md +6 -3
  129. package/pack/.claude/skills/rite-prove/SKILL.md +1 -1
  130. package/pack/.claude/skills/rite-quick/SKILL.md +1 -1
  131. package/pack/.claude/skills/rite-resolve/SKILL.md +1 -1
  132. package/pack/.claude/skills/rite-review/SKILL.md +4 -4
  133. package/pack/.claude/skills/rite-seal/SKILL.md +2 -2
  134. package/pack/.claude/skills/rite-ship/SKILL.md +1 -1
  135. package/pack/.claude/skills/rite-spec/SKILL.md +1 -1
  136. package/pack/.claude/skills/rite-spec/reference/investigation.md +5 -5
  137. package/pack/.claude/skills/rite-spec/reference/spec-template.md +1 -1
  138. package/pack/.claude/skills/rite-spec/reference/state-workspace.md +6 -4
  139. package/pack/.claude/skills/rite-status/SKILL.md +1 -1
  140. package/pack/.claude/skills/rite-temper/SKILL.md +1 -1
  141. package/pack/.claude/skills/rite-temper/reference/review-dimensions.md +2 -2
  142. package/pack/.claude/skills/rite-temper/reference/scope-modes.md +2 -2
  143. package/pack/.claude/skills/rite-temper/reference/significance.md +2 -2
  144. package/pack/.claude/skills/rite-vet/SKILL.md +8 -4
  145. package/pack/.claude/skills/rite-vet/reference/artifacts.md +10 -3
  146. package/pack/.claude/skills/rite-vet/reference/depth.md +2 -2
  147. package/pack/.claude/skills/rite-vet/reference/review-axes.md +2 -2
  148. package/pack/.claude/skills/rite-zoom-out/SKILL.md +6 -6
  149. package/pack/generated/claude/agents/devrites-code-reviewer.md +9 -5
  150. package/pack/generated/claude/agents/devrites-devex-reviewer.md +5 -4
  151. package/pack/generated/claude/agents/devrites-doubt-reviewer.md +4 -4
  152. package/pack/generated/claude/agents/devrites-evidence-scout.md +3 -2
  153. package/pack/generated/claude/agents/devrites-frontend-reviewer.md +5 -4
  154. package/pack/generated/claude/agents/devrites-performance-reviewer.md +5 -5
  155. package/pack/generated/claude/agents/devrites-plan-drafter.md +4 -2
  156. package/pack/generated/claude/agents/devrites-plan-reviewer.md +5 -5
  157. package/pack/generated/claude/agents/devrites-proof-runner.md +1 -1
  158. package/pack/generated/claude/agents/devrites-retrospector.md +1 -1
  159. package/pack/generated/claude/agents/devrites-security-auditor.md +4 -4
  160. package/pack/generated/claude/agents/devrites-simplifier-reviewer.md +5 -4
  161. package/pack/generated/claude/agents/devrites-slice-wright.md +18 -9
  162. package/pack/generated/claude/agents/devrites-spec-reviewer.md +4 -4
  163. package/pack/generated/claude/agents/devrites-strategy-reviewer.md +5 -6
  164. package/pack/generated/claude/agents/devrites-test-analyst.md +7 -4
  165. package/pack/generated/claude/agents/devrites-upgrade-planner.md +1 -1
  166. package/pack/generated/claude/agents/fast-builder.md +4 -2
  167. package/pack/generated/claude/agents/fast-checker.md +3 -2
  168. package/pack/generated/claude/agents/fast-critic.md +3 -2
  169. package/pack/generated/claude/agents/fast-planner.md +3 -3
  170. package/pack/generated/claude/agents/overhaul-recon.md +5 -4
  171. package/pack/generated/claude/settings.json +19 -7
  172. package/pack/generated/claude/skills/devrites-api-interface/SKILL.md +1 -1
  173. package/pack/generated/claude/skills/devrites-audit/SKILL.md +1 -1
  174. package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +1 -1
  175. package/pack/generated/claude/skills/devrites-doubt/SKILL.md +5 -5
  176. package/pack/generated/claude/skills/devrites-frontend-craft/reference/reuse-first.md +3 -3
  177. package/pack/generated/claude/skills/devrites-interview/SKILL.md +1 -1
  178. package/pack/generated/claude/skills/devrites-lib/SKILL.md +11 -6
  179. package/pack/generated/claude/skills/devrites-lib/reference/orchestration-profiles.md +2 -0
  180. package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +25 -14
  181. package/pack/generated/claude/skills/devrites-lib/reference/standards/README.md +2 -1
  182. package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +11 -3
  183. package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +43 -19
  184. package/pack/generated/claude/skills/devrites-lib/reference/standards/architecture-health.md +1 -1
  185. package/pack/generated/claude/skills/devrites-lib/reference/standards/code-index.md +111 -0
  186. package/pack/generated/claude/skills/devrites-lib/reference/standards/code-navigation.md +13 -63
  187. package/pack/generated/claude/skills/devrites-lib/reference/standards/context-hygiene.md +8 -9
  188. package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +14 -1
  189. package/pack/generated/claude/skills/devrites-lib/reference/standards/deprecation.md +1 -1
  190. package/pack/generated/claude/skills/devrites-lib/reference/standards/gates.md +10 -1
  191. package/pack/generated/claude/skills/devrites-lib/reference/standards/security.md +4 -0
  192. package/pack/generated/claude/skills/devrites-lib/reference/standards/testing.md +3 -1
  193. package/pack/generated/claude/skills/devrites-lib/reference/standards/tooling.md +9 -8
  194. package/pack/generated/claude/skills/devrites-lib/reference/standards/windows.md +3 -2
  195. package/pack/generated/claude/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
  196. package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +16 -16
  197. package/pack/generated/claude/skills/devrites-ux-shape/SKILL.md +1 -1
  198. package/pack/generated/claude/skills/overhaul/references/orchestration.md +3 -2
  199. package/pack/generated/claude/skills/rite/SKILL.md +1 -1
  200. package/pack/generated/claude/skills/rite-adopt/SKILL.md +1 -1
  201. package/pack/generated/claude/skills/rite-adopt/reference/adoption.md +1 -1
  202. package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +5 -4
  203. package/pack/generated/claude/skills/rite-build/SKILL.md +4 -3
  204. package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +2 -0
  205. package/pack/generated/claude/skills/rite-build/reference/checkpoint-protocol.md +4 -1
  206. package/pack/generated/claude/skills/rite-build/reference/checkpoint.md +2 -0
  207. package/pack/generated/claude/skills/rite-build/reference/one-slice-cycle.md +1 -1
  208. package/pack/generated/claude/skills/rite-build/reference/output.md +2 -0
  209. package/pack/generated/claude/skills/rite-build/reference/parallel-batch.md +22 -12
  210. package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +13 -3
  211. package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +42 -25
  212. package/pack/generated/claude/skills/rite-clarify/SKILL.md +1 -1
  213. package/pack/generated/claude/skills/rite-converge/SKILL.md +4 -4
  214. package/pack/generated/claude/skills/rite-converge/reference/convergence-assessment.md +3 -3
  215. package/pack/generated/claude/skills/rite-define/SKILL.md +10 -5
  216. package/pack/generated/claude/skills/rite-doctor/SKILL.md +17 -2
  217. package/pack/generated/claude/skills/rite-dogfood/SKILL.md +1 -1
  218. package/pack/generated/claude/skills/rite-explain/SKILL.md +1 -1
  219. package/pack/generated/claude/skills/rite-explain/reference/intake.md +1 -1
  220. package/pack/generated/claude/skills/rite-fast/SKILL.md +1 -1
  221. package/pack/generated/claude/skills/rite-handoff/SKILL.md +3 -3
  222. package/pack/generated/claude/skills/rite-handoff/reference/handoff-template.md +1 -1
  223. package/pack/generated/claude/skills/rite-plan/SKILL.md +4 -4
  224. package/pack/generated/claude/skills/rite-plan/reference/slicing.md +3 -2
  225. package/pack/generated/claude/skills/rite-polish/SKILL.md +6 -3
  226. package/pack/generated/claude/skills/rite-prove/SKILL.md +1 -1
  227. package/pack/generated/claude/skills/rite-quick/SKILL.md +1 -1
  228. package/pack/generated/claude/skills/rite-resolve/SKILL.md +1 -1
  229. package/pack/generated/claude/skills/rite-review/SKILL.md +4 -4
  230. package/pack/generated/claude/skills/rite-seal/SKILL.md +2 -2
  231. package/pack/generated/claude/skills/rite-ship/SKILL.md +1 -1
  232. package/pack/generated/claude/skills/rite-spec/SKILL.md +1 -1
  233. package/pack/generated/claude/skills/rite-spec/reference/investigation.md +5 -5
  234. package/pack/generated/claude/skills/rite-spec/reference/spec-template.md +1 -1
  235. package/pack/generated/claude/skills/rite-spec/reference/state-workspace.md +6 -4
  236. package/pack/generated/claude/skills/rite-status/SKILL.md +1 -1
  237. package/pack/generated/claude/skills/rite-temper/SKILL.md +1 -1
  238. package/pack/generated/claude/skills/rite-temper/reference/review-dimensions.md +2 -2
  239. package/pack/generated/claude/skills/rite-temper/reference/scope-modes.md +2 -2
  240. package/pack/generated/claude/skills/rite-temper/reference/significance.md +2 -2
  241. package/pack/generated/claude/skills/rite-vet/SKILL.md +8 -4
  242. package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +10 -3
  243. package/pack/generated/claude/skills/rite-vet/reference/depth.md +2 -2
  244. package/pack/generated/claude/skills/rite-vet/reference/review-axes.md +2 -2
  245. package/pack/generated/claude/skills/rite-zoom-out/SKILL.md +6 -6
  246. package/pack/generated/codex/agents/devrites-code-reviewer.toml +8 -4
  247. package/pack/generated/codex/agents/devrites-devex-reviewer.toml +4 -3
  248. package/pack/generated/codex/agents/devrites-doubt-reviewer.toml +3 -3
  249. package/pack/generated/codex/agents/devrites-evidence-scout.toml +2 -1
  250. package/pack/generated/codex/agents/devrites-frontend-reviewer.toml +4 -3
  251. package/pack/generated/codex/agents/devrites-performance-reviewer.toml +4 -4
  252. package/pack/generated/codex/agents/devrites-plan-drafter.toml +3 -1
  253. package/pack/generated/codex/agents/devrites-plan-reviewer.toml +4 -4
  254. package/pack/generated/codex/agents/devrites-security-auditor.toml +3 -3
  255. package/pack/generated/codex/agents/devrites-simplifier-reviewer.toml +4 -3
  256. package/pack/generated/codex/agents/devrites-slice-wright.toml +17 -8
  257. package/pack/generated/codex/agents/devrites-spec-reviewer.toml +3 -3
  258. package/pack/generated/codex/agents/devrites-strategy-reviewer.toml +4 -5
  259. package/pack/generated/codex/agents/devrites-test-analyst.toml +6 -3
  260. package/pack/generated/codex/agents/fast-builder.toml +3 -1
  261. package/pack/generated/codex/agents/fast-checker.toml +2 -1
  262. package/pack/generated/codex/agents/fast-critic.toml +2 -1
  263. package/pack/generated/codex/agents/fast-planner.toml +2 -2
  264. package/pack/generated/codex/agents/overhaul-recon.toml +5 -4
  265. package/pack/generated/codex/skills/devrites-api-interface/SKILL.md +1 -1
  266. package/pack/generated/codex/skills/devrites-audit/SKILL.md +1 -1
  267. package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +1 -1
  268. package/pack/generated/codex/skills/devrites-doubt/SKILL.md +5 -5
  269. package/pack/generated/codex/skills/devrites-frontend-craft/reference/reuse-first.md +3 -3
  270. package/pack/generated/codex/skills/devrites-interview/SKILL.md +1 -1
  271. package/pack/generated/codex/skills/devrites-lib/SKILL.md +11 -6
  272. package/pack/generated/codex/skills/devrites-lib/reference/orchestration-profiles.md +2 -0
  273. package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +25 -14
  274. package/pack/generated/codex/skills/devrites-lib/reference/standards/README.md +2 -1
  275. package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +11 -3
  276. package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +43 -19
  277. package/pack/generated/codex/skills/devrites-lib/reference/standards/architecture-health.md +1 -1
  278. package/pack/generated/codex/skills/devrites-lib/reference/standards/code-index.md +111 -0
  279. package/pack/generated/codex/skills/devrites-lib/reference/standards/code-navigation.md +13 -63
  280. package/pack/generated/codex/skills/devrites-lib/reference/standards/context-hygiene.md +8 -9
  281. package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +14 -1
  282. package/pack/generated/codex/skills/devrites-lib/reference/standards/deprecation.md +1 -1
  283. package/pack/generated/codex/skills/devrites-lib/reference/standards/gates.md +10 -1
  284. package/pack/generated/codex/skills/devrites-lib/reference/standards/security.md +4 -0
  285. package/pack/generated/codex/skills/devrites-lib/reference/standards/testing.md +3 -1
  286. package/pack/generated/codex/skills/devrites-lib/reference/standards/tooling.md +9 -8
  287. package/pack/generated/codex/skills/devrites-lib/reference/standards/windows.md +3 -2
  288. package/pack/generated/codex/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
  289. package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +16 -16
  290. package/pack/generated/codex/skills/devrites-ux-shape/SKILL.md +1 -1
  291. package/pack/generated/codex/skills/overhaul/references/orchestration.md +3 -2
  292. package/pack/generated/codex/skills/rite/SKILL.md +1 -1
  293. package/pack/generated/codex/skills/rite-adopt/SKILL.md +1 -1
  294. package/pack/generated/codex/skills/rite-adopt/reference/adoption.md +1 -1
  295. package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +5 -4
  296. package/pack/generated/codex/skills/rite-build/SKILL.md +4 -3
  297. package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +2 -0
  298. package/pack/generated/codex/skills/rite-build/reference/checkpoint-protocol.md +4 -1
  299. package/pack/generated/codex/skills/rite-build/reference/checkpoint.md +2 -0
  300. package/pack/generated/codex/skills/rite-build/reference/one-slice-cycle.md +1 -1
  301. package/pack/generated/codex/skills/rite-build/reference/output.md +2 -0
  302. package/pack/generated/codex/skills/rite-build/reference/parallel-batch.md +22 -12
  303. package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +13 -3
  304. package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +42 -25
  305. package/pack/generated/codex/skills/rite-clarify/SKILL.md +1 -1
  306. package/pack/generated/codex/skills/rite-converge/SKILL.md +4 -4
  307. package/pack/generated/codex/skills/rite-converge/reference/convergence-assessment.md +3 -3
  308. package/pack/generated/codex/skills/rite-define/SKILL.md +10 -5
  309. package/pack/generated/codex/skills/rite-doctor/SKILL.md +17 -2
  310. package/pack/generated/codex/skills/rite-dogfood/SKILL.md +1 -1
  311. package/pack/generated/codex/skills/rite-explain/SKILL.md +1 -1
  312. package/pack/generated/codex/skills/rite-explain/reference/intake.md +1 -1
  313. package/pack/generated/codex/skills/rite-fast/SKILL.md +1 -1
  314. package/pack/generated/codex/skills/rite-handoff/SKILL.md +3 -3
  315. package/pack/generated/codex/skills/rite-handoff/reference/handoff-template.md +1 -1
  316. package/pack/generated/codex/skills/rite-plan/SKILL.md +4 -4
  317. package/pack/generated/codex/skills/rite-plan/reference/slicing.md +3 -2
  318. package/pack/generated/codex/skills/rite-polish/SKILL.md +6 -3
  319. package/pack/generated/codex/skills/rite-prove/SKILL.md +1 -1
  320. package/pack/generated/codex/skills/rite-quick/SKILL.md +1 -1
  321. package/pack/generated/codex/skills/rite-resolve/SKILL.md +1 -1
  322. package/pack/generated/codex/skills/rite-review/SKILL.md +4 -4
  323. package/pack/generated/codex/skills/rite-seal/SKILL.md +2 -2
  324. package/pack/generated/codex/skills/rite-ship/SKILL.md +1 -1
  325. package/pack/generated/codex/skills/rite-spec/SKILL.md +1 -1
  326. package/pack/generated/codex/skills/rite-spec/reference/investigation.md +5 -5
  327. package/pack/generated/codex/skills/rite-spec/reference/spec-template.md +1 -1
  328. package/pack/generated/codex/skills/rite-spec/reference/state-workspace.md +6 -4
  329. package/pack/generated/codex/skills/rite-status/SKILL.md +1 -1
  330. package/pack/generated/codex/skills/rite-temper/SKILL.md +1 -1
  331. package/pack/generated/codex/skills/rite-temper/reference/review-dimensions.md +2 -2
  332. package/pack/generated/codex/skills/rite-temper/reference/scope-modes.md +2 -2
  333. package/pack/generated/codex/skills/rite-temper/reference/significance.md +2 -2
  334. package/pack/generated/codex/skills/rite-vet/SKILL.md +8 -4
  335. package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +10 -3
  336. package/pack/generated/codex/skills/rite-vet/reference/depth.md +2 -2
  337. package/pack/generated/codex/skills/rite-vet/reference/review-axes.md +2 -2
  338. package/pack/generated/codex/skills/rite-zoom-out/SKILL.md +6 -6
  339. package/pack/generated/devin/agents/devrites-code-reviewer.md +8 -4
  340. package/pack/generated/devin/agents/devrites-devex-reviewer.md +4 -3
  341. package/pack/generated/devin/agents/devrites-doubt-reviewer.md +3 -3
  342. package/pack/generated/devin/agents/devrites-evidence-scout.md +2 -1
  343. package/pack/generated/devin/agents/devrites-frontend-reviewer.md +4 -3
  344. package/pack/generated/devin/agents/devrites-performance-reviewer.md +4 -4
  345. package/pack/generated/devin/agents/devrites-plan-drafter.md +3 -1
  346. package/pack/generated/devin/agents/devrites-plan-reviewer.md +4 -4
  347. package/pack/generated/devin/agents/devrites-security-auditor.md +3 -3
  348. package/pack/generated/devin/agents/devrites-simplifier-reviewer.md +4 -3
  349. package/pack/generated/devin/agents/devrites-slice-wright.md +17 -8
  350. package/pack/generated/devin/agents/devrites-spec-reviewer.md +3 -3
  351. package/pack/generated/devin/agents/devrites-strategy-reviewer.md +4 -5
  352. package/pack/generated/devin/agents/devrites-test-analyst.md +6 -3
  353. package/pack/generated/devin/agents/fast-builder.md +3 -1
  354. package/pack/generated/devin/agents/fast-checker.md +2 -1
  355. package/pack/generated/devin/agents/fast-critic.md +2 -1
  356. package/pack/generated/devin/agents/fast-planner.md +2 -2
  357. package/pack/generated/devin/agents/overhaul-recon.md +5 -4
  358. package/pack/generated/devin/skills/devrites-api-interface/SKILL.md +1 -1
  359. package/pack/generated/devin/skills/devrites-audit/SKILL.md +1 -1
  360. package/pack/generated/devin/skills/devrites-debug-recovery/SKILL.md +1 -1
  361. package/pack/generated/devin/skills/devrites-doubt/SKILL.md +5 -5
  362. package/pack/generated/devin/skills/devrites-frontend-craft/reference/reuse-first.md +3 -3
  363. package/pack/generated/devin/skills/devrites-interview/SKILL.md +1 -1
  364. package/pack/generated/devin/skills/devrites-lib/SKILL.md +11 -6
  365. package/pack/generated/devin/skills/devrites-lib/reference/orchestration-profiles.md +2 -0
  366. package/pack/generated/devin/skills/devrites-lib/reference/parallel-dispatch.md +25 -14
  367. package/pack/generated/devin/skills/devrites-lib/reference/standards/README.md +2 -1
  368. package/pack/generated/devin/skills/devrites-lib/reference/standards/afk-hitl.md +11 -3
  369. package/pack/generated/devin/skills/devrites-lib/reference/standards/agents.md +43 -19
  370. package/pack/generated/devin/skills/devrites-lib/reference/standards/architecture-health.md +1 -1
  371. package/pack/generated/devin/skills/devrites-lib/reference/standards/code-index.md +111 -0
  372. package/pack/generated/devin/skills/devrites-lib/reference/standards/code-navigation.md +13 -63
  373. package/pack/generated/devin/skills/devrites-lib/reference/standards/context-hygiene.md +8 -9
  374. package/pack/generated/devin/skills/devrites-lib/reference/standards/core.md +14 -1
  375. package/pack/generated/devin/skills/devrites-lib/reference/standards/deprecation.md +1 -1
  376. package/pack/generated/devin/skills/devrites-lib/reference/standards/gates.md +10 -1
  377. package/pack/generated/devin/skills/devrites-lib/reference/standards/security.md +4 -0
  378. package/pack/generated/devin/skills/devrites-lib/reference/standards/testing.md +3 -1
  379. package/pack/generated/devin/skills/devrites-lib/reference/standards/tooling.md +9 -8
  380. package/pack/generated/devin/skills/devrites-lib/reference/standards/windows.md +3 -2
  381. package/pack/generated/devin/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
  382. package/pack/generated/devin/skills/devrites-lib/reference/workspace-artifact-schema.md +16 -16
  383. package/pack/generated/devin/skills/devrites-ux-shape/SKILL.md +1 -1
  384. package/pack/generated/devin/skills/overhaul/references/orchestration.md +3 -2
  385. package/pack/generated/devin/skills/rite/SKILL.md +1 -1
  386. package/pack/generated/devin/skills/rite-adopt/SKILL.md +1 -1
  387. package/pack/generated/devin/skills/rite-adopt/reference/adoption.md +1 -1
  388. package/pack/generated/devin/skills/rite-autocomplete/SKILL.md +5 -4
  389. package/pack/generated/devin/skills/rite-build/SKILL.md +4 -3
  390. package/pack/generated/devin/skills/rite-build/reference/afk-discipline.md +2 -0
  391. package/pack/generated/devin/skills/rite-build/reference/checkpoint-protocol.md +4 -1
  392. package/pack/generated/devin/skills/rite-build/reference/checkpoint.md +2 -0
  393. package/pack/generated/devin/skills/rite-build/reference/one-slice-cycle.md +1 -1
  394. package/pack/generated/devin/skills/rite-build/reference/output.md +2 -0
  395. package/pack/generated/devin/skills/rite-build/reference/parallel-batch.md +22 -12
  396. package/pack/generated/devin/skills/rite-build/reference/phase-contract.md +13 -3
  397. package/pack/generated/devin/skills/rite-build/reference/wright-dispatch.md +42 -25
  398. package/pack/generated/devin/skills/rite-clarify/SKILL.md +1 -1
  399. package/pack/generated/devin/skills/rite-converge/SKILL.md +4 -4
  400. package/pack/generated/devin/skills/rite-converge/reference/convergence-assessment.md +3 -3
  401. package/pack/generated/devin/skills/rite-define/SKILL.md +10 -5
  402. package/pack/generated/devin/skills/rite-doctor/SKILL.md +17 -2
  403. package/pack/generated/devin/skills/rite-dogfood/SKILL.md +1 -1
  404. package/pack/generated/devin/skills/rite-explain/SKILL.md +1 -1
  405. package/pack/generated/devin/skills/rite-explain/reference/intake.md +1 -1
  406. package/pack/generated/devin/skills/rite-fast/SKILL.md +1 -1
  407. package/pack/generated/devin/skills/rite-handoff/SKILL.md +3 -3
  408. package/pack/generated/devin/skills/rite-handoff/reference/handoff-template.md +1 -1
  409. package/pack/generated/devin/skills/rite-plan/SKILL.md +4 -4
  410. package/pack/generated/devin/skills/rite-plan/reference/slicing.md +3 -2
  411. package/pack/generated/devin/skills/rite-polish/SKILL.md +6 -3
  412. package/pack/generated/devin/skills/rite-prove/SKILL.md +1 -1
  413. package/pack/generated/devin/skills/rite-quick/SKILL.md +1 -1
  414. package/pack/generated/devin/skills/rite-resolve/SKILL.md +1 -1
  415. package/pack/generated/devin/skills/rite-review/SKILL.md +4 -4
  416. package/pack/generated/devin/skills/rite-seal/SKILL.md +2 -2
  417. package/pack/generated/devin/skills/rite-ship/SKILL.md +1 -1
  418. package/pack/generated/devin/skills/rite-spec/SKILL.md +1 -1
  419. package/pack/generated/devin/skills/rite-spec/reference/investigation.md +5 -5
  420. package/pack/generated/devin/skills/rite-spec/reference/spec-template.md +1 -1
  421. package/pack/generated/devin/skills/rite-spec/reference/state-workspace.md +6 -4
  422. package/pack/generated/devin/skills/rite-status/SKILL.md +1 -1
  423. package/pack/generated/devin/skills/rite-temper/SKILL.md +1 -1
  424. package/pack/generated/devin/skills/rite-temper/reference/review-dimensions.md +2 -2
  425. package/pack/generated/devin/skills/rite-temper/reference/scope-modes.md +2 -2
  426. package/pack/generated/devin/skills/rite-temper/reference/significance.md +2 -2
  427. package/pack/generated/devin/skills/rite-vet/SKILL.md +8 -4
  428. package/pack/generated/devin/skills/rite-vet/reference/artifacts.md +10 -3
  429. package/pack/generated/devin/skills/rite-vet/reference/depth.md +2 -2
  430. package/pack/generated/devin/skills/rite-vet/reference/review-axes.md +2 -2
  431. package/pack/generated/devin/skills/rite-zoom-out/SKILL.md +6 -6
  432. package/pack/generated/omp/agents/devrites-code-reviewer.md +9 -5
  433. package/pack/generated/omp/agents/devrites-devex-reviewer.md +5 -4
  434. package/pack/generated/omp/agents/devrites-doubt-reviewer.md +4 -4
  435. package/pack/generated/omp/agents/devrites-evidence-scout.md +3 -2
  436. package/pack/generated/omp/agents/devrites-frontend-reviewer.md +5 -4
  437. package/pack/generated/omp/agents/devrites-performance-reviewer.md +5 -5
  438. package/pack/generated/omp/agents/devrites-plan-drafter.md +4 -2
  439. package/pack/generated/omp/agents/devrites-plan-reviewer.md +5 -5
  440. package/pack/generated/omp/agents/devrites-proof-runner.md +1 -1
  441. package/pack/generated/omp/agents/devrites-retrospector.md +1 -1
  442. package/pack/generated/omp/agents/devrites-security-auditor.md +4 -4
  443. package/pack/generated/omp/agents/devrites-simplifier-reviewer.md +5 -4
  444. package/pack/generated/omp/agents/devrites-slice-wright.md +18 -9
  445. package/pack/generated/omp/agents/devrites-spec-reviewer.md +4 -4
  446. package/pack/generated/omp/agents/devrites-strategy-reviewer.md +5 -6
  447. package/pack/generated/omp/agents/devrites-test-analyst.md +7 -4
  448. package/pack/generated/omp/agents/devrites-upgrade-planner.md +1 -1
  449. package/pack/generated/omp/agents/fast-builder.md +4 -2
  450. package/pack/generated/omp/agents/fast-checker.md +3 -2
  451. package/pack/generated/omp/agents/fast-critic.md +3 -2
  452. package/pack/generated/omp/agents/fast-planner.md +3 -3
  453. package/pack/generated/omp/agents/overhaul-backend-engineer.md +1 -1
  454. package/pack/generated/omp/agents/overhaul-boundary.md +1 -1
  455. package/pack/generated/omp/agents/overhaul-craft.md +1 -1
  456. package/pack/generated/omp/agents/overhaul-frontend-engineer.md +1 -1
  457. package/pack/generated/omp/agents/overhaul-implementer.md +1 -1
  458. package/pack/generated/omp/agents/overhaul-recon.md +6 -5
  459. package/pack/generated/omp/agents/overhaul-specialist.md +1 -1
  460. package/pack/generated/omp/agents/overhaul-verifier.md +1 -1
  461. package/pack/generated/omp/skills/devrites-api-interface/SKILL.md +1 -1
  462. package/pack/generated/omp/skills/devrites-audit/SKILL.md +1 -1
  463. package/pack/generated/omp/skills/devrites-debug-recovery/SKILL.md +1 -1
  464. package/pack/generated/omp/skills/devrites-doubt/SKILL.md +5 -5
  465. package/pack/generated/omp/skills/devrites-frontend-craft/reference/reuse-first.md +3 -3
  466. package/pack/generated/omp/skills/devrites-interview/SKILL.md +1 -1
  467. package/pack/generated/omp/skills/devrites-lib/SKILL.md +11 -6
  468. package/pack/generated/omp/skills/devrites-lib/reference/orchestration-profiles.md +2 -0
  469. package/pack/generated/omp/skills/devrites-lib/reference/parallel-dispatch.md +25 -14
  470. package/pack/generated/omp/skills/devrites-lib/reference/standards/README.md +2 -1
  471. package/pack/generated/omp/skills/devrites-lib/reference/standards/afk-hitl.md +11 -3
  472. package/pack/generated/omp/skills/devrites-lib/reference/standards/agents.md +43 -19
  473. package/pack/generated/omp/skills/devrites-lib/reference/standards/architecture-health.md +1 -1
  474. package/pack/generated/omp/skills/devrites-lib/reference/standards/code-index.md +111 -0
  475. package/pack/generated/omp/skills/devrites-lib/reference/standards/code-navigation.md +13 -63
  476. package/pack/generated/omp/skills/devrites-lib/reference/standards/context-hygiene.md +8 -9
  477. package/pack/generated/omp/skills/devrites-lib/reference/standards/core.md +14 -1
  478. package/pack/generated/omp/skills/devrites-lib/reference/standards/deprecation.md +1 -1
  479. package/pack/generated/omp/skills/devrites-lib/reference/standards/gates.md +10 -1
  480. package/pack/generated/omp/skills/devrites-lib/reference/standards/security.md +4 -0
  481. package/pack/generated/omp/skills/devrites-lib/reference/standards/testing.md +3 -1
  482. package/pack/generated/omp/skills/devrites-lib/reference/standards/tooling.md +9 -8
  483. package/pack/generated/omp/skills/devrites-lib/reference/standards/windows.md +3 -2
  484. package/pack/generated/omp/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
  485. package/pack/generated/omp/skills/devrites-lib/reference/workspace-artifact-schema.md +16 -16
  486. package/pack/generated/omp/skills/devrites-ux-shape/SKILL.md +1 -1
  487. package/pack/generated/omp/skills/overhaul/references/orchestration.md +3 -2
  488. package/pack/generated/omp/skills/rite/SKILL.md +1 -1
  489. package/pack/generated/omp/skills/rite-adopt/SKILL.md +1 -1
  490. package/pack/generated/omp/skills/rite-adopt/reference/adoption.md +1 -1
  491. package/pack/generated/omp/skills/rite-autocomplete/SKILL.md +5 -4
  492. package/pack/generated/omp/skills/rite-build/SKILL.md +4 -3
  493. package/pack/generated/omp/skills/rite-build/reference/afk-discipline.md +2 -0
  494. package/pack/generated/omp/skills/rite-build/reference/checkpoint-protocol.md +4 -1
  495. package/pack/generated/omp/skills/rite-build/reference/checkpoint.md +2 -0
  496. package/pack/generated/omp/skills/rite-build/reference/one-slice-cycle.md +1 -1
  497. package/pack/generated/omp/skills/rite-build/reference/output.md +2 -0
  498. package/pack/generated/omp/skills/rite-build/reference/parallel-batch.md +22 -12
  499. package/pack/generated/omp/skills/rite-build/reference/phase-contract.md +13 -3
  500. package/pack/generated/omp/skills/rite-build/reference/wright-dispatch.md +42 -25
  501. package/pack/generated/omp/skills/rite-clarify/SKILL.md +1 -1
  502. package/pack/generated/omp/skills/rite-converge/SKILL.md +4 -4
  503. package/pack/generated/omp/skills/rite-converge/reference/convergence-assessment.md +3 -3
  504. package/pack/generated/omp/skills/rite-define/SKILL.md +10 -5
  505. package/pack/generated/omp/skills/rite-doctor/SKILL.md +17 -2
  506. package/pack/generated/omp/skills/rite-dogfood/SKILL.md +1 -1
  507. package/pack/generated/omp/skills/rite-explain/SKILL.md +1 -1
  508. package/pack/generated/omp/skills/rite-explain/reference/intake.md +1 -1
  509. package/pack/generated/omp/skills/rite-fast/SKILL.md +1 -1
  510. package/pack/generated/omp/skills/rite-handoff/SKILL.md +3 -3
  511. package/pack/generated/omp/skills/rite-handoff/reference/handoff-template.md +1 -1
  512. package/pack/generated/omp/skills/rite-plan/SKILL.md +4 -4
  513. package/pack/generated/omp/skills/rite-plan/reference/slicing.md +3 -2
  514. package/pack/generated/omp/skills/rite-polish/SKILL.md +6 -3
  515. package/pack/generated/omp/skills/rite-prove/SKILL.md +1 -1
  516. package/pack/generated/omp/skills/rite-quick/SKILL.md +1 -1
  517. package/pack/generated/omp/skills/rite-resolve/SKILL.md +1 -1
  518. package/pack/generated/omp/skills/rite-review/SKILL.md +4 -4
  519. package/pack/generated/omp/skills/rite-seal/SKILL.md +2 -2
  520. package/pack/generated/omp/skills/rite-ship/SKILL.md +1 -1
  521. package/pack/generated/omp/skills/rite-spec/SKILL.md +1 -1
  522. package/pack/generated/omp/skills/rite-spec/reference/investigation.md +5 -5
  523. package/pack/generated/omp/skills/rite-spec/reference/spec-template.md +1 -1
  524. package/pack/generated/omp/skills/rite-spec/reference/state-workspace.md +6 -4
  525. package/pack/generated/omp/skills/rite-status/SKILL.md +1 -1
  526. package/pack/generated/omp/skills/rite-temper/SKILL.md +1 -1
  527. package/pack/generated/omp/skills/rite-temper/reference/review-dimensions.md +2 -2
  528. package/pack/generated/omp/skills/rite-temper/reference/scope-modes.md +2 -2
  529. package/pack/generated/omp/skills/rite-temper/reference/significance.md +2 -2
  530. package/pack/generated/omp/skills/rite-vet/SKILL.md +8 -4
  531. package/pack/generated/omp/skills/rite-vet/reference/artifacts.md +10 -3
  532. package/pack/generated/omp/skills/rite-vet/reference/depth.md +2 -2
  533. package/pack/generated/omp/skills/rite-vet/reference/review-axes.md +2 -2
  534. package/pack/generated/omp/skills/rite-zoom-out/SKILL.md +6 -6
  535. package/pack/generated/pi/agents/devrites-code-reviewer.md +9 -5
  536. package/pack/generated/pi/agents/devrites-devex-reviewer.md +5 -4
  537. package/pack/generated/pi/agents/devrites-doubt-reviewer.md +4 -4
  538. package/pack/generated/pi/agents/devrites-evidence-scout.md +3 -2
  539. package/pack/generated/pi/agents/devrites-frontend-reviewer.md +5 -4
  540. package/pack/generated/pi/agents/devrites-performance-reviewer.md +5 -5
  541. package/pack/generated/pi/agents/devrites-plan-drafter.md +4 -2
  542. package/pack/generated/pi/agents/devrites-plan-reviewer.md +5 -5
  543. package/pack/generated/pi/agents/devrites-proof-runner.md +1 -1
  544. package/pack/generated/pi/agents/devrites-retrospector.md +1 -1
  545. package/pack/generated/pi/agents/devrites-security-auditor.md +4 -4
  546. package/pack/generated/pi/agents/devrites-simplifier-reviewer.md +5 -4
  547. package/pack/generated/pi/agents/devrites-slice-wright.md +18 -9
  548. package/pack/generated/pi/agents/devrites-spec-reviewer.md +4 -4
  549. package/pack/generated/pi/agents/devrites-strategy-reviewer.md +5 -6
  550. package/pack/generated/pi/agents/devrites-test-analyst.md +7 -4
  551. package/pack/generated/pi/agents/devrites-upgrade-planner.md +1 -1
  552. package/pack/generated/pi/agents/fast-builder.md +4 -2
  553. package/pack/generated/pi/agents/fast-checker.md +3 -2
  554. package/pack/generated/pi/agents/fast-critic.md +3 -2
  555. package/pack/generated/pi/agents/fast-planner.md +3 -3
  556. package/pack/generated/pi/agents/overhaul-backend-engineer.md +1 -1
  557. package/pack/generated/pi/agents/overhaul-boundary.md +1 -1
  558. package/pack/generated/pi/agents/overhaul-craft.md +1 -1
  559. package/pack/generated/pi/agents/overhaul-frontend-engineer.md +1 -1
  560. package/pack/generated/pi/agents/overhaul-implementer.md +1 -1
  561. package/pack/generated/pi/agents/overhaul-recon.md +6 -5
  562. package/pack/generated/pi/agents/overhaul-specialist.md +1 -1
  563. package/pack/generated/pi/agents/overhaul-verifier.md +1 -1
  564. package/pack/generated/pi/skills/devrites-api-interface/SKILL.md +1 -1
  565. package/pack/generated/pi/skills/devrites-audit/SKILL.md +1 -1
  566. package/pack/generated/pi/skills/devrites-debug-recovery/SKILL.md +1 -1
  567. package/pack/generated/pi/skills/devrites-doubt/SKILL.md +5 -5
  568. package/pack/generated/pi/skills/devrites-frontend-craft/reference/reuse-first.md +3 -3
  569. package/pack/generated/pi/skills/devrites-interview/SKILL.md +1 -1
  570. package/pack/generated/pi/skills/devrites-lib/SKILL.md +11 -6
  571. package/pack/generated/pi/skills/devrites-lib/reference/orchestration-profiles.md +2 -0
  572. package/pack/generated/pi/skills/devrites-lib/reference/parallel-dispatch.md +25 -14
  573. package/pack/generated/pi/skills/devrites-lib/reference/standards/README.md +2 -1
  574. package/pack/generated/pi/skills/devrites-lib/reference/standards/afk-hitl.md +11 -3
  575. package/pack/generated/pi/skills/devrites-lib/reference/standards/agents.md +43 -19
  576. package/pack/generated/pi/skills/devrites-lib/reference/standards/architecture-health.md +1 -1
  577. package/pack/generated/pi/skills/devrites-lib/reference/standards/code-index.md +111 -0
  578. package/pack/generated/pi/skills/devrites-lib/reference/standards/code-navigation.md +13 -63
  579. package/pack/generated/pi/skills/devrites-lib/reference/standards/context-hygiene.md +8 -9
  580. package/pack/generated/pi/skills/devrites-lib/reference/standards/core.md +14 -1
  581. package/pack/generated/pi/skills/devrites-lib/reference/standards/deprecation.md +1 -1
  582. package/pack/generated/pi/skills/devrites-lib/reference/standards/gates.md +10 -1
  583. package/pack/generated/pi/skills/devrites-lib/reference/standards/security.md +4 -0
  584. package/pack/generated/pi/skills/devrites-lib/reference/standards/testing.md +3 -1
  585. package/pack/generated/pi/skills/devrites-lib/reference/standards/tooling.md +9 -8
  586. package/pack/generated/pi/skills/devrites-lib/reference/standards/windows.md +3 -2
  587. package/pack/generated/pi/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
  588. package/pack/generated/pi/skills/devrites-lib/reference/workspace-artifact-schema.md +16 -16
  589. package/pack/generated/pi/skills/devrites-ux-shape/SKILL.md +1 -1
  590. package/pack/generated/pi/skills/overhaul/references/orchestration.md +3 -2
  591. package/pack/generated/pi/skills/rite/SKILL.md +1 -1
  592. package/pack/generated/pi/skills/rite-adopt/SKILL.md +1 -1
  593. package/pack/generated/pi/skills/rite-adopt/reference/adoption.md +1 -1
  594. package/pack/generated/pi/skills/rite-autocomplete/SKILL.md +5 -4
  595. package/pack/generated/pi/skills/rite-build/SKILL.md +4 -3
  596. package/pack/generated/pi/skills/rite-build/reference/afk-discipline.md +2 -0
  597. package/pack/generated/pi/skills/rite-build/reference/checkpoint-protocol.md +4 -1
  598. package/pack/generated/pi/skills/rite-build/reference/checkpoint.md +2 -0
  599. package/pack/generated/pi/skills/rite-build/reference/one-slice-cycle.md +1 -1
  600. package/pack/generated/pi/skills/rite-build/reference/output.md +2 -0
  601. package/pack/generated/pi/skills/rite-build/reference/parallel-batch.md +22 -12
  602. package/pack/generated/pi/skills/rite-build/reference/phase-contract.md +13 -3
  603. package/pack/generated/pi/skills/rite-build/reference/wright-dispatch.md +42 -25
  604. package/pack/generated/pi/skills/rite-clarify/SKILL.md +1 -1
  605. package/pack/generated/pi/skills/rite-converge/SKILL.md +4 -4
  606. package/pack/generated/pi/skills/rite-converge/reference/convergence-assessment.md +3 -3
  607. package/pack/generated/pi/skills/rite-define/SKILL.md +10 -5
  608. package/pack/generated/pi/skills/rite-doctor/SKILL.md +17 -2
  609. package/pack/generated/pi/skills/rite-dogfood/SKILL.md +1 -1
  610. package/pack/generated/pi/skills/rite-explain/SKILL.md +1 -1
  611. package/pack/generated/pi/skills/rite-explain/reference/intake.md +1 -1
  612. package/pack/generated/pi/skills/rite-fast/SKILL.md +1 -1
  613. package/pack/generated/pi/skills/rite-handoff/SKILL.md +3 -3
  614. package/pack/generated/pi/skills/rite-handoff/reference/handoff-template.md +1 -1
  615. package/pack/generated/pi/skills/rite-plan/SKILL.md +4 -4
  616. package/pack/generated/pi/skills/rite-plan/reference/slicing.md +3 -2
  617. package/pack/generated/pi/skills/rite-polish/SKILL.md +6 -3
  618. package/pack/generated/pi/skills/rite-prove/SKILL.md +1 -1
  619. package/pack/generated/pi/skills/rite-quick/SKILL.md +1 -1
  620. package/pack/generated/pi/skills/rite-resolve/SKILL.md +1 -1
  621. package/pack/generated/pi/skills/rite-review/SKILL.md +4 -4
  622. package/pack/generated/pi/skills/rite-seal/SKILL.md +2 -2
  623. package/pack/generated/pi/skills/rite-ship/SKILL.md +1 -1
  624. package/pack/generated/pi/skills/rite-spec/SKILL.md +1 -1
  625. package/pack/generated/pi/skills/rite-spec/reference/investigation.md +5 -5
  626. package/pack/generated/pi/skills/rite-spec/reference/spec-template.md +1 -1
  627. package/pack/generated/pi/skills/rite-spec/reference/state-workspace.md +6 -4
  628. package/pack/generated/pi/skills/rite-status/SKILL.md +1 -1
  629. package/pack/generated/pi/skills/rite-temper/SKILL.md +1 -1
  630. package/pack/generated/pi/skills/rite-temper/reference/review-dimensions.md +2 -2
  631. package/pack/generated/pi/skills/rite-temper/reference/scope-modes.md +2 -2
  632. package/pack/generated/pi/skills/rite-temper/reference/significance.md +2 -2
  633. package/pack/generated/pi/skills/rite-vet/SKILL.md +8 -4
  634. package/pack/generated/pi/skills/rite-vet/reference/artifacts.md +10 -3
  635. package/pack/generated/pi/skills/rite-vet/reference/depth.md +2 -2
  636. package/pack/generated/pi/skills/rite-vet/reference/review-axes.md +2 -2
  637. package/pack/generated/pi/skills/rite-zoom-out/SKILL.md +6 -6
  638. package/package.json +1 -1
  639. package/scripts/build-host-artifacts.sh +5 -4
  640. package/scripts/omp-generate.sh +3 -12
  641. 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
  }