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,396 @@
1
+ package lib
2
+
3
+ import (
4
+ "bytes"
5
+ "errors"
6
+ "fmt"
7
+ "io"
8
+ "os"
9
+ "path/filepath"
10
+ "regexp"
11
+ "slices"
12
+ "strings"
13
+ "unicode/utf8"
14
+
15
+ "github.com/devrites/devrites/internal/devritespaths"
16
+ "github.com/devrites/devrites/internal/fsutil"
17
+ "github.com/devrites/devrites/internal/markdowntext"
18
+ "github.com/devrites/devrites/internal/state"
19
+ )
20
+
21
+ const (
22
+ stateSetUsage = "usage: devrites-engine state set <slug> <key>=<value>... [--unset <key>]..."
23
+ stateAppendUsage = `usage: devrites-engine state append <slug> <ledger.md> --heading "<text>" --body-file <path|->`
24
+ maxAppendBytes = 256 << 10
25
+ )
26
+
27
+ var cursorKeyPattern = regexp.MustCompile(`^[a-z][a-z0-9_]*$`)
28
+
29
+ // appendLedgers are the append-only workspace ledgers. state.md belongs to
30
+ // `state set`; spec, plan, and tasks change only through their owning rite.
31
+ var appendLedgers = []string{"assumptions.md", "decisions.md", "drift.md", "evidence.md", "questions.md"}
32
+
33
+ // RunStateSet implements `devrites-engine state set`: it writes cursor fields in
34
+ // state.md all-or-nothing under the feature lock, so the root never splices the
35
+ // cursor with an ad-hoc script. It refuses an unknown phase, the engine-owned
36
+ // schema row, and an overwrite of an existing return cursor.
37
+ //
38
+ // 0 written 2 usage error 3 blocked; nothing written 1 I/O error
39
+ func RunStateSet(root string, args []string, stdout, stderr io.Writer) int {
40
+ if len(args) < 2 || strings.HasPrefix(args[0], "-") {
41
+ return fail(stderr, stateSetUsage, 2)
42
+ }
43
+ slug := args[0]
44
+ type change struct{ key, value string }
45
+ var changes []change
46
+ seen := map[string]bool{}
47
+ for i := 1; i < len(args); i++ {
48
+ var key, value string
49
+ if args[i] == "--unset" {
50
+ if i+1 == len(args) {
51
+ return fail(stderr, stateSetUsage, 2)
52
+ }
53
+ i++
54
+ key = args[i]
55
+ } else {
56
+ var ok bool
57
+ if key, value, ok = strings.Cut(args[i], "="); !ok || value == "" {
58
+ return fail(stderr, stateSetUsage, 2)
59
+ }
60
+ }
61
+ if !cursorKeyPattern.MatchString(key) || seen[key] {
62
+ return fail(stderr, fmt.Sprintf("state set: key %q is not a snake_case cursor key or repeats", key), 2)
63
+ }
64
+ seen[key] = true
65
+ changes = append(changes, change{key, value})
66
+ }
67
+ sfile, code := stateEditWorkspace(root, slug, "state.md", stderr)
68
+ if code != 0 {
69
+ return code
70
+ }
71
+ for _, c := range changes {
72
+ switch {
73
+ case c.key == state.CursorSchema:
74
+ return fail(stderr, "state set: BLOCKED: schema is engine-owned; run devrites-engine migrate", 3)
75
+ case c.key == state.CursorPhase:
76
+ if _, ok := state.PolicyFor(state.Phase(c.value)); !ok {
77
+ return fail(stderr, fmt.Sprintf("state set: BLOCKED: unknown phase %q", c.value), 3)
78
+ }
79
+ case strings.ContainsAny(c.value, "|\r\n"):
80
+ return fail(stderr, fmt.Sprintf("state set: BLOCKED: value for %s has a pipe or line break; a cursor cell holds one line", c.key), 3)
81
+ }
82
+ }
83
+
84
+ code = 0
85
+ if err := state.WithFeatureLock(root, slug, func() error {
86
+ // #nosec G304 -- state.md inside the checked feature workspace
87
+ raw, err := os.ReadFile(sfile)
88
+ if err != nil {
89
+ return err
90
+ }
91
+ lines := splitLinesNoTrailing(raw)
92
+ for _, c := range changes {
93
+ current, exists := state.CursorField(lines, c.key)
94
+ if c.value == "" {
95
+ lines = state.DeleteCursorField(lines, c.key)
96
+ continue
97
+ }
98
+ isReturn := c.key == state.CursorReturnPhase || c.key == state.CursorReturnNextAction
99
+ if isReturn && exists && current != "" && current != c.value {
100
+ fmt.Fprintf(stderr, "state set: BLOCKED: %s already holds %q; restore that return cursor and --unset it before saving another\n", c.key, current)
101
+ code = 3
102
+ return nil
103
+ }
104
+ next := state.UpsertCursorField(lines, c.key, c.value)
105
+ if got, ok := state.CursorField(next, c.key); !ok || got != c.value {
106
+ fmt.Fprintf(stderr, "state set: BLOCKED: state.md cursor cannot hold %s; nothing written\n", c.key)
107
+ code = 3
108
+ return nil
109
+ }
110
+ lines = next
111
+ }
112
+ return fsutil.WriteFileAtomic(sfile, joinRecords(lines), 0o644)
113
+ }); err != nil {
114
+ return fail(stderr, "state set: "+err.Error(), 1)
115
+ }
116
+ if code == 0 {
117
+ fmt.Fprintf(stdout, "state set: %s: %d cursor field(s) written\n", slug, len(changes))
118
+ if slices.Contains(changes, change{state.CursorStatus, "awaiting_human"}) {
119
+ for _, q := range afkAutoPickable(root, filepath.Join(filepath.Dir(sfile), "questions.md")) {
120
+ fmt.Fprintf(stdout, "state set: advisory: AFK auto-picks %s (gate %s is in allow_gates); unless it is on the irreversible-risk list, resolve it with its proposed answer from questions.md via devrites-engine state resolve\n", q.id, q.gate)
121
+ }
122
+ }
123
+ }
124
+ return code
125
+ }
126
+
127
+ type openQuestion struct{ id, gate, proposed string }
128
+
129
+ // afkAutoPickable lists open questions the AFK contract answers without a
130
+ // human: the gate is in the sentinel's allow_gates and a proposed answer exists.
131
+ // No sentinel, no allow_gates line, or an unreadable file yields none.
132
+ func afkAutoPickable(root, qfile string) []openQuestion {
133
+ // #nosec G304 -- .devrites/AFK sentinel
134
+ afk, err := os.ReadFile(filepath.Join(root, "AFK"))
135
+ if err != nil {
136
+ return nil
137
+ }
138
+ allowed := map[string]bool{}
139
+ for _, line := range strings.Split(string(afk), "\n") {
140
+ if rest, ok := strings.CutPrefix(strings.TrimSpace(line), "allow_gates:"); ok {
141
+ rest, _, _ = strings.Cut(rest, "#")
142
+ for _, gate := range strings.Split(strings.Trim(strings.TrimSpace(rest), "[]"), ",") {
143
+ if gate = strings.ToLower(strings.TrimSpace(gate)); gate != "" {
144
+ allowed[gate] = true
145
+ }
146
+ }
147
+ }
148
+ }
149
+ // #nosec G304 -- questions.md inside the checked feature workspace
150
+ raw, err := os.ReadFile(qfile)
151
+ if err != nil {
152
+ return nil
153
+ }
154
+ lines, err := structuralLines(raw)
155
+ if err != nil {
156
+ return nil
157
+ }
158
+ var out []openQuestion
159
+ var cur openQuestion
160
+ var status string
161
+ flush := func() {
162
+ // blocking and escalating always pause, whatever allow_gates lists.
163
+ if cur.id != "" && status == "open" && allowed[cur.gate] && cur.gate != "blocking" && cur.gate != "escalating" && cur.proposed != "" {
164
+ out = append(out, cur)
165
+ }
166
+ }
167
+ for _, line := range lines {
168
+ if id, ok := strings.CutPrefix(line, "## "); ok && strings.HasPrefix(id, "q-") {
169
+ flush()
170
+ cur, status = openQuestion{id: strings.TrimSpace(id)}, ""
171
+ continue
172
+ }
173
+ key, value, ok := strings.Cut(line, ":")
174
+ if !ok || cur.id == "" {
175
+ continue
176
+ }
177
+ value = strings.TrimSpace(value)
178
+ switch key {
179
+ case "status":
180
+ status = strings.ToLower(value)
181
+ case "gate":
182
+ cur.gate = strings.ToLower(value)
183
+ case "proposed":
184
+ cur.proposed = value
185
+ }
186
+ }
187
+ flush()
188
+ return out
189
+ }
190
+
191
+ // RunStateAppend implements `devrites-engine state append`: it appends one
192
+ // `## <heading>` section to an append-only ledger atomically and refuses a
193
+ // heading that already exists, so a root write can never replace history.
194
+ //
195
+ // 0 appended 2 usage error 3 blocked; nothing written 1 I/O error
196
+ func RunStateAppend(root string, args []string, stdin io.Reader, stdout, stderr io.Writer) int {
197
+ var positional []string
198
+ var heading, bodyFile string
199
+ for i := 0; i < len(args); i++ {
200
+ switch args[i] {
201
+ case "--heading", "--body-file":
202
+ if i+1 == len(args) {
203
+ return fail(stderr, stateAppendUsage, 2)
204
+ }
205
+ if args[i] == "--heading" {
206
+ heading = args[i+1]
207
+ } else {
208
+ bodyFile = args[i+1]
209
+ }
210
+ i++
211
+ default:
212
+ if strings.HasPrefix(args[i], "-") {
213
+ return fail(stderr, stateAppendUsage, 2)
214
+ }
215
+ positional = append(positional, args[i])
216
+ }
217
+ }
218
+ heading = strings.TrimSpace(heading)
219
+ if len(positional) != 2 || heading == "" || bodyFile == "" || strings.ContainsAny(heading, "\r\n") {
220
+ return fail(stderr, stateAppendUsage, 2)
221
+ }
222
+ if strings.HasPrefix(heading, "#") || !utf8.ValidString(heading) {
223
+ return fail(stderr, "state append: BLOCKED: pass the heading text without leading #, as valid UTF-8", 3)
224
+ }
225
+ slug, ledger := positional[0], positional[1]
226
+ if !slices.Contains(appendLedgers, ledger) {
227
+ return fail(stderr, fmt.Sprintf("state append: BLOCKED: %s is not an append-only ledger (%s)", ledger, strings.Join(appendLedgers, ", ")), 3)
228
+ }
229
+ body, err := readAppendBody(bodyFile, stdin)
230
+ if err != nil {
231
+ return fail(stderr, "state append: BLOCKED: body: "+err.Error(), 3)
232
+ }
233
+ bodyLines, err := structuralLines(body)
234
+ if err != nil {
235
+ return fail(stderr, "state append: BLOCKED: body: "+err.Error(), 3)
236
+ }
237
+ for _, line := range bodyLines {
238
+ if sectionHeadingPattern.MatchString(line) {
239
+ return fail(stderr, fmt.Sprintf("state append: BLOCKED: body line %q would open another section; use ### for sub-headings", line), 3)
240
+ }
241
+ }
242
+ // Only the new entry is linted; existing questions.md history stays as written.
243
+ var advisories []string
244
+ if ledger == "questions.md" && strings.HasPrefix(heading, "q-") {
245
+ var problems []string
246
+ if problems, advisories = lintQuestionEntry(heading, bodyLines, len(body)); len(problems) > 0 {
247
+ return fail(stderr, fmt.Sprintf("state append: BLOCKED: questions.md entry %s: %s; see afk-hitl.md questions.md schema; nothing written", heading, strings.Join(problems, "; ")), 3)
248
+ }
249
+ }
250
+ path, code := stateEditWorkspace(root, slug, ledger, stderr)
251
+ if code != 0 {
252
+ return code
253
+ }
254
+
255
+ code = 0
256
+ var lines int
257
+ if err := state.WithFeatureLock(root, slug, func() error {
258
+ // #nosec G304 -- append-only ledger inside the checked feature workspace
259
+ raw, err := os.ReadFile(path)
260
+ if err != nil && !errors.Is(err, os.ErrNotExist) {
261
+ return err
262
+ }
263
+ existing, err := structuralLines(raw)
264
+ if err != nil {
265
+ fmt.Fprintf(stderr, "state append: BLOCKED: %s: %v\n", ledger, err)
266
+ code = 3
267
+ return nil
268
+ }
269
+ if hasSectionHeading(existing, heading) {
270
+ fmt.Fprintf(stderr, "state append: BLOCKED: %s already has \"## %s\" or its ID; history is append-only, pick a new ID\n", ledger, heading)
271
+ code = 3
272
+ return nil
273
+ }
274
+ var out bytes.Buffer
275
+ out.Write(raw)
276
+ if len(raw) > 0 {
277
+ if !bytes.HasSuffix(raw, []byte("\n")) {
278
+ out.WriteByte('\n')
279
+ }
280
+ out.WriteByte('\n')
281
+ }
282
+ fmt.Fprintf(&out, "## %s\n\n%s\n", heading, strings.TrimRight(string(body), "\n"))
283
+ // An unclosed fence in the body would hide every later heading from the
284
+ // duplicate check, so the next section must still be visible.
285
+ probe, err := structuralLines(append(bytes.Clone(out.Bytes()), "\n## sentinel\n"...))
286
+ if err != nil || probe[len(probe)-2] != "## sentinel" {
287
+ fmt.Fprintln(stderr, "state append: BLOCKED: the body or ledger leaves a code fence open; close it")
288
+ code = 3
289
+ return nil
290
+ }
291
+ // Same material band the gate blocks, so a ledger cannot grow past it
292
+ // between gates; proof ledgers stay advisory.
293
+ if status, ok := state.ArtifactBudget(ledger, out.Bytes()); ok && state.ArtifactBudgetGateApplies(ledger) && status.Material && !status.Override {
294
+ fmt.Fprintf(stderr, "state append: BLOCKED: %s would be %d lines/%d bytes, at or above %gx its %d-line/%d-byte budget; %s; nothing written\n",
295
+ ledger, status.Lines, status.Bytes, state.BudgetBlockFactor, status.LineBudget, status.ByteBudget, state.BudgetRemedy(status.LineBudget))
296
+ code = 3
297
+ return nil
298
+ }
299
+ lines = state.CountLines(out.Bytes())
300
+ return fsutil.WriteFileAtomic(path, out.Bytes(), 0o644)
301
+ }); err != nil {
302
+ return fail(stderr, "state append: "+err.Error(), 1)
303
+ }
304
+ if code != 0 {
305
+ return code
306
+ }
307
+ fmt.Fprintf(stdout, "state append: %s: added \"## %s\" (%d lines)\n", ledger, heading, lines)
308
+ if budget, ok := state.ArtifactLineBudget(ledger); ok && lines > budget {
309
+ fmt.Fprintf(stdout, "state append: advisory: %s is %d lines, over its %d-line budget\n", ledger, lines, budget)
310
+ }
311
+ for _, a := range advisories {
312
+ fmt.Fprintf(stdout, "state append: advisory: %s: %s\n", heading, a)
313
+ }
314
+ return 0
315
+ }
316
+
317
+ // stateEditWorkspace returns the path of name inside slug's current-schema
318
+ // workspace, or a nonzero exit code after reporting why it cannot be edited.
319
+ func stateEditWorkspace(root, slug, name string, stderr io.Writer) (string, int) {
320
+ workspace, err := devritespaths.ExistingFeatureDirChecked(root, slug)
321
+ if err != nil {
322
+ return "", fail(stderr, fmt.Sprintf("state: BLOCKED: workspace for %s: %v", slug, err), 3)
323
+ }
324
+ if err := state.RequireWorkspaceSchema(root, slug); err != nil {
325
+ return "", fail(stderr, "state: BLOCKED: "+err.Error(), 3)
326
+ }
327
+ path := filepath.Join(workspace, name)
328
+ if info, err := os.Lstat(path); err == nil && !info.Mode().IsRegular() {
329
+ return "", fail(stderr, fmt.Sprintf("state: BLOCKED: %s is not a regular file", name), 3)
330
+ }
331
+ return path, 0
332
+ }
333
+
334
+ func readAppendBody(name string, stdin io.Reader) ([]byte, error) {
335
+ var body []byte
336
+ var err error
337
+ if name == "-" {
338
+ body, err = io.ReadAll(io.LimitReader(stdin, maxAppendBytes+1))
339
+ if err == nil && len(body) > maxAppendBytes {
340
+ err = fmt.Errorf("exceeds %d bytes", maxAppendBytes)
341
+ }
342
+ } else {
343
+ body, err = readBoundedRegularFile(name, maxAppendBytes)
344
+ }
345
+ if err != nil {
346
+ return nil, err
347
+ }
348
+ body = bytes.ReplaceAll(body, []byte("\r\n"), []byte("\n"))
349
+ if len(bytes.TrimSpace(body)) == 0 {
350
+ return nil, errors.New("empty")
351
+ }
352
+ return body, nil
353
+ }
354
+
355
+ // structuralLines masks fenced code so headings inside examples never count.
356
+ func structuralLines(raw []byte) ([]string, error) {
357
+ masked, err := markdowntext.Structural(raw)
358
+ if err != nil {
359
+ return nil, err
360
+ }
361
+ return strings.Split(string(masked), "\n"), nil
362
+ }
363
+
364
+ // sectionHeadingPattern matches an ATX # or ## heading that opens a section.
365
+ var sectionHeadingPattern = regexp.MustCompile(`^ {0,3}#{1,2}([ \t]|$)`)
366
+
367
+ // ledgerIDPattern matches a stable ledger ID such as DRIFT-011, EV-026, or
368
+ // q-2026-10-19-007 at the start of a heading.
369
+ var ledgerIDPattern = regexp.MustCompile(`^[A-Za-z][A-Za-z0-9]*(-[A-Za-z0-9]+)*-[0-9]+$`)
370
+
371
+ func headingID(heading string) string {
372
+ fields := strings.Fields(heading)
373
+ if len(fields) == 0 {
374
+ return ""
375
+ }
376
+ if id := strings.TrimRight(fields[0], ":.,"); ledgerIDPattern.MatchString(id) {
377
+ return id
378
+ }
379
+ return ""
380
+ }
381
+
382
+ // hasSectionHeading reports a `## ` heading equal to heading, or one that
383
+ // starts with the same ledger ID: IDs are append-only and never reused.
384
+ func hasSectionHeading(lines []string, heading string) bool {
385
+ id := headingID(heading)
386
+ for _, line := range lines {
387
+ trimmed := strings.TrimSpace(line)
388
+ if !sectionHeadingPattern.MatchString(trimmed) || strings.HasPrefix(trimmed, "# ") || trimmed == "#" {
389
+ continue
390
+ }
391
+ if text := strings.TrimSpace(strings.TrimPrefix(trimmed, "##")); text == heading || id != "" && headingID(text) == id {
392
+ return true
393
+ }
394
+ }
395
+ return false
396
+ }
@@ -2,10 +2,18 @@ package lib
2
2
 
3
3
  import (
4
4
  "fmt"
5
+ "os"
5
6
  "path"
7
+ "path/filepath"
8
+ "regexp"
9
+ "slices"
6
10
  "sort"
11
+ "strconv"
7
12
  "strings"
8
13
 
14
+ "github.com/devrites/devrites/internal/devritespaths"
15
+ "github.com/devrites/devrites/internal/gate"
16
+ "github.com/devrites/devrites/internal/markdowntext"
9
17
  "github.com/devrites/devrites/internal/parallel"
10
18
  "github.com/devrites/devrites/internal/state"
11
19
  )
@@ -102,6 +110,164 @@ func scheduleRounds(graph TaskGraphResult, paths map[string][]string, root strin
102
110
  return rounds
103
111
  }
104
112
 
113
+ // PlanReady is the ready set for `parallel select --from-plan`; repoRoot is
114
+ // the project root.
115
+ func PlanReady(repoRoot, slug string) ([]parallel.SlicePaths, error) {
116
+ return planReady(filepath.Join(repoRoot, devritespaths.DevritesRootName), slug)
117
+ }
118
+
119
+ // planReady lists, in plan order, the tasks.md slices state.md does not check
120
+ // built whose dependencies it all checks built, each with its sliceWritePaths
121
+ // plus its dependency manifest and lockfile when it declares external
122
+ // dependencies. root is the .devrites directory.
123
+ func planReady(root, slug string) ([]parallel.SlicePaths, error) {
124
+ raw, err := readWorkspaceArtifact(root, slug, "tasks.md")
125
+ if err != nil {
126
+ return nil, err
127
+ }
128
+ graph := ParseTaskGraph(raw)
129
+ if len(graph.Problems) > 0 {
130
+ return nil, fmt.Errorf("tasks.md: %s", strings.Join(graph.Problems, "; "))
131
+ }
132
+ built, err := builtSlices(root, slug)
133
+ if err != nil {
134
+ return nil, err
135
+ }
136
+ isBuilt := func(id string) bool { return built[sliceNumber(id)] }
137
+ paths, _ := sliceWritePaths(raw, graph)
138
+ project := filepath.Dir(root)
139
+ var ready []parallel.SlicePaths
140
+ for _, s := range graph.Slices {
141
+ if isBuilt(s.ID) || slices.ContainsFunc(s.Dependencies, func(dep string) bool { return !isBuilt(dep) }) {
142
+ continue
143
+ }
144
+ if len(paths[s.ID]) == 0 {
145
+ return nil, fmt.Errorf("%s has no Writer allowlist or Files likely touched", s.ID)
146
+ }
147
+ block, _ := state.ExtractTaskSlice(raw, s.ID)
148
+ external, _ := fieldValue(sliceFields(block), "external dependencies")
149
+ ready = append(ready, parallel.SlicePaths{ID: s.ID, Paths: withManifests(project, paths[s.ID], external)})
150
+ }
151
+ return ready, nil
152
+ }
153
+
154
+ // builtWordRe marks a checked state.md item as a built checkpoint.
155
+ var builtWordRe = regexp.MustCompile(`(?i)\bbuilt\b`)
156
+
157
+ // builtSlices returns the slice numbers state.md checks built (`- [x] SLICE-004
158
+ // built — <sha>`, or `- [x] Slice 4: <name> — built`), outside fenced examples.
159
+ func builtSlices(root, slug string) (map[string]bool, error) {
160
+ raw, err := readWorkspaceArtifact(root, slug, "state.md")
161
+ if err != nil {
162
+ return nil, err
163
+ }
164
+ masked, err := markdowntext.Structural(raw)
165
+ if err != nil {
166
+ return nil, fmt.Errorf("state.md: %w", err)
167
+ }
168
+ built := map[string]bool{}
169
+ for _, item := range regressBuiltRe.FindAllString(string(masked), -1) {
170
+ if !builtWordRe.MatchString(item) {
171
+ continue
172
+ }
173
+ for _, m := range regressSliceIDRe.FindAllStringSubmatch(item, -1) {
174
+ built[strings.TrimLeft(m[1], "0")] = true
175
+ }
176
+ }
177
+ return built, nil
178
+ }
179
+
180
+ // withManifests adds, when external names dependencies (not empty or none),
181
+ // the manifest and lockfiles of the nearest directory above each write path
182
+ // that holds one, so two dependency-adding slices never share a round. A lone
183
+ // lockfile is always claimed (adding a dependency writes it); of several, only
184
+ // those present are.
185
+ func withManifests(project string, paths []string, external string) []string {
186
+ ext := strings.ToLower(strings.Trim(strings.TrimSpace(external), "`"))
187
+ if ext == "" || ext == "-" || ext == "n/a" || strings.HasPrefix(ext, "none") {
188
+ return paths
189
+ }
190
+ isFile := func(rel string) bool {
191
+ info, err := os.Stat(filepath.Join(project, filepath.FromSlash(rel)))
192
+ return err == nil && info.Mode().IsRegular()
193
+ }
194
+ out := append([]string{}, paths...)
195
+ seen := map[string]bool{}
196
+ for _, p := range paths {
197
+ seen[strings.ToLower(path.Clean(p))] = true
198
+ }
199
+ add := func(p string) {
200
+ if key := strings.ToLower(p); !seen[key] {
201
+ seen[key] = true
202
+ out = append(out, p)
203
+ }
204
+ }
205
+ for _, p := range paths {
206
+ for dir := path.Dir(path.Clean(p)); ; dir = path.Dir(dir) {
207
+ found := false
208
+ for _, m := range gate.DependencyManifests {
209
+ if !isFile(path.Join(dir, m.Manifest)) {
210
+ continue
211
+ }
212
+ found = true
213
+ add(path.Join(dir, m.Manifest))
214
+ for _, lock := range m.Locks {
215
+ if len(m.Locks) == 1 || isFile(path.Join(dir, lock)) {
216
+ add(path.Join(dir, lock))
217
+ }
218
+ }
219
+ }
220
+ if found || dir == "." || dir == "/" {
221
+ break
222
+ }
223
+ }
224
+ }
225
+ return out
226
+ }
227
+
228
+ // planBatch returns the eligible slice ids and the new picks of `parallel
229
+ // select --from-plan` at capN, seeded from slug's running lease. root is the
230
+ // .devrites directory.
231
+ func planBatch(root, slug string, capN int) (eligible, batch []string, err error) {
232
+ ready, err := planReady(root, slug)
233
+ if err != nil {
234
+ return nil, nil, err
235
+ }
236
+ elig, picks, _, err := parallel.SelectForSlug(filepath.Dir(root), slug, capN, ready)
237
+ if err != nil {
238
+ return nil, nil, err
239
+ }
240
+ ids := func(in []parallel.SlicePaths) []string {
241
+ out := make([]string, len(in))
242
+ for i, s := range in {
243
+ out[i] = s.ID
244
+ }
245
+ return out
246
+ }
247
+ return ids(elig), ids(picks), nil
248
+ }
249
+
250
+ // planSelectCommand is the exact command that reproduces planBatch from any
251
+ // directory; project is the directory holding .devrites.
252
+ func planSelectCommand(project, slug string, capN int) string {
253
+ return fmt.Sprintf("devrites-engine parallel select --root %s --slug %s --cap %d --from-plan", project, slug, capN)
254
+ }
255
+
256
+ // afkMaxParallel returns the AFK sentinel's max_parallel, or 0 when the
257
+ // sentinel, the line, or a readable number is absent.
258
+ func afkMaxParallel(root string) int {
259
+ data, err := os.ReadFile(filepath.Join(root, "AFK")) // #nosec G304 -- .devrites/AFK sentinel
260
+ if err != nil {
261
+ return 0
262
+ }
263
+ m := afkParallelRe.FindStringSubmatch(string(data))
264
+ if m == nil {
265
+ return 0
266
+ }
267
+ n, _ := strconv.Atoi(m[1])
268
+ return n
269
+ }
270
+
105
271
  func allDone(ids []string, done map[string]bool) bool {
106
272
  for _, id := range ids {
107
273
  if !done[id] {