devrites 5.11.0 → 5.13.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 (1030) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +5 -3
  3. package/docs/agents/issue-driven-rites.md +1 -1
  4. package/docs/agents/issue-tracker.md +3 -0
  5. package/docs/architecture.md +2 -2
  6. package/docs/cli.md +90 -0
  7. package/docs/command-map.md +7 -3
  8. package/docs/engine/commands.md +42 -0
  9. package/docs/engine/state-schema.md +1 -1
  10. package/docs/engine/workspace-schema.md +10 -2
  11. package/docs/flow.md +2 -1
  12. package/docs/skills.md +13 -4
  13. package/docs/usage.md +2 -0
  14. package/engine/commands.go +11 -5
  15. package/engine/help.go +83 -3
  16. package/engine/help_test.go +9 -1
  17. package/engine/internal/acceptance/acceptance_test.go +655 -0
  18. package/engine/internal/acceptance/approve.go +142 -0
  19. package/engine/internal/acceptance/cli.go +426 -0
  20. package/engine/internal/acceptance/evidence.go +139 -0
  21. package/engine/internal/acceptance/exec.go +131 -0
  22. package/engine/internal/acceptance/exec_unix.go +22 -0
  23. package/engine/internal/acceptance/exec_windows.go +16 -0
  24. package/engine/internal/acceptance/ledger.go +259 -0
  25. package/engine/internal/acceptance/lint.go +115 -0
  26. package/engine/internal/acceptance/run.go +207 -0
  27. package/engine/internal/acceptance/scaffold.go +55 -0
  28. package/engine/internal/gate/gate.go +12 -2
  29. package/engine/internal/gate/gate_test.go +17 -9
  30. package/engine/internal/gate/gates_ledger.go +76 -0
  31. package/engine/internal/gate/readiness_binding.go +39 -0
  32. package/engine/internal/gate/readiness_binding_test.go +4 -3
  33. package/engine/internal/install/install.go +7 -1
  34. package/engine/internal/install/install_test.go +17 -4
  35. package/engine/internal/install/merge.go +82 -22
  36. package/engine/internal/install/update.go +7 -1
  37. package/engine/internal/install/workspace_advisory.go +46 -0
  38. package/engine/internal/install/workspace_advisory_test.go +54 -0
  39. package/engine/internal/lib/candidate_test.go +1 -1
  40. package/engine/internal/lib/claims.go +411 -0
  41. package/engine/internal/lib/claims_test.go +182 -0
  42. package/engine/internal/lib/closeout_test.go +3 -3
  43. package/engine/internal/lib/context.go +445 -0
  44. package/engine/internal/lib/context_next_test.go +521 -0
  45. package/engine/internal/lib/detect.go +346 -0
  46. package/engine/internal/lib/detect_test.go +105 -0
  47. package/engine/internal/lib/diffscope.go +189 -0
  48. package/engine/internal/lib/dispatch.go +302 -0
  49. package/engine/internal/lib/drift.go +219 -0
  50. package/engine/internal/lib/drift_test.go +106 -0
  51. package/engine/internal/lib/dup.go +1243 -0
  52. package/engine/internal/lib/dup_test.go +488 -0
  53. package/engine/internal/lib/environment_report.go +1 -0
  54. package/engine/internal/lib/environment_report_test.go +2 -2
  55. package/engine/internal/lib/handoff.go +194 -0
  56. package/engine/internal/lib/handoff_test.go +83 -0
  57. package/engine/internal/lib/manifest_union_test.go +1 -1
  58. package/engine/internal/lib/metrics.go +256 -0
  59. package/engine/internal/lib/migrate_test.go +6 -6
  60. package/engine/internal/lib/next.go +155 -0
  61. package/engine/internal/lib/observe_budgets_test.go +3 -3
  62. package/engine/internal/lib/regression.go +378 -0
  63. package/engine/internal/lib/regression_test.go +179 -0
  64. package/engine/internal/lib/resolve_remediation_test.go +1 -1
  65. package/engine/internal/lib/secretscan_test.go +1 -1
  66. package/engine/internal/lib/slicecheck.go +179 -0
  67. package/engine/internal/lib/slicecheck_test.go +111 -0
  68. package/engine/internal/lib/taskgraph_test.go +2 -2
  69. package/engine/internal/lib/triggers.go +133 -0
  70. package/engine/internal/lib/windows.go +353 -0
  71. package/engine/internal/lib/windows_test.go +237 -0
  72. package/engine/internal/notes/cli.go +349 -0
  73. package/engine/internal/notes/notes.go +384 -0
  74. package/engine/internal/notes/notes_test.go +173 -0
  75. package/engine/internal/overhaul/admit/admit_test.go +170 -0
  76. package/engine/internal/overhaul/admit/run.go +416 -0
  77. package/engine/internal/overhaul/bench/run.go +248 -0
  78. package/engine/internal/overhaul/bench/run_test.go +139 -0
  79. package/engine/internal/overhaul/overhaul.go +64 -0
  80. package/engine/internal/overhaul/ovio/ovio.go +158 -0
  81. package/engine/internal/overhaul/records/check.go +834 -0
  82. package/engine/internal/overhaul/records/records_test.go +577 -0
  83. package/engine/internal/overhaul/records/run.go +392 -0
  84. package/engine/internal/overhaul/render/run.go +776 -0
  85. package/engine/internal/overhaul/render/run_test.go +293 -0
  86. package/engine/internal/overhaul/score/run.go +600 -0
  87. package/engine/internal/overhaul/score/run_test.go +405 -0
  88. package/engine/internal/overhaul/snapshot/run.go +563 -0
  89. package/engine/internal/overhaul/snapshot/run_test.go +360 -0
  90. package/engine/internal/parallel/lease.go +3 -8
  91. package/engine/internal/parallel/parallel_test.go +34 -0
  92. package/engine/internal/state/budgets.go +13 -8
  93. package/engine/internal/state/observation_test.go +1 -0
  94. package/engine/internal/state/schema.go +4 -3
  95. package/engine/internal/state/state_test.go +3 -3
  96. package/engine/internal/state/workflow_manifest.json +13 -4
  97. package/engine/internal/state/workspaceschema_test.go +2 -2
  98. package/engine/internal/testutil/testutil.go +4 -0
  99. package/engine/main.go +63 -0
  100. package/engine/note_routing_test.go +95 -0
  101. package/engine/observation_contract_test.go +1 -0
  102. package/engine/root_routing_test.go +15 -4
  103. package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/gates.md +4 -0
  104. package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/state.md +1 -1
  105. package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/state.md +1 -1
  106. package/engine/testdata/golden/TestParityResolve/answer/state.md.golden +1 -1
  107. package/engine/testdata/golden/TestParityResolve/drop/state.md.golden +1 -1
  108. package/engine/tests/adr_0027_readiness_binding_test.go +1 -0
  109. package/engine/tests/gate_test.go +3 -0
  110. package/engine/tests/parity_closeout_test.go +3 -3
  111. package/engine/tests/parity_resolve_test.go +1 -1
  112. package/engine/tests/workspace_observation_migration_test.go +8 -4
  113. package/pack/.claude/agents/_shared/composition-findings.md +1 -0
  114. package/pack/.claude/agents/_shared/composition-result.md +1 -0
  115. package/pack/.claude/agents/_shared/result-admission.md +3 -0
  116. package/pack/.claude/agents/_shared/untrusted-input-devex.md +1 -0
  117. package/pack/.claude/agents/_shared/untrusted-input-retrospector.md +1 -0
  118. package/pack/.claude/agents/_shared/untrusted-input.md +1 -0
  119. package/pack/.claude/agents/devrites-code-reviewer.md +19 -3
  120. package/pack/.claude/agents/devrites-devex-reviewer.md +3 -3
  121. package/pack/.claude/agents/devrites-doubt-reviewer.md +3 -3
  122. package/pack/.claude/agents/devrites-evidence-scout.md +3 -3
  123. package/pack/.claude/agents/devrites-frontend-reviewer.md +3 -3
  124. package/pack/.claude/agents/devrites-performance-reviewer.md +3 -3
  125. package/pack/.claude/agents/devrites-plan-drafter.md +3 -3
  126. package/pack/.claude/agents/devrites-plan-reviewer.md +3 -3
  127. package/pack/.claude/agents/devrites-proof-runner.md +3 -3
  128. package/pack/.claude/agents/devrites-retrospector.md +3 -3
  129. package/pack/.claude/agents/devrites-security-auditor.md +25 -3
  130. package/pack/.claude/agents/devrites-simplifier-reviewer.md +15 -5
  131. package/pack/.claude/agents/devrites-slice-wright.md +3 -3
  132. package/pack/.claude/agents/devrites-spec-reviewer.md +3 -3
  133. package/pack/.claude/agents/devrites-strategy-reviewer.md +3 -3
  134. package/pack/.claude/agents/devrites-test-analyst.md +3 -3
  135. package/pack/.claude/agents/devrites-upgrade-planner.md +3 -3
  136. package/pack/.claude/settings.json +39 -2
  137. package/pack/.claude/skills/devrites-api-interface/SKILL.md +2 -0
  138. package/pack/.claude/skills/devrites-audit/SKILL.md +9 -0
  139. package/pack/.claude/skills/devrites-browser-proof/SKILL.md +2 -0
  140. package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +2 -0
  141. package/pack/.claude/skills/devrites-doubt/SKILL.md +2 -0
  142. package/pack/.claude/skills/devrites-frontend-craft/SKILL.md +2 -0
  143. package/pack/.claude/skills/devrites-frontend-craft/reference/design-references.md +4 -0
  144. package/pack/.claude/skills/devrites-frontend-craft/reference/shape.md +5 -0
  145. package/pack/.claude/skills/devrites-interview/SKILL.md +5 -0
  146. package/pack/.claude/skills/devrites-lib/SKILL.md +40 -5
  147. package/pack/.claude/skills/devrites-lib/reference/_shared/reslice-autocomplete.md +3 -0
  148. package/pack/.claude/skills/devrites-lib/reference/_shared/reslice-plan.md +3 -0
  149. package/pack/.claude/skills/devrites-lib/reference/_shared/reslice-vet.md +3 -0
  150. package/pack/.claude/skills/devrites-lib/reference/candidate-integrity.md +17 -0
  151. package/pack/.claude/skills/devrites-lib/reference/orchestration-profiles.md +20 -0
  152. package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +36 -4
  153. package/pack/.claude/skills/devrites-lib/reference/reply-contract.md +24 -1
  154. package/pack/.claude/skills/devrites-lib/reference/standards/README.md +10 -0
  155. package/pack/.claude/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md +2 -0
  156. package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +2 -0
  157. package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +21 -1
  158. package/pack/.claude/skills/devrites-lib/reference/standards/anti-patterns.md +2 -0
  159. package/pack/.claude/skills/devrites-lib/reference/standards/architecture-health.md +64 -0
  160. package/pack/.claude/skills/devrites-lib/reference/standards/assumption-checkpoints.md +42 -0
  161. package/pack/.claude/skills/devrites-lib/reference/standards/audit-coverage.md +103 -0
  162. package/pack/.claude/skills/devrites-lib/reference/standards/browser-proof-checklist.md +2 -0
  163. package/pack/.claude/skills/devrites-lib/reference/standards/ci-cd.md +11 -0
  164. package/pack/.claude/skills/devrites-lib/reference/standards/code-navigation.md +71 -4
  165. package/pack/.claude/skills/devrites-lib/reference/standards/code-review.md +67 -7
  166. package/pack/.claude/skills/devrites-lib/reference/standards/coding-style.md +9 -4
  167. package/pack/.claude/skills/devrites-lib/reference/standards/context-hygiene.md +20 -3
  168. package/pack/.claude/skills/devrites-lib/reference/standards/core.md +10 -1
  169. package/pack/.claude/skills/devrites-lib/reference/standards/data-integrity.md +24 -2
  170. package/pack/.claude/skills/devrites-lib/reference/standards/debug-recovery.md +14 -0
  171. package/pack/.claude/skills/devrites-lib/reference/standards/definition-of-done.md +6 -0
  172. package/pack/.claude/skills/devrites-lib/reference/standards/deprecation.md +18 -0
  173. package/pack/.claude/skills/devrites-lib/reference/standards/developer-experience.md +2 -0
  174. package/pack/.claude/skills/devrites-lib/reference/standards/development-workflow.md +2 -0
  175. package/pack/.claude/skills/devrites-lib/reference/standards/documentation.md +12 -0
  176. package/pack/.claude/skills/devrites-lib/reference/standards/duplicate-code.md +118 -0
  177. package/pack/.claude/skills/devrites-lib/reference/standards/edge-case-trace.md +2 -0
  178. package/pack/.claude/skills/devrites-lib/reference/standards/elicitation.md +29 -0
  179. package/pack/.claude/skills/devrites-lib/reference/standards/error-handling.md +2 -0
  180. package/pack/.claude/skills/devrites-lib/reference/standards/gates.md +117 -0
  181. package/pack/.claude/skills/devrites-lib/reference/standards/git-workflow.md +2 -0
  182. package/pack/.claude/skills/devrites-lib/reference/standards/glossary.md +40 -0
  183. package/pack/.claude/skills/devrites-lib/reference/standards/hooks.md +16 -0
  184. package/pack/.claude/skills/devrites-lib/reference/standards/integration-reliability.md +19 -0
  185. package/pack/.claude/skills/devrites-lib/reference/standards/loop-operations.md +32 -1
  186. package/pack/.claude/skills/devrites-lib/reference/standards/observability.md +2 -0
  187. package/pack/.claude/skills/devrites-lib/reference/standards/one-shot-actions.md +2 -0
  188. package/pack/.claude/skills/devrites-lib/reference/standards/patterns.md +2 -0
  189. package/pack/.claude/skills/devrites-lib/reference/standards/performance.md +8 -1
  190. package/pack/.claude/skills/devrites-lib/reference/standards/principles.md +14 -0
  191. package/pack/.claude/skills/devrites-lib/reference/standards/prose-style.md +3 -0
  192. package/pack/.claude/skills/devrites-lib/reference/standards/release/ship-checklist.md +4 -0
  193. package/pack/.claude/skills/devrites-lib/reference/standards/repository-topology.md +2 -0
  194. package/pack/.claude/skills/devrites-lib/reference/standards/review/README.md +23 -0
  195. package/pack/.claude/skills/devrites-lib/reference/standards/review/ci-workflows.md +50 -0
  196. package/pack/.claude/skills/devrites-lib/reference/standards/review/default.md +42 -0
  197. package/pack/.claude/skills/devrites-lib/reference/standards/review/go.md +47 -0
  198. package/pack/.claude/skills/devrites-lib/reference/standards/review/python.md +46 -0
  199. package/pack/.claude/skills/devrites-lib/reference/standards/review/shell.md +40 -0
  200. package/pack/.claude/skills/devrites-lib/reference/standards/review/ts-js.md +54 -0
  201. package/pack/.claude/skills/devrites-lib/reference/standards/review-checklist.md +2 -0
  202. package/pack/.claude/skills/devrites-lib/reference/standards/security-checklist.md +2 -0
  203. package/pack/.claude/skills/devrites-lib/reference/standards/security.md +58 -6
  204. package/pack/.claude/skills/devrites-lib/reference/standards/skill-authoring.md +48 -0
  205. package/pack/.claude/skills/devrites-lib/reference/standards/spec-grammar.md +18 -4
  206. package/pack/.claude/skills/devrites-lib/reference/standards/test-proof-checklist.md +5 -0
  207. package/pack/.claude/skills/devrites-lib/reference/standards/testing.md +19 -2
  208. package/pack/.claude/skills/devrites-lib/reference/standards/tooling.md +12 -0
  209. package/pack/.claude/skills/devrites-lib/reference/standards/verification-methods.md +110 -0
  210. package/pack/.claude/skills/devrites-lib/reference/standards/windows.md +51 -0
  211. package/pack/.claude/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
  212. package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +28 -3
  213. package/pack/.claude/skills/devrites-prose-craft/SKILL.md +3 -1
  214. package/pack/.claude/skills/devrites-source-driven/SKILL.md +2 -0
  215. package/pack/.claude/skills/devrites-ux-shape/SKILL.md +2 -0
  216. package/pack/.claude/skills/overhaul/SKILL.md +201 -0
  217. package/pack/.claude/skills/overhaul/references/audit-domains.md +263 -0
  218. package/pack/.claude/skills/overhaul/references/lifecycle.md +308 -0
  219. package/pack/.claude/skills/overhaul/references/orchestration.md +264 -0
  220. package/pack/.claude/skills/overhaul/references/records.md +137 -0
  221. package/pack/.claude/skills/overhaul/references/repair-and-measurement.md +207 -0
  222. package/pack/.claude/skills/overhaul/references/review-and-report.md +137 -0
  223. package/pack/.claude/skills/overhaul/references/scope-and-safety.md +191 -0
  224. package/pack/.claude/skills/overhaul/references/scoring.md +222 -0
  225. package/pack/.claude/skills/overhaul/references/stack-profiles.md +264 -0
  226. package/pack/.claude/skills/overhaul/roles/backend-engineer.md +61 -0
  227. package/pack/.claude/skills/overhaul/roles/boundary.md +56 -0
  228. package/pack/.claude/skills/overhaul/roles/craft.md +77 -0
  229. package/pack/.claude/skills/overhaul/roles/frontend-engineer.md +63 -0
  230. package/pack/.claude/skills/overhaul/roles/implementer.md +59 -0
  231. package/pack/.claude/skills/overhaul/roles/recon.md +60 -0
  232. package/pack/.claude/skills/overhaul/roles/specialist.md +56 -0
  233. package/pack/.claude/skills/overhaul/roles/verifier.md +60 -0
  234. package/pack/.claude/skills/rite/SKILL.md +2 -0
  235. package/pack/.claude/skills/rite-adopt/SKILL.md +2 -0
  236. package/pack/.claude/skills/rite-autocomplete/SKILL.md +7 -4
  237. package/pack/.claude/skills/rite-autocomplete/reference/decision-policy.md +1 -3
  238. package/pack/.claude/skills/rite-autocomplete/reference/loop.md +8 -4
  239. package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +1 -3
  240. package/pack/.claude/skills/rite-build/SKILL.md +28 -14
  241. package/pack/.claude/skills/rite-build/reference/checkpoint.md +6 -0
  242. package/pack/.claude/skills/rite-build/reference/parallel-batch.md +11 -2
  243. package/pack/.claude/skills/rite-build/reference/phase-contract.md +8 -4
  244. package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +34 -8
  245. package/pack/.claude/skills/rite-clarify/SKILL.md +4 -0
  246. package/pack/.claude/skills/rite-converge/SKILL.md +14 -2
  247. package/pack/.claude/skills/rite-customize/SKILL.md +2 -0
  248. package/pack/.claude/skills/rite-define/SKILL.md +8 -2
  249. package/pack/.claude/skills/rite-doctor/SKILL.md +6 -1
  250. package/pack/.claude/skills/rite-dogfood/SKILL.md +2 -0
  251. package/pack/.claude/skills/rite-explain/SKILL.md +2 -0
  252. package/pack/.claude/skills/rite-frame/SKILL.md +4 -0
  253. package/pack/.claude/skills/rite-handoff/SKILL.md +8 -1
  254. package/pack/.claude/skills/rite-learn/SKILL.md +2 -0
  255. package/pack/.claude/skills/rite-plan/SKILL.md +7 -3
  256. package/pack/.claude/skills/rite-plan/reference/anti-patterns.md +1 -3
  257. package/pack/.claude/skills/rite-plan/reference/replan-and-repair.md +1 -3
  258. package/pack/.claude/skills/rite-plan/reference/task-breakdown.md +3 -1
  259. package/pack/.claude/skills/rite-polish/SKILL.md +13 -2
  260. package/pack/.claude/skills/rite-polish/reference/code.md +6 -1
  261. package/pack/.claude/skills/rite-polish/reference/ledger.md +3 -1
  262. package/pack/.claude/skills/rite-pov/SKILL.md +2 -0
  263. package/pack/.claude/skills/rite-pr-feedback/SKILL.md +2 -0
  264. package/pack/.claude/skills/rite-pressure-test/SKILL.md +2 -0
  265. package/pack/.claude/skills/rite-prototype/SKILL.md +2 -0
  266. package/pack/.claude/skills/rite-prove/SKILL.md +17 -3
  267. package/pack/.claude/skills/rite-prove/reference/test-command-discovery.md +6 -0
  268. package/pack/.claude/skills/rite-quick/SKILL.md +7 -1
  269. package/pack/.claude/skills/rite-resolve/SKILL.md +2 -0
  270. package/pack/.claude/skills/rite-review/SKILL.md +5 -1
  271. package/pack/.claude/skills/rite-review/reference/performance-checklist.md +14 -3
  272. package/pack/.claude/skills/rite-seal/SKILL.md +27 -3
  273. package/pack/.claude/skills/rite-seal/reference/go-no-go.md +1 -0
  274. package/pack/.claude/skills/rite-seal/reference/phase-contract.md +3 -1
  275. package/pack/.claude/skills/rite-ship/SKILL.md +5 -1
  276. package/pack/.claude/skills/rite-spec/SKILL.md +10 -3
  277. package/pack/.claude/skills/rite-spec/reference/state-workspace.md +5 -0
  278. package/pack/.claude/skills/rite-status/SKILL.md +9 -0
  279. package/pack/.claude/skills/rite-temper/SKILL.md +5 -1
  280. package/pack/.claude/skills/rite-upgrade/SKILL.md +9 -1
  281. package/pack/.claude/skills/rite-vet/SKILL.md +29 -9
  282. package/pack/.claude/skills/rite-vet/reference/anti-patterns.md +1 -3
  283. package/pack/.claude/skills/rite-vet/reference/artifacts.md +20 -3
  284. package/pack/.claude/skills/rite-vet/reference/depth.md +1 -3
  285. package/pack/.claude/skills/rite-vet/reference/review-axes.md +6 -3
  286. package/pack/.claude/skills/rite-watch-pr/SKILL.md +2 -0
  287. package/pack/.claude/skills/rite-zoom-out/SKILL.md +2 -0
  288. package/pack/generated/claude/agents/devrites-code-reviewer.md +17 -1
  289. package/pack/generated/claude/agents/devrites-devex-reviewer.md +1 -1
  290. package/pack/generated/claude/agents/devrites-doubt-reviewer.md +1 -1
  291. package/pack/generated/claude/agents/devrites-evidence-scout.md +1 -1
  292. package/pack/generated/claude/agents/devrites-frontend-reviewer.md +1 -1
  293. package/pack/generated/claude/agents/devrites-performance-reviewer.md +1 -1
  294. package/pack/generated/claude/agents/devrites-plan-drafter.md +1 -1
  295. package/pack/generated/claude/agents/devrites-plan-reviewer.md +1 -1
  296. package/pack/generated/claude/agents/devrites-proof-runner.md +1 -1
  297. package/pack/generated/claude/agents/devrites-retrospector.md +1 -1
  298. package/pack/generated/claude/agents/devrites-security-auditor.md +23 -1
  299. package/pack/generated/claude/agents/devrites-simplifier-reviewer.md +13 -3
  300. package/pack/generated/claude/agents/devrites-slice-wright.md +1 -1
  301. package/pack/generated/claude/agents/devrites-spec-reviewer.md +1 -1
  302. package/pack/generated/claude/agents/devrites-strategy-reviewer.md +1 -1
  303. package/pack/generated/claude/agents/devrites-test-analyst.md +1 -1
  304. package/pack/generated/claude/agents/devrites-upgrade-planner.md +1 -1
  305. package/pack/generated/claude/settings.json +39 -2
  306. package/pack/generated/claude/skills/devrites-api-interface/SKILL.md +2 -0
  307. package/pack/generated/claude/skills/devrites-audit/SKILL.md +9 -0
  308. package/pack/generated/claude/skills/devrites-browser-proof/SKILL.md +2 -0
  309. package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +2 -0
  310. package/pack/generated/claude/skills/devrites-doubt/SKILL.md +2 -0
  311. package/pack/generated/claude/skills/devrites-frontend-craft/SKILL.md +2 -0
  312. package/pack/generated/claude/skills/devrites-frontend-craft/reference/design-references.md +4 -0
  313. package/pack/generated/claude/skills/devrites-frontend-craft/reference/shape.md +5 -0
  314. package/pack/generated/claude/skills/devrites-interview/SKILL.md +5 -0
  315. package/pack/generated/claude/skills/devrites-lib/SKILL.md +40 -5
  316. package/pack/generated/claude/skills/devrites-lib/reference/candidate-integrity.md +17 -0
  317. package/pack/generated/claude/skills/devrites-lib/reference/orchestration-profiles.md +20 -0
  318. package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +36 -4
  319. package/pack/generated/claude/skills/devrites-lib/reference/reply-contract.md +24 -1
  320. package/pack/generated/claude/skills/devrites-lib/reference/standards/README.md +10 -0
  321. package/pack/generated/claude/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md +2 -0
  322. package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +2 -0
  323. package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +21 -1
  324. package/pack/generated/claude/skills/devrites-lib/reference/standards/anti-patterns.md +2 -0
  325. package/pack/generated/claude/skills/devrites-lib/reference/standards/architecture-health.md +64 -0
  326. package/pack/generated/claude/skills/devrites-lib/reference/standards/assumption-checkpoints.md +42 -0
  327. package/pack/generated/claude/skills/devrites-lib/reference/standards/audit-coverage.md +103 -0
  328. package/pack/generated/claude/skills/devrites-lib/reference/standards/browser-proof-checklist.md +2 -0
  329. package/pack/generated/claude/skills/devrites-lib/reference/standards/ci-cd.md +11 -0
  330. package/pack/generated/claude/skills/devrites-lib/reference/standards/code-navigation.md +71 -4
  331. package/pack/generated/claude/skills/devrites-lib/reference/standards/code-review.md +67 -7
  332. package/pack/generated/claude/skills/devrites-lib/reference/standards/coding-style.md +9 -4
  333. package/pack/generated/claude/skills/devrites-lib/reference/standards/context-hygiene.md +20 -3
  334. package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +10 -1
  335. package/pack/generated/claude/skills/devrites-lib/reference/standards/data-integrity.md +24 -2
  336. package/pack/generated/claude/skills/devrites-lib/reference/standards/debug-recovery.md +14 -0
  337. package/pack/generated/claude/skills/devrites-lib/reference/standards/definition-of-done.md +6 -0
  338. package/pack/generated/claude/skills/devrites-lib/reference/standards/deprecation.md +18 -0
  339. package/pack/generated/claude/skills/devrites-lib/reference/standards/developer-experience.md +2 -0
  340. package/pack/generated/claude/skills/devrites-lib/reference/standards/development-workflow.md +2 -0
  341. package/pack/generated/claude/skills/devrites-lib/reference/standards/documentation.md +12 -0
  342. package/pack/generated/claude/skills/devrites-lib/reference/standards/duplicate-code.md +118 -0
  343. package/pack/generated/claude/skills/devrites-lib/reference/standards/edge-case-trace.md +2 -0
  344. package/pack/generated/claude/skills/devrites-lib/reference/standards/elicitation.md +29 -0
  345. package/pack/generated/claude/skills/devrites-lib/reference/standards/error-handling.md +2 -0
  346. package/pack/generated/claude/skills/devrites-lib/reference/standards/gates.md +117 -0
  347. package/pack/generated/claude/skills/devrites-lib/reference/standards/git-workflow.md +2 -0
  348. package/pack/generated/claude/skills/devrites-lib/reference/standards/glossary.md +40 -0
  349. package/pack/generated/claude/skills/devrites-lib/reference/standards/hooks.md +16 -0
  350. package/pack/generated/claude/skills/devrites-lib/reference/standards/integration-reliability.md +19 -0
  351. package/pack/generated/claude/skills/devrites-lib/reference/standards/loop-operations.md +32 -1
  352. package/pack/generated/claude/skills/devrites-lib/reference/standards/observability.md +2 -0
  353. package/pack/generated/claude/skills/devrites-lib/reference/standards/one-shot-actions.md +2 -0
  354. package/pack/generated/claude/skills/devrites-lib/reference/standards/patterns.md +2 -0
  355. package/pack/generated/claude/skills/devrites-lib/reference/standards/performance.md +8 -1
  356. package/pack/generated/claude/skills/devrites-lib/reference/standards/principles.md +14 -0
  357. package/pack/generated/claude/skills/devrites-lib/reference/standards/prose-style.md +3 -0
  358. package/pack/generated/claude/skills/devrites-lib/reference/standards/release/ship-checklist.md +4 -0
  359. package/pack/generated/claude/skills/devrites-lib/reference/standards/repository-topology.md +2 -0
  360. package/pack/generated/claude/skills/devrites-lib/reference/standards/review/README.md +23 -0
  361. package/pack/generated/claude/skills/devrites-lib/reference/standards/review/ci-workflows.md +50 -0
  362. package/pack/generated/claude/skills/devrites-lib/reference/standards/review/default.md +42 -0
  363. package/pack/generated/claude/skills/devrites-lib/reference/standards/review/go.md +47 -0
  364. package/pack/generated/claude/skills/devrites-lib/reference/standards/review/python.md +46 -0
  365. package/pack/generated/claude/skills/devrites-lib/reference/standards/review/shell.md +40 -0
  366. package/pack/generated/claude/skills/devrites-lib/reference/standards/review/ts-js.md +54 -0
  367. package/pack/generated/claude/skills/devrites-lib/reference/standards/review-checklist.md +2 -0
  368. package/pack/generated/claude/skills/devrites-lib/reference/standards/security-checklist.md +2 -0
  369. package/pack/generated/claude/skills/devrites-lib/reference/standards/security.md +58 -6
  370. package/pack/generated/claude/skills/devrites-lib/reference/standards/skill-authoring.md +48 -0
  371. package/pack/generated/claude/skills/devrites-lib/reference/standards/spec-grammar.md +18 -4
  372. package/pack/generated/claude/skills/devrites-lib/reference/standards/test-proof-checklist.md +5 -0
  373. package/pack/generated/claude/skills/devrites-lib/reference/standards/testing.md +19 -2
  374. package/pack/generated/claude/skills/devrites-lib/reference/standards/tooling.md +12 -0
  375. package/pack/generated/claude/skills/devrites-lib/reference/standards/verification-methods.md +110 -0
  376. package/pack/generated/claude/skills/devrites-lib/reference/standards/windows.md +51 -0
  377. package/pack/generated/claude/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
  378. package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +28 -3
  379. package/pack/generated/claude/skills/devrites-prose-craft/SKILL.md +3 -1
  380. package/pack/generated/claude/skills/devrites-source-driven/SKILL.md +2 -0
  381. package/pack/generated/claude/skills/devrites-ux-shape/SKILL.md +2 -0
  382. package/pack/generated/claude/skills/overhaul/SKILL.md +201 -0
  383. package/pack/generated/claude/skills/overhaul/references/audit-domains.md +263 -0
  384. package/pack/generated/claude/skills/overhaul/references/lifecycle.md +308 -0
  385. package/pack/generated/claude/skills/overhaul/references/orchestration.md +264 -0
  386. package/pack/generated/claude/skills/overhaul/references/records.md +137 -0
  387. package/pack/generated/claude/skills/overhaul/references/repair-and-measurement.md +207 -0
  388. package/pack/generated/claude/skills/overhaul/references/review-and-report.md +137 -0
  389. package/pack/generated/claude/skills/overhaul/references/scope-and-safety.md +191 -0
  390. package/pack/generated/claude/skills/overhaul/references/scoring.md +222 -0
  391. package/pack/generated/claude/skills/overhaul/references/stack-profiles.md +264 -0
  392. package/pack/generated/claude/skills/overhaul/roles/backend-engineer.md +61 -0
  393. package/pack/generated/claude/skills/overhaul/roles/boundary.md +56 -0
  394. package/pack/generated/claude/skills/overhaul/roles/craft.md +77 -0
  395. package/pack/generated/claude/skills/overhaul/roles/frontend-engineer.md +63 -0
  396. package/pack/generated/claude/skills/overhaul/roles/implementer.md +59 -0
  397. package/pack/generated/claude/skills/overhaul/roles/recon.md +60 -0
  398. package/pack/generated/claude/skills/overhaul/roles/specialist.md +56 -0
  399. package/pack/generated/claude/skills/overhaul/roles/verifier.md +60 -0
  400. package/pack/generated/claude/skills/rite/SKILL.md +2 -0
  401. package/pack/generated/claude/skills/rite-adopt/SKILL.md +2 -0
  402. package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +6 -1
  403. package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +7 -1
  404. package/pack/generated/claude/skills/rite-build/SKILL.md +28 -14
  405. package/pack/generated/claude/skills/rite-build/reference/checkpoint.md +6 -0
  406. package/pack/generated/claude/skills/rite-build/reference/parallel-batch.md +11 -2
  407. package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +8 -4
  408. package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +34 -8
  409. package/pack/generated/claude/skills/rite-clarify/SKILL.md +4 -0
  410. package/pack/generated/claude/skills/rite-converge/SKILL.md +14 -2
  411. package/pack/generated/claude/skills/rite-customize/SKILL.md +2 -0
  412. package/pack/generated/claude/skills/rite-define/SKILL.md +8 -2
  413. package/pack/generated/claude/skills/rite-doctor/SKILL.md +6 -1
  414. package/pack/generated/claude/skills/rite-dogfood/SKILL.md +2 -0
  415. package/pack/generated/claude/skills/rite-explain/SKILL.md +2 -0
  416. package/pack/generated/claude/skills/rite-frame/SKILL.md +4 -0
  417. package/pack/generated/claude/skills/rite-handoff/SKILL.md +8 -1
  418. package/pack/generated/claude/skills/rite-learn/SKILL.md +2 -0
  419. package/pack/generated/claude/skills/rite-plan/SKILL.md +6 -0
  420. package/pack/generated/claude/skills/rite-plan/reference/task-breakdown.md +3 -1
  421. package/pack/generated/claude/skills/rite-polish/SKILL.md +13 -2
  422. package/pack/generated/claude/skills/rite-polish/reference/code.md +6 -1
  423. package/pack/generated/claude/skills/rite-polish/reference/ledger.md +3 -1
  424. package/pack/generated/claude/skills/rite-pov/SKILL.md +2 -0
  425. package/pack/generated/claude/skills/rite-pr-feedback/SKILL.md +2 -0
  426. package/pack/generated/claude/skills/rite-pressure-test/SKILL.md +2 -0
  427. package/pack/generated/claude/skills/rite-prototype/SKILL.md +2 -0
  428. package/pack/generated/claude/skills/rite-prove/SKILL.md +17 -3
  429. package/pack/generated/claude/skills/rite-prove/reference/test-command-discovery.md +6 -0
  430. package/pack/generated/claude/skills/rite-quick/SKILL.md +7 -1
  431. package/pack/generated/claude/skills/rite-resolve/SKILL.md +2 -0
  432. package/pack/generated/claude/skills/rite-review/SKILL.md +5 -1
  433. package/pack/generated/claude/skills/rite-review/reference/performance-checklist.md +14 -3
  434. package/pack/generated/claude/skills/rite-seal/SKILL.md +27 -3
  435. package/pack/generated/claude/skills/rite-seal/reference/go-no-go.md +1 -0
  436. package/pack/generated/claude/skills/rite-seal/reference/phase-contract.md +3 -1
  437. package/pack/generated/claude/skills/rite-ship/SKILL.md +5 -1
  438. package/pack/generated/claude/skills/rite-spec/SKILL.md +10 -3
  439. package/pack/generated/claude/skills/rite-spec/reference/state-workspace.md +5 -0
  440. package/pack/generated/claude/skills/rite-status/SKILL.md +9 -0
  441. package/pack/generated/claude/skills/rite-temper/SKILL.md +5 -1
  442. package/pack/generated/claude/skills/rite-upgrade/SKILL.md +9 -1
  443. package/pack/generated/claude/skills/rite-vet/SKILL.md +28 -6
  444. package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +19 -0
  445. package/pack/generated/claude/skills/rite-vet/reference/review-axes.md +5 -0
  446. package/pack/generated/claude/skills/rite-watch-pr/SKILL.md +2 -0
  447. package/pack/generated/claude/skills/rite-zoom-out/SKILL.md +2 -0
  448. package/pack/generated/codex/agents/devrites-code-reviewer.toml +16 -0
  449. package/pack/generated/codex/agents/devrites-security-auditor.toml +22 -0
  450. package/pack/generated/codex/agents/devrites-simplifier-reviewer.toml +12 -2
  451. package/pack/generated/codex/skills/devrites-api-interface/SKILL.md +2 -0
  452. package/pack/generated/codex/skills/devrites-audit/SKILL.md +9 -0
  453. package/pack/generated/codex/skills/devrites-browser-proof/SKILL.md +2 -0
  454. package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +2 -0
  455. package/pack/generated/codex/skills/devrites-doubt/SKILL.md +2 -0
  456. package/pack/generated/codex/skills/devrites-frontend-craft/SKILL.md +2 -0
  457. package/pack/generated/codex/skills/devrites-frontend-craft/reference/design-references.md +4 -0
  458. package/pack/generated/codex/skills/devrites-frontend-craft/reference/shape.md +5 -0
  459. package/pack/generated/codex/skills/devrites-interview/SKILL.md +5 -0
  460. package/pack/generated/codex/skills/devrites-lib/SKILL.md +40 -5
  461. package/pack/generated/codex/skills/devrites-lib/reference/candidate-integrity.md +17 -0
  462. package/pack/generated/codex/skills/devrites-lib/reference/orchestration-profiles.md +20 -0
  463. package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +36 -4
  464. package/pack/generated/codex/skills/devrites-lib/reference/reply-contract.md +24 -1
  465. package/pack/generated/codex/skills/devrites-lib/reference/standards/README.md +10 -0
  466. package/pack/generated/codex/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md +2 -0
  467. package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +2 -0
  468. package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +21 -1
  469. package/pack/generated/codex/skills/devrites-lib/reference/standards/anti-patterns.md +2 -0
  470. package/pack/generated/codex/skills/devrites-lib/reference/standards/architecture-health.md +64 -0
  471. package/pack/generated/codex/skills/devrites-lib/reference/standards/assumption-checkpoints.md +42 -0
  472. package/pack/generated/codex/skills/devrites-lib/reference/standards/audit-coverage.md +103 -0
  473. package/pack/generated/codex/skills/devrites-lib/reference/standards/browser-proof-checklist.md +2 -0
  474. package/pack/generated/codex/skills/devrites-lib/reference/standards/ci-cd.md +11 -0
  475. package/pack/generated/codex/skills/devrites-lib/reference/standards/code-navigation.md +71 -4
  476. package/pack/generated/codex/skills/devrites-lib/reference/standards/code-review.md +67 -7
  477. package/pack/generated/codex/skills/devrites-lib/reference/standards/coding-style.md +9 -4
  478. package/pack/generated/codex/skills/devrites-lib/reference/standards/context-hygiene.md +20 -3
  479. package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +10 -1
  480. package/pack/generated/codex/skills/devrites-lib/reference/standards/data-integrity.md +24 -2
  481. package/pack/generated/codex/skills/devrites-lib/reference/standards/debug-recovery.md +14 -0
  482. package/pack/generated/codex/skills/devrites-lib/reference/standards/definition-of-done.md +6 -0
  483. package/pack/generated/codex/skills/devrites-lib/reference/standards/deprecation.md +18 -0
  484. package/pack/generated/codex/skills/devrites-lib/reference/standards/developer-experience.md +2 -0
  485. package/pack/generated/codex/skills/devrites-lib/reference/standards/development-workflow.md +2 -0
  486. package/pack/generated/codex/skills/devrites-lib/reference/standards/documentation.md +12 -0
  487. package/pack/generated/codex/skills/devrites-lib/reference/standards/duplicate-code.md +118 -0
  488. package/pack/generated/codex/skills/devrites-lib/reference/standards/edge-case-trace.md +2 -0
  489. package/pack/generated/codex/skills/devrites-lib/reference/standards/elicitation.md +29 -0
  490. package/pack/generated/codex/skills/devrites-lib/reference/standards/error-handling.md +2 -0
  491. package/pack/generated/codex/skills/devrites-lib/reference/standards/gates.md +117 -0
  492. package/pack/generated/codex/skills/devrites-lib/reference/standards/git-workflow.md +2 -0
  493. package/pack/generated/codex/skills/devrites-lib/reference/standards/glossary.md +40 -0
  494. package/pack/generated/codex/skills/devrites-lib/reference/standards/hooks.md +16 -0
  495. package/pack/generated/codex/skills/devrites-lib/reference/standards/integration-reliability.md +19 -0
  496. package/pack/generated/codex/skills/devrites-lib/reference/standards/loop-operations.md +32 -1
  497. package/pack/generated/codex/skills/devrites-lib/reference/standards/observability.md +2 -0
  498. package/pack/generated/codex/skills/devrites-lib/reference/standards/one-shot-actions.md +2 -0
  499. package/pack/generated/codex/skills/devrites-lib/reference/standards/patterns.md +2 -0
  500. package/pack/generated/codex/skills/devrites-lib/reference/standards/performance.md +8 -1
  501. package/pack/generated/codex/skills/devrites-lib/reference/standards/principles.md +14 -0
  502. package/pack/generated/codex/skills/devrites-lib/reference/standards/prose-style.md +3 -0
  503. package/pack/generated/codex/skills/devrites-lib/reference/standards/release/ship-checklist.md +4 -0
  504. package/pack/generated/codex/skills/devrites-lib/reference/standards/repository-topology.md +2 -0
  505. package/pack/generated/codex/skills/devrites-lib/reference/standards/review/README.md +23 -0
  506. package/pack/generated/codex/skills/devrites-lib/reference/standards/review/ci-workflows.md +50 -0
  507. package/pack/generated/codex/skills/devrites-lib/reference/standards/review/default.md +42 -0
  508. package/pack/generated/codex/skills/devrites-lib/reference/standards/review/go.md +47 -0
  509. package/pack/generated/codex/skills/devrites-lib/reference/standards/review/python.md +46 -0
  510. package/pack/generated/codex/skills/devrites-lib/reference/standards/review/shell.md +40 -0
  511. package/pack/generated/codex/skills/devrites-lib/reference/standards/review/ts-js.md +54 -0
  512. package/pack/generated/codex/skills/devrites-lib/reference/standards/review-checklist.md +2 -0
  513. package/pack/generated/codex/skills/devrites-lib/reference/standards/security-checklist.md +2 -0
  514. package/pack/generated/codex/skills/devrites-lib/reference/standards/security.md +58 -6
  515. package/pack/generated/codex/skills/devrites-lib/reference/standards/skill-authoring.md +48 -0
  516. package/pack/generated/codex/skills/devrites-lib/reference/standards/spec-grammar.md +18 -4
  517. package/pack/generated/codex/skills/devrites-lib/reference/standards/test-proof-checklist.md +5 -0
  518. package/pack/generated/codex/skills/devrites-lib/reference/standards/testing.md +19 -2
  519. package/pack/generated/codex/skills/devrites-lib/reference/standards/tooling.md +12 -0
  520. package/pack/generated/codex/skills/devrites-lib/reference/standards/verification-methods.md +110 -0
  521. package/pack/generated/codex/skills/devrites-lib/reference/standards/windows.md +51 -0
  522. package/pack/generated/codex/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
  523. package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +28 -3
  524. package/pack/generated/codex/skills/devrites-prose-craft/SKILL.md +3 -1
  525. package/pack/generated/codex/skills/devrites-source-driven/SKILL.md +2 -0
  526. package/pack/generated/codex/skills/devrites-ux-shape/SKILL.md +2 -0
  527. package/pack/generated/codex/skills/overhaul/SKILL.md +201 -0
  528. package/pack/generated/codex/skills/overhaul/agents/openai.yaml +2 -0
  529. package/pack/generated/codex/skills/overhaul/references/audit-domains.md +263 -0
  530. package/pack/generated/codex/skills/overhaul/references/lifecycle.md +308 -0
  531. package/pack/generated/codex/skills/overhaul/references/orchestration.md +264 -0
  532. package/pack/generated/codex/skills/overhaul/references/records.md +137 -0
  533. package/pack/generated/codex/skills/overhaul/references/repair-and-measurement.md +207 -0
  534. package/pack/generated/codex/skills/overhaul/references/review-and-report.md +137 -0
  535. package/pack/generated/codex/skills/overhaul/references/scope-and-safety.md +191 -0
  536. package/pack/generated/codex/skills/overhaul/references/scoring.md +222 -0
  537. package/pack/generated/codex/skills/overhaul/references/stack-profiles.md +264 -0
  538. package/pack/generated/codex/skills/overhaul/roles/backend-engineer.md +61 -0
  539. package/pack/generated/codex/skills/overhaul/roles/boundary.md +56 -0
  540. package/pack/generated/codex/skills/overhaul/roles/craft.md +77 -0
  541. package/pack/generated/codex/skills/overhaul/roles/frontend-engineer.md +63 -0
  542. package/pack/generated/codex/skills/overhaul/roles/implementer.md +59 -0
  543. package/pack/generated/codex/skills/overhaul/roles/recon.md +60 -0
  544. package/pack/generated/codex/skills/overhaul/roles/specialist.md +56 -0
  545. package/pack/generated/codex/skills/overhaul/roles/verifier.md +60 -0
  546. package/pack/generated/codex/skills/rite/SKILL.md +2 -0
  547. package/pack/generated/codex/skills/rite-adopt/SKILL.md +2 -0
  548. package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +6 -1
  549. package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +7 -1
  550. package/pack/generated/codex/skills/rite-build/SKILL.md +28 -14
  551. package/pack/generated/codex/skills/rite-build/reference/checkpoint.md +6 -0
  552. package/pack/generated/codex/skills/rite-build/reference/parallel-batch.md +11 -2
  553. package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +8 -4
  554. package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +34 -8
  555. package/pack/generated/codex/skills/rite-clarify/SKILL.md +4 -0
  556. package/pack/generated/codex/skills/rite-converge/SKILL.md +14 -2
  557. package/pack/generated/codex/skills/rite-customize/SKILL.md +2 -0
  558. package/pack/generated/codex/skills/rite-define/SKILL.md +8 -2
  559. package/pack/generated/codex/skills/rite-doctor/SKILL.md +6 -1
  560. package/pack/generated/codex/skills/rite-dogfood/SKILL.md +2 -0
  561. package/pack/generated/codex/skills/rite-explain/SKILL.md +2 -0
  562. package/pack/generated/codex/skills/rite-frame/SKILL.md +4 -0
  563. package/pack/generated/codex/skills/rite-handoff/SKILL.md +8 -1
  564. package/pack/generated/codex/skills/rite-learn/SKILL.md +2 -0
  565. package/pack/generated/codex/skills/rite-plan/SKILL.md +6 -0
  566. package/pack/generated/codex/skills/rite-plan/reference/task-breakdown.md +3 -1
  567. package/pack/generated/codex/skills/rite-polish/SKILL.md +13 -2
  568. package/pack/generated/codex/skills/rite-polish/reference/code.md +6 -1
  569. package/pack/generated/codex/skills/rite-polish/reference/ledger.md +3 -1
  570. package/pack/generated/codex/skills/rite-pov/SKILL.md +2 -0
  571. package/pack/generated/codex/skills/rite-pr-feedback/SKILL.md +2 -0
  572. package/pack/generated/codex/skills/rite-pressure-test/SKILL.md +2 -0
  573. package/pack/generated/codex/skills/rite-prototype/SKILL.md +2 -0
  574. package/pack/generated/codex/skills/rite-prove/SKILL.md +17 -3
  575. package/pack/generated/codex/skills/rite-prove/reference/test-command-discovery.md +6 -0
  576. package/pack/generated/codex/skills/rite-quick/SKILL.md +7 -1
  577. package/pack/generated/codex/skills/rite-resolve/SKILL.md +2 -0
  578. package/pack/generated/codex/skills/rite-review/SKILL.md +5 -1
  579. package/pack/generated/codex/skills/rite-review/reference/performance-checklist.md +14 -3
  580. package/pack/generated/codex/skills/rite-seal/SKILL.md +27 -3
  581. package/pack/generated/codex/skills/rite-seal/reference/go-no-go.md +1 -0
  582. package/pack/generated/codex/skills/rite-seal/reference/phase-contract.md +3 -1
  583. package/pack/generated/codex/skills/rite-ship/SKILL.md +5 -1
  584. package/pack/generated/codex/skills/rite-spec/SKILL.md +10 -3
  585. package/pack/generated/codex/skills/rite-spec/reference/state-workspace.md +5 -0
  586. package/pack/generated/codex/skills/rite-status/SKILL.md +9 -0
  587. package/pack/generated/codex/skills/rite-temper/SKILL.md +5 -1
  588. package/pack/generated/codex/skills/rite-upgrade/SKILL.md +9 -1
  589. package/pack/generated/codex/skills/rite-vet/SKILL.md +28 -6
  590. package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +19 -0
  591. package/pack/generated/codex/skills/rite-vet/reference/review-axes.md +5 -0
  592. package/pack/generated/codex/skills/rite-watch-pr/SKILL.md +2 -0
  593. package/pack/generated/codex/skills/rite-zoom-out/SKILL.md +2 -0
  594. package/pack/generated/devin/agents/devrites-code-reviewer.md +16 -0
  595. package/pack/generated/devin/agents/devrites-security-auditor.md +22 -0
  596. package/pack/generated/devin/agents/devrites-simplifier-reviewer.md +12 -2
  597. package/pack/generated/devin/skills/devrites-api-interface/SKILL.md +2 -0
  598. package/pack/generated/devin/skills/devrites-audit/SKILL.md +9 -0
  599. package/pack/generated/devin/skills/devrites-browser-proof/SKILL.md +2 -0
  600. package/pack/generated/devin/skills/devrites-debug-recovery/SKILL.md +2 -0
  601. package/pack/generated/devin/skills/devrites-doubt/SKILL.md +2 -0
  602. package/pack/generated/devin/skills/devrites-frontend-craft/SKILL.md +2 -0
  603. package/pack/generated/devin/skills/devrites-frontend-craft/reference/design-references.md +4 -0
  604. package/pack/generated/devin/skills/devrites-frontend-craft/reference/shape.md +5 -0
  605. package/pack/generated/devin/skills/devrites-interview/SKILL.md +5 -0
  606. package/pack/generated/devin/skills/devrites-lib/SKILL.md +40 -5
  607. package/pack/generated/devin/skills/devrites-lib/reference/candidate-integrity.md +17 -0
  608. package/pack/generated/devin/skills/devrites-lib/reference/orchestration-profiles.md +20 -0
  609. package/pack/generated/devin/skills/devrites-lib/reference/parallel-dispatch.md +36 -4
  610. package/pack/generated/devin/skills/devrites-lib/reference/reply-contract.md +24 -1
  611. package/pack/generated/devin/skills/devrites-lib/reference/standards/README.md +10 -0
  612. package/pack/generated/devin/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md +2 -0
  613. package/pack/generated/devin/skills/devrites-lib/reference/standards/afk-hitl.md +2 -0
  614. package/pack/generated/devin/skills/devrites-lib/reference/standards/agents.md +21 -1
  615. package/pack/generated/devin/skills/devrites-lib/reference/standards/anti-patterns.md +2 -0
  616. package/pack/generated/devin/skills/devrites-lib/reference/standards/architecture-health.md +64 -0
  617. package/pack/generated/devin/skills/devrites-lib/reference/standards/assumption-checkpoints.md +42 -0
  618. package/pack/generated/devin/skills/devrites-lib/reference/standards/audit-coverage.md +103 -0
  619. package/pack/generated/devin/skills/devrites-lib/reference/standards/browser-proof-checklist.md +2 -0
  620. package/pack/generated/devin/skills/devrites-lib/reference/standards/ci-cd.md +11 -0
  621. package/pack/generated/devin/skills/devrites-lib/reference/standards/code-navigation.md +71 -4
  622. package/pack/generated/devin/skills/devrites-lib/reference/standards/code-review.md +67 -7
  623. package/pack/generated/devin/skills/devrites-lib/reference/standards/coding-style.md +9 -4
  624. package/pack/generated/devin/skills/devrites-lib/reference/standards/context-hygiene.md +20 -3
  625. package/pack/generated/devin/skills/devrites-lib/reference/standards/core.md +10 -1
  626. package/pack/generated/devin/skills/devrites-lib/reference/standards/data-integrity.md +24 -2
  627. package/pack/generated/devin/skills/devrites-lib/reference/standards/debug-recovery.md +14 -0
  628. package/pack/generated/devin/skills/devrites-lib/reference/standards/definition-of-done.md +6 -0
  629. package/pack/generated/devin/skills/devrites-lib/reference/standards/deprecation.md +18 -0
  630. package/pack/generated/devin/skills/devrites-lib/reference/standards/developer-experience.md +2 -0
  631. package/pack/generated/devin/skills/devrites-lib/reference/standards/development-workflow.md +2 -0
  632. package/pack/generated/devin/skills/devrites-lib/reference/standards/documentation.md +12 -0
  633. package/pack/generated/devin/skills/devrites-lib/reference/standards/duplicate-code.md +118 -0
  634. package/pack/generated/devin/skills/devrites-lib/reference/standards/edge-case-trace.md +2 -0
  635. package/pack/generated/devin/skills/devrites-lib/reference/standards/elicitation.md +29 -0
  636. package/pack/generated/devin/skills/devrites-lib/reference/standards/error-handling.md +2 -0
  637. package/pack/generated/devin/skills/devrites-lib/reference/standards/gates.md +117 -0
  638. package/pack/generated/devin/skills/devrites-lib/reference/standards/git-workflow.md +2 -0
  639. package/pack/generated/devin/skills/devrites-lib/reference/standards/glossary.md +40 -0
  640. package/pack/generated/devin/skills/devrites-lib/reference/standards/hooks.md +16 -0
  641. package/pack/generated/devin/skills/devrites-lib/reference/standards/integration-reliability.md +19 -0
  642. package/pack/generated/devin/skills/devrites-lib/reference/standards/loop-operations.md +32 -1
  643. package/pack/generated/devin/skills/devrites-lib/reference/standards/observability.md +2 -0
  644. package/pack/generated/devin/skills/devrites-lib/reference/standards/one-shot-actions.md +2 -0
  645. package/pack/generated/devin/skills/devrites-lib/reference/standards/patterns.md +2 -0
  646. package/pack/generated/devin/skills/devrites-lib/reference/standards/performance.md +8 -1
  647. package/pack/generated/devin/skills/devrites-lib/reference/standards/principles.md +14 -0
  648. package/pack/generated/devin/skills/devrites-lib/reference/standards/prose-style.md +3 -0
  649. package/pack/generated/devin/skills/devrites-lib/reference/standards/release/ship-checklist.md +4 -0
  650. package/pack/generated/devin/skills/devrites-lib/reference/standards/repository-topology.md +2 -0
  651. package/pack/generated/devin/skills/devrites-lib/reference/standards/review/README.md +23 -0
  652. package/pack/generated/devin/skills/devrites-lib/reference/standards/review/ci-workflows.md +50 -0
  653. package/pack/generated/devin/skills/devrites-lib/reference/standards/review/default.md +42 -0
  654. package/pack/generated/devin/skills/devrites-lib/reference/standards/review/go.md +47 -0
  655. package/pack/generated/devin/skills/devrites-lib/reference/standards/review/python.md +46 -0
  656. package/pack/generated/devin/skills/devrites-lib/reference/standards/review/shell.md +40 -0
  657. package/pack/generated/devin/skills/devrites-lib/reference/standards/review/ts-js.md +54 -0
  658. package/pack/generated/devin/skills/devrites-lib/reference/standards/review-checklist.md +2 -0
  659. package/pack/generated/devin/skills/devrites-lib/reference/standards/security-checklist.md +2 -0
  660. package/pack/generated/devin/skills/devrites-lib/reference/standards/security.md +58 -6
  661. package/pack/generated/devin/skills/devrites-lib/reference/standards/skill-authoring.md +48 -0
  662. package/pack/generated/devin/skills/devrites-lib/reference/standards/spec-grammar.md +18 -4
  663. package/pack/generated/devin/skills/devrites-lib/reference/standards/test-proof-checklist.md +5 -0
  664. package/pack/generated/devin/skills/devrites-lib/reference/standards/testing.md +19 -2
  665. package/pack/generated/devin/skills/devrites-lib/reference/standards/tooling.md +12 -0
  666. package/pack/generated/devin/skills/devrites-lib/reference/standards/verification-methods.md +110 -0
  667. package/pack/generated/devin/skills/devrites-lib/reference/standards/windows.md +51 -0
  668. package/pack/generated/devin/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
  669. package/pack/generated/devin/skills/devrites-lib/reference/workspace-artifact-schema.md +28 -3
  670. package/pack/generated/devin/skills/devrites-prose-craft/SKILL.md +3 -1
  671. package/pack/generated/devin/skills/devrites-source-driven/SKILL.md +2 -0
  672. package/pack/generated/devin/skills/devrites-ux-shape/SKILL.md +2 -0
  673. package/pack/generated/devin/skills/overhaul/SKILL.md +201 -0
  674. package/pack/generated/devin/skills/overhaul/references/audit-domains.md +263 -0
  675. package/pack/generated/devin/skills/overhaul/references/lifecycle.md +308 -0
  676. package/pack/generated/devin/skills/overhaul/references/orchestration.md +264 -0
  677. package/pack/generated/devin/skills/overhaul/references/records.md +137 -0
  678. package/pack/generated/devin/skills/overhaul/references/repair-and-measurement.md +207 -0
  679. package/pack/generated/devin/skills/overhaul/references/review-and-report.md +137 -0
  680. package/pack/generated/devin/skills/overhaul/references/scope-and-safety.md +191 -0
  681. package/pack/generated/devin/skills/overhaul/references/scoring.md +222 -0
  682. package/pack/generated/devin/skills/overhaul/references/stack-profiles.md +264 -0
  683. package/pack/generated/devin/skills/overhaul/roles/backend-engineer.md +61 -0
  684. package/pack/generated/devin/skills/overhaul/roles/boundary.md +56 -0
  685. package/pack/generated/devin/skills/overhaul/roles/craft.md +77 -0
  686. package/pack/generated/devin/skills/overhaul/roles/frontend-engineer.md +63 -0
  687. package/pack/generated/devin/skills/overhaul/roles/implementer.md +59 -0
  688. package/pack/generated/devin/skills/overhaul/roles/recon.md +60 -0
  689. package/pack/generated/devin/skills/overhaul/roles/specialist.md +56 -0
  690. package/pack/generated/devin/skills/overhaul/roles/verifier.md +60 -0
  691. package/pack/generated/devin/skills/rite/SKILL.md +2 -0
  692. package/pack/generated/devin/skills/rite-adopt/SKILL.md +2 -0
  693. package/pack/generated/devin/skills/rite-autocomplete/SKILL.md +6 -1
  694. package/pack/generated/devin/skills/rite-autocomplete/reference/loop.md +7 -1
  695. package/pack/generated/devin/skills/rite-build/SKILL.md +28 -14
  696. package/pack/generated/devin/skills/rite-build/reference/checkpoint.md +6 -0
  697. package/pack/generated/devin/skills/rite-build/reference/parallel-batch.md +11 -2
  698. package/pack/generated/devin/skills/rite-build/reference/phase-contract.md +8 -4
  699. package/pack/generated/devin/skills/rite-build/reference/wright-dispatch.md +34 -8
  700. package/pack/generated/devin/skills/rite-clarify/SKILL.md +4 -0
  701. package/pack/generated/devin/skills/rite-converge/SKILL.md +14 -2
  702. package/pack/generated/devin/skills/rite-customize/SKILL.md +2 -0
  703. package/pack/generated/devin/skills/rite-define/SKILL.md +8 -2
  704. package/pack/generated/devin/skills/rite-doctor/SKILL.md +6 -1
  705. package/pack/generated/devin/skills/rite-dogfood/SKILL.md +2 -0
  706. package/pack/generated/devin/skills/rite-explain/SKILL.md +2 -0
  707. package/pack/generated/devin/skills/rite-frame/SKILL.md +4 -0
  708. package/pack/generated/devin/skills/rite-handoff/SKILL.md +8 -1
  709. package/pack/generated/devin/skills/rite-learn/SKILL.md +2 -0
  710. package/pack/generated/devin/skills/rite-plan/SKILL.md +6 -0
  711. package/pack/generated/devin/skills/rite-plan/reference/task-breakdown.md +3 -1
  712. package/pack/generated/devin/skills/rite-polish/SKILL.md +13 -2
  713. package/pack/generated/devin/skills/rite-polish/reference/code.md +6 -1
  714. package/pack/generated/devin/skills/rite-polish/reference/ledger.md +3 -1
  715. package/pack/generated/devin/skills/rite-pov/SKILL.md +2 -0
  716. package/pack/generated/devin/skills/rite-pr-feedback/SKILL.md +2 -0
  717. package/pack/generated/devin/skills/rite-pressure-test/SKILL.md +2 -0
  718. package/pack/generated/devin/skills/rite-prototype/SKILL.md +2 -0
  719. package/pack/generated/devin/skills/rite-prove/SKILL.md +17 -3
  720. package/pack/generated/devin/skills/rite-prove/reference/test-command-discovery.md +6 -0
  721. package/pack/generated/devin/skills/rite-quick/SKILL.md +7 -1
  722. package/pack/generated/devin/skills/rite-resolve/SKILL.md +2 -0
  723. package/pack/generated/devin/skills/rite-review/SKILL.md +5 -1
  724. package/pack/generated/devin/skills/rite-review/reference/performance-checklist.md +14 -3
  725. package/pack/generated/devin/skills/rite-seal/SKILL.md +27 -3
  726. package/pack/generated/devin/skills/rite-seal/reference/go-no-go.md +1 -0
  727. package/pack/generated/devin/skills/rite-seal/reference/phase-contract.md +3 -1
  728. package/pack/generated/devin/skills/rite-ship/SKILL.md +5 -1
  729. package/pack/generated/devin/skills/rite-spec/SKILL.md +10 -3
  730. package/pack/generated/devin/skills/rite-spec/reference/state-workspace.md +5 -0
  731. package/pack/generated/devin/skills/rite-status/SKILL.md +9 -0
  732. package/pack/generated/devin/skills/rite-temper/SKILL.md +5 -1
  733. package/pack/generated/devin/skills/rite-upgrade/SKILL.md +9 -1
  734. package/pack/generated/devin/skills/rite-vet/SKILL.md +28 -6
  735. package/pack/generated/devin/skills/rite-vet/reference/artifacts.md +19 -0
  736. package/pack/generated/devin/skills/rite-vet/reference/review-axes.md +5 -0
  737. package/pack/generated/devin/skills/rite-watch-pr/SKILL.md +2 -0
  738. package/pack/generated/devin/skills/rite-zoom-out/SKILL.md +2 -0
  739. package/pack/generated/omp/agents/devrites-code-reviewer.md +16 -0
  740. package/pack/generated/omp/agents/devrites-security-auditor.md +22 -0
  741. package/pack/generated/omp/agents/devrites-simplifier-reviewer.md +12 -2
  742. package/pack/generated/omp/skills/devrites-api-interface/SKILL.md +2 -0
  743. package/pack/generated/omp/skills/devrites-audit/SKILL.md +9 -0
  744. package/pack/generated/omp/skills/devrites-browser-proof/SKILL.md +2 -0
  745. package/pack/generated/omp/skills/devrites-debug-recovery/SKILL.md +2 -0
  746. package/pack/generated/omp/skills/devrites-doubt/SKILL.md +2 -0
  747. package/pack/generated/omp/skills/devrites-frontend-craft/SKILL.md +2 -0
  748. package/pack/generated/omp/skills/devrites-frontend-craft/reference/design-references.md +4 -0
  749. package/pack/generated/omp/skills/devrites-frontend-craft/reference/shape.md +5 -0
  750. package/pack/generated/omp/skills/devrites-interview/SKILL.md +5 -0
  751. package/pack/generated/omp/skills/devrites-lib/SKILL.md +40 -5
  752. package/pack/generated/omp/skills/devrites-lib/reference/candidate-integrity.md +17 -0
  753. package/pack/generated/omp/skills/devrites-lib/reference/orchestration-profiles.md +20 -0
  754. package/pack/generated/omp/skills/devrites-lib/reference/parallel-dispatch.md +36 -4
  755. package/pack/generated/omp/skills/devrites-lib/reference/reply-contract.md +24 -1
  756. package/pack/generated/omp/skills/devrites-lib/reference/standards/README.md +10 -0
  757. package/pack/generated/omp/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md +2 -0
  758. package/pack/generated/omp/skills/devrites-lib/reference/standards/afk-hitl.md +2 -0
  759. package/pack/generated/omp/skills/devrites-lib/reference/standards/agents.md +21 -1
  760. package/pack/generated/omp/skills/devrites-lib/reference/standards/anti-patterns.md +2 -0
  761. package/pack/generated/omp/skills/devrites-lib/reference/standards/architecture-health.md +64 -0
  762. package/pack/generated/omp/skills/devrites-lib/reference/standards/assumption-checkpoints.md +42 -0
  763. package/pack/generated/omp/skills/devrites-lib/reference/standards/audit-coverage.md +103 -0
  764. package/pack/generated/omp/skills/devrites-lib/reference/standards/browser-proof-checklist.md +2 -0
  765. package/pack/generated/omp/skills/devrites-lib/reference/standards/ci-cd.md +11 -0
  766. package/pack/generated/omp/skills/devrites-lib/reference/standards/code-navigation.md +71 -4
  767. package/pack/generated/omp/skills/devrites-lib/reference/standards/code-review.md +67 -7
  768. package/pack/generated/omp/skills/devrites-lib/reference/standards/coding-style.md +9 -4
  769. package/pack/generated/omp/skills/devrites-lib/reference/standards/context-hygiene.md +20 -3
  770. package/pack/generated/omp/skills/devrites-lib/reference/standards/core.md +10 -1
  771. package/pack/generated/omp/skills/devrites-lib/reference/standards/data-integrity.md +24 -2
  772. package/pack/generated/omp/skills/devrites-lib/reference/standards/debug-recovery.md +14 -0
  773. package/pack/generated/omp/skills/devrites-lib/reference/standards/definition-of-done.md +6 -0
  774. package/pack/generated/omp/skills/devrites-lib/reference/standards/deprecation.md +18 -0
  775. package/pack/generated/omp/skills/devrites-lib/reference/standards/developer-experience.md +2 -0
  776. package/pack/generated/omp/skills/devrites-lib/reference/standards/development-workflow.md +2 -0
  777. package/pack/generated/omp/skills/devrites-lib/reference/standards/documentation.md +12 -0
  778. package/pack/generated/omp/skills/devrites-lib/reference/standards/duplicate-code.md +118 -0
  779. package/pack/generated/omp/skills/devrites-lib/reference/standards/edge-case-trace.md +2 -0
  780. package/pack/generated/omp/skills/devrites-lib/reference/standards/elicitation.md +29 -0
  781. package/pack/generated/omp/skills/devrites-lib/reference/standards/error-handling.md +2 -0
  782. package/pack/generated/omp/skills/devrites-lib/reference/standards/gates.md +117 -0
  783. package/pack/generated/omp/skills/devrites-lib/reference/standards/git-workflow.md +2 -0
  784. package/pack/generated/omp/skills/devrites-lib/reference/standards/glossary.md +40 -0
  785. package/pack/generated/omp/skills/devrites-lib/reference/standards/hooks.md +16 -0
  786. package/pack/generated/omp/skills/devrites-lib/reference/standards/integration-reliability.md +19 -0
  787. package/pack/generated/omp/skills/devrites-lib/reference/standards/loop-operations.md +32 -1
  788. package/pack/generated/omp/skills/devrites-lib/reference/standards/observability.md +2 -0
  789. package/pack/generated/omp/skills/devrites-lib/reference/standards/one-shot-actions.md +2 -0
  790. package/pack/generated/omp/skills/devrites-lib/reference/standards/patterns.md +2 -0
  791. package/pack/generated/omp/skills/devrites-lib/reference/standards/performance.md +8 -1
  792. package/pack/generated/omp/skills/devrites-lib/reference/standards/principles.md +14 -0
  793. package/pack/generated/omp/skills/devrites-lib/reference/standards/prose-style.md +3 -0
  794. package/pack/generated/omp/skills/devrites-lib/reference/standards/release/ship-checklist.md +4 -0
  795. package/pack/generated/omp/skills/devrites-lib/reference/standards/repository-topology.md +2 -0
  796. package/pack/generated/omp/skills/devrites-lib/reference/standards/review/README.md +23 -0
  797. package/pack/generated/omp/skills/devrites-lib/reference/standards/review/ci-workflows.md +50 -0
  798. package/pack/generated/omp/skills/devrites-lib/reference/standards/review/default.md +42 -0
  799. package/pack/generated/omp/skills/devrites-lib/reference/standards/review/go.md +47 -0
  800. package/pack/generated/omp/skills/devrites-lib/reference/standards/review/python.md +46 -0
  801. package/pack/generated/omp/skills/devrites-lib/reference/standards/review/shell.md +40 -0
  802. package/pack/generated/omp/skills/devrites-lib/reference/standards/review/ts-js.md +54 -0
  803. package/pack/generated/omp/skills/devrites-lib/reference/standards/review-checklist.md +2 -0
  804. package/pack/generated/omp/skills/devrites-lib/reference/standards/security-checklist.md +2 -0
  805. package/pack/generated/omp/skills/devrites-lib/reference/standards/security.md +58 -6
  806. package/pack/generated/omp/skills/devrites-lib/reference/standards/skill-authoring.md +48 -0
  807. package/pack/generated/omp/skills/devrites-lib/reference/standards/spec-grammar.md +18 -4
  808. package/pack/generated/omp/skills/devrites-lib/reference/standards/test-proof-checklist.md +5 -0
  809. package/pack/generated/omp/skills/devrites-lib/reference/standards/testing.md +19 -2
  810. package/pack/generated/omp/skills/devrites-lib/reference/standards/tooling.md +12 -0
  811. package/pack/generated/omp/skills/devrites-lib/reference/standards/verification-methods.md +110 -0
  812. package/pack/generated/omp/skills/devrites-lib/reference/standards/windows.md +51 -0
  813. package/pack/generated/omp/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
  814. package/pack/generated/omp/skills/devrites-lib/reference/workspace-artifact-schema.md +28 -3
  815. package/pack/generated/omp/skills/devrites-prose-craft/SKILL.md +3 -1
  816. package/pack/generated/omp/skills/devrites-source-driven/SKILL.md +2 -0
  817. package/pack/generated/omp/skills/devrites-ux-shape/SKILL.md +2 -0
  818. package/pack/generated/omp/skills/overhaul/SKILL.md +201 -0
  819. package/pack/generated/omp/skills/overhaul/references/audit-domains.md +263 -0
  820. package/pack/generated/omp/skills/overhaul/references/lifecycle.md +308 -0
  821. package/pack/generated/omp/skills/overhaul/references/orchestration.md +264 -0
  822. package/pack/generated/omp/skills/overhaul/references/records.md +137 -0
  823. package/pack/generated/omp/skills/overhaul/references/repair-and-measurement.md +207 -0
  824. package/pack/generated/omp/skills/overhaul/references/review-and-report.md +137 -0
  825. package/pack/generated/omp/skills/overhaul/references/scope-and-safety.md +191 -0
  826. package/pack/generated/omp/skills/overhaul/references/scoring.md +222 -0
  827. package/pack/generated/omp/skills/overhaul/references/stack-profiles.md +264 -0
  828. package/pack/generated/omp/skills/overhaul/roles/backend-engineer.md +61 -0
  829. package/pack/generated/omp/skills/overhaul/roles/boundary.md +56 -0
  830. package/pack/generated/omp/skills/overhaul/roles/craft.md +77 -0
  831. package/pack/generated/omp/skills/overhaul/roles/frontend-engineer.md +63 -0
  832. package/pack/generated/omp/skills/overhaul/roles/implementer.md +59 -0
  833. package/pack/generated/omp/skills/overhaul/roles/recon.md +60 -0
  834. package/pack/generated/omp/skills/overhaul/roles/specialist.md +56 -0
  835. package/pack/generated/omp/skills/overhaul/roles/verifier.md +60 -0
  836. package/pack/generated/omp/skills/rite/SKILL.md +2 -0
  837. package/pack/generated/omp/skills/rite-adopt/SKILL.md +2 -0
  838. package/pack/generated/omp/skills/rite-autocomplete/SKILL.md +6 -1
  839. package/pack/generated/omp/skills/rite-autocomplete/reference/loop.md +7 -1
  840. package/pack/generated/omp/skills/rite-build/SKILL.md +28 -14
  841. package/pack/generated/omp/skills/rite-build/reference/checkpoint.md +6 -0
  842. package/pack/generated/omp/skills/rite-build/reference/parallel-batch.md +11 -2
  843. package/pack/generated/omp/skills/rite-build/reference/phase-contract.md +8 -4
  844. package/pack/generated/omp/skills/rite-build/reference/wright-dispatch.md +34 -8
  845. package/pack/generated/omp/skills/rite-clarify/SKILL.md +4 -0
  846. package/pack/generated/omp/skills/rite-converge/SKILL.md +14 -2
  847. package/pack/generated/omp/skills/rite-customize/SKILL.md +2 -0
  848. package/pack/generated/omp/skills/rite-define/SKILL.md +8 -2
  849. package/pack/generated/omp/skills/rite-doctor/SKILL.md +6 -1
  850. package/pack/generated/omp/skills/rite-dogfood/SKILL.md +2 -0
  851. package/pack/generated/omp/skills/rite-explain/SKILL.md +2 -0
  852. package/pack/generated/omp/skills/rite-frame/SKILL.md +4 -0
  853. package/pack/generated/omp/skills/rite-handoff/SKILL.md +8 -1
  854. package/pack/generated/omp/skills/rite-learn/SKILL.md +2 -0
  855. package/pack/generated/omp/skills/rite-plan/SKILL.md +6 -0
  856. package/pack/generated/omp/skills/rite-plan/reference/task-breakdown.md +3 -1
  857. package/pack/generated/omp/skills/rite-polish/SKILL.md +13 -2
  858. package/pack/generated/omp/skills/rite-polish/reference/code.md +6 -1
  859. package/pack/generated/omp/skills/rite-polish/reference/ledger.md +3 -1
  860. package/pack/generated/omp/skills/rite-pov/SKILL.md +2 -0
  861. package/pack/generated/omp/skills/rite-pr-feedback/SKILL.md +2 -0
  862. package/pack/generated/omp/skills/rite-pressure-test/SKILL.md +2 -0
  863. package/pack/generated/omp/skills/rite-prototype/SKILL.md +2 -0
  864. package/pack/generated/omp/skills/rite-prove/SKILL.md +17 -3
  865. package/pack/generated/omp/skills/rite-prove/reference/test-command-discovery.md +6 -0
  866. package/pack/generated/omp/skills/rite-quick/SKILL.md +7 -1
  867. package/pack/generated/omp/skills/rite-resolve/SKILL.md +2 -0
  868. package/pack/generated/omp/skills/rite-review/SKILL.md +5 -1
  869. package/pack/generated/omp/skills/rite-review/reference/performance-checklist.md +14 -3
  870. package/pack/generated/omp/skills/rite-seal/SKILL.md +27 -3
  871. package/pack/generated/omp/skills/rite-seal/reference/go-no-go.md +1 -0
  872. package/pack/generated/omp/skills/rite-seal/reference/phase-contract.md +3 -1
  873. package/pack/generated/omp/skills/rite-ship/SKILL.md +5 -1
  874. package/pack/generated/omp/skills/rite-spec/SKILL.md +10 -3
  875. package/pack/generated/omp/skills/rite-spec/reference/state-workspace.md +5 -0
  876. package/pack/generated/omp/skills/rite-status/SKILL.md +9 -0
  877. package/pack/generated/omp/skills/rite-temper/SKILL.md +5 -1
  878. package/pack/generated/omp/skills/rite-upgrade/SKILL.md +9 -1
  879. package/pack/generated/omp/skills/rite-vet/SKILL.md +28 -6
  880. package/pack/generated/omp/skills/rite-vet/reference/artifacts.md +19 -0
  881. package/pack/generated/omp/skills/rite-vet/reference/review-axes.md +5 -0
  882. package/pack/generated/omp/skills/rite-watch-pr/SKILL.md +2 -0
  883. package/pack/generated/omp/skills/rite-zoom-out/SKILL.md +2 -0
  884. package/pack/generated/pi/agents/devrites-code-reviewer.md +16 -0
  885. package/pack/generated/pi/agents/devrites-security-auditor.md +22 -0
  886. package/pack/generated/pi/agents/devrites-simplifier-reviewer.md +12 -2
  887. package/pack/generated/pi/skills/devrites-api-interface/SKILL.md +2 -0
  888. package/pack/generated/pi/skills/devrites-audit/SKILL.md +9 -0
  889. package/pack/generated/pi/skills/devrites-browser-proof/SKILL.md +2 -0
  890. package/pack/generated/pi/skills/devrites-debug-recovery/SKILL.md +2 -0
  891. package/pack/generated/pi/skills/devrites-doubt/SKILL.md +2 -0
  892. package/pack/generated/pi/skills/devrites-frontend-craft/SKILL.md +2 -0
  893. package/pack/generated/pi/skills/devrites-frontend-craft/reference/design-references.md +4 -0
  894. package/pack/generated/pi/skills/devrites-frontend-craft/reference/shape.md +5 -0
  895. package/pack/generated/pi/skills/devrites-interview/SKILL.md +5 -0
  896. package/pack/generated/pi/skills/devrites-lib/SKILL.md +40 -5
  897. package/pack/generated/pi/skills/devrites-lib/reference/candidate-integrity.md +17 -0
  898. package/pack/generated/pi/skills/devrites-lib/reference/orchestration-profiles.md +20 -0
  899. package/pack/generated/pi/skills/devrites-lib/reference/parallel-dispatch.md +36 -4
  900. package/pack/generated/pi/skills/devrites-lib/reference/reply-contract.md +24 -1
  901. package/pack/generated/pi/skills/devrites-lib/reference/standards/README.md +10 -0
  902. package/pack/generated/pi/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md +2 -0
  903. package/pack/generated/pi/skills/devrites-lib/reference/standards/afk-hitl.md +2 -0
  904. package/pack/generated/pi/skills/devrites-lib/reference/standards/agents.md +21 -1
  905. package/pack/generated/pi/skills/devrites-lib/reference/standards/anti-patterns.md +2 -0
  906. package/pack/generated/pi/skills/devrites-lib/reference/standards/architecture-health.md +64 -0
  907. package/pack/generated/pi/skills/devrites-lib/reference/standards/assumption-checkpoints.md +42 -0
  908. package/pack/generated/pi/skills/devrites-lib/reference/standards/audit-coverage.md +103 -0
  909. package/pack/generated/pi/skills/devrites-lib/reference/standards/browser-proof-checklist.md +2 -0
  910. package/pack/generated/pi/skills/devrites-lib/reference/standards/ci-cd.md +11 -0
  911. package/pack/generated/pi/skills/devrites-lib/reference/standards/code-navigation.md +71 -4
  912. package/pack/generated/pi/skills/devrites-lib/reference/standards/code-review.md +67 -7
  913. package/pack/generated/pi/skills/devrites-lib/reference/standards/coding-style.md +9 -4
  914. package/pack/generated/pi/skills/devrites-lib/reference/standards/context-hygiene.md +20 -3
  915. package/pack/generated/pi/skills/devrites-lib/reference/standards/core.md +10 -1
  916. package/pack/generated/pi/skills/devrites-lib/reference/standards/data-integrity.md +24 -2
  917. package/pack/generated/pi/skills/devrites-lib/reference/standards/debug-recovery.md +14 -0
  918. package/pack/generated/pi/skills/devrites-lib/reference/standards/definition-of-done.md +6 -0
  919. package/pack/generated/pi/skills/devrites-lib/reference/standards/deprecation.md +18 -0
  920. package/pack/generated/pi/skills/devrites-lib/reference/standards/developer-experience.md +2 -0
  921. package/pack/generated/pi/skills/devrites-lib/reference/standards/development-workflow.md +2 -0
  922. package/pack/generated/pi/skills/devrites-lib/reference/standards/documentation.md +12 -0
  923. package/pack/generated/pi/skills/devrites-lib/reference/standards/duplicate-code.md +118 -0
  924. package/pack/generated/pi/skills/devrites-lib/reference/standards/edge-case-trace.md +2 -0
  925. package/pack/generated/pi/skills/devrites-lib/reference/standards/elicitation.md +29 -0
  926. package/pack/generated/pi/skills/devrites-lib/reference/standards/error-handling.md +2 -0
  927. package/pack/generated/pi/skills/devrites-lib/reference/standards/gates.md +117 -0
  928. package/pack/generated/pi/skills/devrites-lib/reference/standards/git-workflow.md +2 -0
  929. package/pack/generated/pi/skills/devrites-lib/reference/standards/glossary.md +40 -0
  930. package/pack/generated/pi/skills/devrites-lib/reference/standards/hooks.md +16 -0
  931. package/pack/generated/pi/skills/devrites-lib/reference/standards/integration-reliability.md +19 -0
  932. package/pack/generated/pi/skills/devrites-lib/reference/standards/loop-operations.md +32 -1
  933. package/pack/generated/pi/skills/devrites-lib/reference/standards/observability.md +2 -0
  934. package/pack/generated/pi/skills/devrites-lib/reference/standards/one-shot-actions.md +2 -0
  935. package/pack/generated/pi/skills/devrites-lib/reference/standards/patterns.md +2 -0
  936. package/pack/generated/pi/skills/devrites-lib/reference/standards/performance.md +8 -1
  937. package/pack/generated/pi/skills/devrites-lib/reference/standards/principles.md +14 -0
  938. package/pack/generated/pi/skills/devrites-lib/reference/standards/prose-style.md +3 -0
  939. package/pack/generated/pi/skills/devrites-lib/reference/standards/release/ship-checklist.md +4 -0
  940. package/pack/generated/pi/skills/devrites-lib/reference/standards/repository-topology.md +2 -0
  941. package/pack/generated/pi/skills/devrites-lib/reference/standards/review/README.md +23 -0
  942. package/pack/generated/pi/skills/devrites-lib/reference/standards/review/ci-workflows.md +50 -0
  943. package/pack/generated/pi/skills/devrites-lib/reference/standards/review/default.md +42 -0
  944. package/pack/generated/pi/skills/devrites-lib/reference/standards/review/go.md +47 -0
  945. package/pack/generated/pi/skills/devrites-lib/reference/standards/review/python.md +46 -0
  946. package/pack/generated/pi/skills/devrites-lib/reference/standards/review/shell.md +40 -0
  947. package/pack/generated/pi/skills/devrites-lib/reference/standards/review/ts-js.md +54 -0
  948. package/pack/generated/pi/skills/devrites-lib/reference/standards/review-checklist.md +2 -0
  949. package/pack/generated/pi/skills/devrites-lib/reference/standards/security-checklist.md +2 -0
  950. package/pack/generated/pi/skills/devrites-lib/reference/standards/security.md +58 -6
  951. package/pack/generated/pi/skills/devrites-lib/reference/standards/skill-authoring.md +48 -0
  952. package/pack/generated/pi/skills/devrites-lib/reference/standards/spec-grammar.md +18 -4
  953. package/pack/generated/pi/skills/devrites-lib/reference/standards/test-proof-checklist.md +5 -0
  954. package/pack/generated/pi/skills/devrites-lib/reference/standards/testing.md +19 -2
  955. package/pack/generated/pi/skills/devrites-lib/reference/standards/tooling.md +12 -0
  956. package/pack/generated/pi/skills/devrites-lib/reference/standards/verification-methods.md +110 -0
  957. package/pack/generated/pi/skills/devrites-lib/reference/standards/windows.md +51 -0
  958. package/pack/generated/pi/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
  959. package/pack/generated/pi/skills/devrites-lib/reference/workspace-artifact-schema.md +28 -3
  960. package/pack/generated/pi/skills/devrites-prose-craft/SKILL.md +3 -1
  961. package/pack/generated/pi/skills/devrites-source-driven/SKILL.md +2 -0
  962. package/pack/generated/pi/skills/devrites-ux-shape/SKILL.md +2 -0
  963. package/pack/generated/pi/skills/overhaul/SKILL.md +201 -0
  964. package/pack/generated/pi/skills/overhaul/references/audit-domains.md +263 -0
  965. package/pack/generated/pi/skills/overhaul/references/lifecycle.md +308 -0
  966. package/pack/generated/pi/skills/overhaul/references/orchestration.md +264 -0
  967. package/pack/generated/pi/skills/overhaul/references/records.md +137 -0
  968. package/pack/generated/pi/skills/overhaul/references/repair-and-measurement.md +207 -0
  969. package/pack/generated/pi/skills/overhaul/references/review-and-report.md +137 -0
  970. package/pack/generated/pi/skills/overhaul/references/scope-and-safety.md +191 -0
  971. package/pack/generated/pi/skills/overhaul/references/scoring.md +222 -0
  972. package/pack/generated/pi/skills/overhaul/references/stack-profiles.md +264 -0
  973. package/pack/generated/pi/skills/overhaul/roles/backend-engineer.md +61 -0
  974. package/pack/generated/pi/skills/overhaul/roles/boundary.md +56 -0
  975. package/pack/generated/pi/skills/overhaul/roles/craft.md +77 -0
  976. package/pack/generated/pi/skills/overhaul/roles/frontend-engineer.md +63 -0
  977. package/pack/generated/pi/skills/overhaul/roles/implementer.md +59 -0
  978. package/pack/generated/pi/skills/overhaul/roles/recon.md +60 -0
  979. package/pack/generated/pi/skills/overhaul/roles/specialist.md +56 -0
  980. package/pack/generated/pi/skills/overhaul/roles/verifier.md +60 -0
  981. package/pack/generated/pi/skills/rite/SKILL.md +2 -0
  982. package/pack/generated/pi/skills/rite-adopt/SKILL.md +2 -0
  983. package/pack/generated/pi/skills/rite-autocomplete/SKILL.md +6 -1
  984. package/pack/generated/pi/skills/rite-autocomplete/reference/loop.md +7 -1
  985. package/pack/generated/pi/skills/rite-build/SKILL.md +28 -14
  986. package/pack/generated/pi/skills/rite-build/reference/checkpoint.md +6 -0
  987. package/pack/generated/pi/skills/rite-build/reference/parallel-batch.md +11 -2
  988. package/pack/generated/pi/skills/rite-build/reference/phase-contract.md +8 -4
  989. package/pack/generated/pi/skills/rite-build/reference/wright-dispatch.md +34 -8
  990. package/pack/generated/pi/skills/rite-clarify/SKILL.md +4 -0
  991. package/pack/generated/pi/skills/rite-converge/SKILL.md +14 -2
  992. package/pack/generated/pi/skills/rite-customize/SKILL.md +2 -0
  993. package/pack/generated/pi/skills/rite-define/SKILL.md +8 -2
  994. package/pack/generated/pi/skills/rite-doctor/SKILL.md +6 -1
  995. package/pack/generated/pi/skills/rite-dogfood/SKILL.md +2 -0
  996. package/pack/generated/pi/skills/rite-explain/SKILL.md +2 -0
  997. package/pack/generated/pi/skills/rite-frame/SKILL.md +4 -0
  998. package/pack/generated/pi/skills/rite-handoff/SKILL.md +8 -1
  999. package/pack/generated/pi/skills/rite-learn/SKILL.md +2 -0
  1000. package/pack/generated/pi/skills/rite-plan/SKILL.md +6 -0
  1001. package/pack/generated/pi/skills/rite-plan/reference/task-breakdown.md +3 -1
  1002. package/pack/generated/pi/skills/rite-polish/SKILL.md +13 -2
  1003. package/pack/generated/pi/skills/rite-polish/reference/code.md +6 -1
  1004. package/pack/generated/pi/skills/rite-polish/reference/ledger.md +3 -1
  1005. package/pack/generated/pi/skills/rite-pov/SKILL.md +2 -0
  1006. package/pack/generated/pi/skills/rite-pr-feedback/SKILL.md +2 -0
  1007. package/pack/generated/pi/skills/rite-pressure-test/SKILL.md +2 -0
  1008. package/pack/generated/pi/skills/rite-prototype/SKILL.md +2 -0
  1009. package/pack/generated/pi/skills/rite-prove/SKILL.md +17 -3
  1010. package/pack/generated/pi/skills/rite-prove/reference/test-command-discovery.md +6 -0
  1011. package/pack/generated/pi/skills/rite-quick/SKILL.md +7 -1
  1012. package/pack/generated/pi/skills/rite-resolve/SKILL.md +2 -0
  1013. package/pack/generated/pi/skills/rite-review/SKILL.md +5 -1
  1014. package/pack/generated/pi/skills/rite-review/reference/performance-checklist.md +14 -3
  1015. package/pack/generated/pi/skills/rite-seal/SKILL.md +27 -3
  1016. package/pack/generated/pi/skills/rite-seal/reference/go-no-go.md +1 -0
  1017. package/pack/generated/pi/skills/rite-seal/reference/phase-contract.md +3 -1
  1018. package/pack/generated/pi/skills/rite-ship/SKILL.md +5 -1
  1019. package/pack/generated/pi/skills/rite-spec/SKILL.md +10 -3
  1020. package/pack/generated/pi/skills/rite-spec/reference/state-workspace.md +5 -0
  1021. package/pack/generated/pi/skills/rite-status/SKILL.md +9 -0
  1022. package/pack/generated/pi/skills/rite-temper/SKILL.md +5 -1
  1023. package/pack/generated/pi/skills/rite-upgrade/SKILL.md +9 -1
  1024. package/pack/generated/pi/skills/rite-vet/SKILL.md +28 -6
  1025. package/pack/generated/pi/skills/rite-vet/reference/artifacts.md +19 -0
  1026. package/pack/generated/pi/skills/rite-vet/reference/review-axes.md +5 -0
  1027. package/pack/generated/pi/skills/rite-watch-pr/SKILL.md +2 -0
  1028. package/pack/generated/pi/skills/rite-zoom-out/SKILL.md +2 -0
  1029. package/package.json +1 -1
  1030. package/scripts/build-host-artifacts.sh +48 -2
@@ -0,0 +1,834 @@
1
+ package records
2
+
3
+ import (
4
+ "bytes"
5
+ "encoding/json"
6
+ "fmt"
7
+ "os"
8
+ "path"
9
+ "path/filepath"
10
+ "reflect"
11
+ "sort"
12
+ "strings"
13
+
14
+ "github.com/devrites/devrites/internal/overhaul/ovio"
15
+ )
16
+
17
+ func set(vals ...string) map[string]bool {
18
+ m := map[string]bool{}
19
+ for _, v := range vals {
20
+ m[v] = true
21
+ }
22
+ return m
23
+ }
24
+
25
+ var enums = []struct {
26
+ field string
27
+ allowed map[string]bool
28
+ }{
29
+ {"mode", set("full", "pr", "branch")},
30
+ {"phase", set("PREFLIGHT", "AUDITING", "RECONCILING", "AWAITING_APPROVAL", "REMEDIATING", "VERIFYING",
31
+ "SCORING", "FINAL_CHALLENGE", "COMPLETE", "PAUSED", "STOPPED", "BLOCKED")},
32
+ {"readiness_verdict", set("NOT_ASSESSED", "NOT_ASSESSABLE", "NOT_READY", "MEETS_TARGETS",
33
+ "MEETS_TARGETS_WITH_APPROVED_DEGRADATION")},
34
+ {"execution_outcome", set("RUNNING", "AUDIT_COMPLETE", "AUDIT_INCOMPLETE", "AWAITING_APPROVAL",
35
+ "READY_FOR_USER_REVIEW", "COMPLETED_WITH_APPROVED_DEGRADATION", "STOPPED_BY_USER",
36
+ "BLOCKED_NEEDS_USER", "BLOCKED_ENVIRONMENT", "BLOCKED_PARALLEL_CAPABILITY",
37
+ "BUDGET_EXHAUSTED", "INCONCLUSIVE")},
38
+ }
39
+
40
+ var (
41
+ kinds = set("defect", "hardening", "maintainability", "opportunity")
42
+ origins = set("introduced", "exposed-existing", "pre-existing")
43
+ severities = set("critical", "high", "medium", "low", "informational")
44
+ moves = map[string]map[string]bool{ // allowed finding status transitions
45
+ "candidate": set("needs-validation", "confirmed", "rejected"),
46
+ "needs-validation": set("confirmed", "rejected"),
47
+ "confirmed": set("approved-for-fix", "deferred", "accepted-risk", "rejected"),
48
+ "approved-for-fix": set("in-progress", "deferred"),
49
+ "in-progress": set("fixed-unverified", "approved-for-fix"),
50
+ "fixed-unverified": set("verified", "in-progress"),
51
+ "verified": set("confirmed"),
52
+ "deferred": set("approved-for-fix", "confirmed"),
53
+ "accepted-risk": set("approved-for-fix", "confirmed"),
54
+ "rejected": set("candidate"),
55
+ }
56
+ severityOK = set("confirmed", "approved-for-fix", "in-progress", "fixed-unverified", "verified", "deferred", "accepted-risk")
57
+ attemptState = set("dispatched", "running", "returned", "admitted", "rejected", "cancelled", "timed-out", "unknown")
58
+ live = set("dispatched", "running", "unknown", "timed-out") // writer not proven stopped
59
+ writers = set("implementer")
60
+ taskOutcomes = set("completed", "blocked", "deferred", "failed", "not-started", "superseded")
61
+ required = []string{"run.json", "coverage.json", "findings.json", "evidence.json", "dispatch.json",
62
+ "approval.json", "cycles.json"}
63
+ channels = set("conversation", "host-structured-action")
64
+ )
65
+
66
+ // Repr renders a decoded JSON value the way Python's repr() does, so rule
67
+ // messages read the same as the original recipe's.
68
+ func Repr(v any) string {
69
+ switch x := v.(type) {
70
+ case nil:
71
+ return "None"
72
+ case bool:
73
+ if x {
74
+ return "True"
75
+ }
76
+ return "False"
77
+ case string:
78
+ return quote(x)
79
+ case json.Number:
80
+ return x.String()
81
+ case []string:
82
+ parts := make([]string, len(x))
83
+ for i, s := range x {
84
+ parts[i] = quote(s)
85
+ }
86
+ return "[" + strings.Join(parts, ", ") + "]"
87
+ case []any:
88
+ parts := make([]string, len(x))
89
+ for i, e := range x {
90
+ parts[i] = Repr(e)
91
+ }
92
+ return "[" + strings.Join(parts, ", ") + "]"
93
+ case map[string]any:
94
+ keys := make([]string, 0, len(x))
95
+ for k := range x {
96
+ keys = append(keys, k)
97
+ }
98
+ sort.Strings(keys)
99
+ parts := make([]string, len(keys))
100
+ for i, k := range keys {
101
+ parts[i] = quote(k) + ": " + Repr(x[k])
102
+ }
103
+ return "{" + strings.Join(parts, ", ") + "}"
104
+ }
105
+ return fmt.Sprint(v)
106
+ }
107
+
108
+ func quote(s string) string {
109
+ q := '\''
110
+ if strings.ContainsRune(s, '\'') && !strings.ContainsRune(s, '"') {
111
+ q = '"'
112
+ }
113
+ var b strings.Builder
114
+ b.WriteRune(q)
115
+ for _, r := range s {
116
+ switch {
117
+ case r == '\\' || r == q:
118
+ b.WriteRune('\\')
119
+ b.WriteRune(r)
120
+ case r == '\n':
121
+ b.WriteString(`\n`)
122
+ case r == '\r':
123
+ b.WriteString(`\r`)
124
+ case r == '\t':
125
+ b.WriteString(`\t`)
126
+ case r < 0x20 || r == 0x7f:
127
+ fmt.Fprintf(&b, `\x%02x`, r)
128
+ default:
129
+ b.WriteRune(r)
130
+ }
131
+ }
132
+ b.WriteRune(q)
133
+ return b.String()
134
+ }
135
+
136
+ // PyStr is Python's str(): strings as-is, anything else as Repr.
137
+ func PyStr(v any) string {
138
+ if s, ok := v.(string); ok {
139
+ return s
140
+ }
141
+ return Repr(v)
142
+ }
143
+
144
+ // join mirrors os.path.join: an absolute part replaces everything before it.
145
+ func join(base string, parts ...string) string {
146
+ for _, p := range parts {
147
+ switch {
148
+ case strings.HasPrefix(p, "/"):
149
+ base = p
150
+ case base == "" || strings.HasSuffix(base, "/"):
151
+ base += p
152
+ default:
153
+ base += "/" + p
154
+ }
155
+ }
156
+ return base
157
+ }
158
+
159
+ func realpath(p string) string {
160
+ abs, err := filepath.Abs(p)
161
+ if err != nil {
162
+ abs = p
163
+ }
164
+ return ovio.Resolve(abs)
165
+ }
166
+
167
+ func inside(base, rel string) bool {
168
+ root := realpath(base)
169
+ return strings.HasPrefix(realpath(join(root, rel)), root+string(os.PathSeparator))
170
+ }
171
+
172
+ func isFile(p string) bool {
173
+ fi, err := os.Stat(p) // #nosec G703 -- stat only; path is inside the operator-selected run area
174
+ return err == nil && fi.Mode().IsRegular()
175
+ }
176
+
177
+ func isDir(p string) bool {
178
+ fi, err := os.Stat(p) // #nosec G703 -- stat only; path is inside the operator-selected run area
179
+ return err == nil && fi.IsDir()
180
+ }
181
+
182
+ func sha(p string) (string, error) { return ovio.SHA256File(p) }
183
+
184
+ // keyError mimics Python's KeyError text for a missing required field.
185
+ func keyError(k string) error { return fmt.Errorf("'%s'", k) }
186
+
187
+ // BadPath returns why p is not an exact repository-relative file path, or ""
188
+ // when it is one.
189
+ func BadPath(p any, repo string) string {
190
+ s, ok := p.(string)
191
+ if !ok || s == "" || strings.HasSuffix(s, "/") || path.IsAbs(s) || filepath.IsAbs(s) || strings.ContainsAny(s, "*?") {
192
+ return "not an exact relative file path"
193
+ }
194
+ if path.Clean(s) != s || strings.Split(s, "/")[0] == ".." {
195
+ return "not normalized or escapes the repository"
196
+ }
197
+ for _, part := range strings.Split(s, "/") {
198
+ if part == ".git" {
199
+ return "names a directory or git metadata"
200
+ }
201
+ }
202
+ if isDir(join(repo, s)) {
203
+ return "names a directory or git metadata"
204
+ }
205
+ if !inside(repo, s) {
206
+ return "resolves outside the repository (symlink or traversal)"
207
+ }
208
+ return ""
209
+ }
210
+
211
+ // vset is a set of JSON values keyed by their Repr, keeping the value.
212
+ type vset map[string]any
213
+
214
+ func (s vset) add(v any) { s[Repr(v)] = v }
215
+
216
+ func (s vset) has(v any) bool {
217
+ _, ok := s[Repr(v)]
218
+ return ok
219
+ }
220
+
221
+ func setOf(vals []any) vset {
222
+ s := vset{}
223
+ for _, v := range vals {
224
+ s.add(v)
225
+ }
226
+ return s
227
+ }
228
+
229
+ // sorted mirrors Python's sorted(set) for the string members the records use.
230
+ func (s vset) sorted() []any {
231
+ out := make([]any, 0, len(s))
232
+ for _, v := range s {
233
+ out = append(out, v)
234
+ }
235
+ sort.Slice(out, func(i, j int) bool { return PyStr(out[i]) < PyStr(out[j]) })
236
+ return out
237
+ }
238
+
239
+ func uniq(items []any, key func(map[string]any) string, label string, add func(string, ...any)) map[string]bool {
240
+ seen := map[string]bool{}
241
+ for _, it := range items {
242
+ k := key(ovio.Obj(it))
243
+ if seen[k] {
244
+ add("%s: duplicate id %s", label, k)
245
+ }
246
+ seen[k] = true
247
+ }
248
+ return seen
249
+ }
250
+
251
+ func idKey(m map[string]any) string { return Repr(m["id"]) }
252
+
253
+ func str(m map[string]any, k string) string { return ovio.Str(m[k]) }
254
+
255
+ func eq(a, b any) bool { return reflect.DeepEqual(a, b) }
256
+
257
+ // prefixEq reports whether list starts with prefix (Python list[:len(p)] == p).
258
+ func prefixEq(list, prefix []any) bool {
259
+ if len(list) < len(prefix) {
260
+ return false
261
+ }
262
+ for i := range prefix {
263
+ if !eq(list[i], prefix[i]) {
264
+ return false
265
+ }
266
+ }
267
+ return true
268
+ }
269
+
270
+ func decode(b []byte) (any, error) {
271
+ dec := json.NewDecoder(bytes.NewReader(b))
272
+ dec.UseNumber()
273
+ var v any
274
+ err := dec.Decode(&v)
275
+ return v, err
276
+ }
277
+
278
+ func closure(tasks map[string]map[string]any, picked []any) vset {
279
+ need, stack := vset{}, append([]any(nil), picked...)
280
+ for len(stack) > 0 {
281
+ t := stack[len(stack)-1]
282
+ stack = stack[:len(stack)-1]
283
+ for _, d := range ovio.List(tasks[Repr(t)]["deps"]) {
284
+ if !need.has(d) {
285
+ need.add(d)
286
+ stack = append(stack, d)
287
+ }
288
+ }
289
+ }
290
+ for _, p := range picked {
291
+ delete(need, Repr(p))
292
+ }
293
+ return need
294
+ }
295
+
296
+ func cyclic(tasks map[string]map[string]any) bool {
297
+ state := map[string]int{}
298
+ var visit func(k string) bool
299
+ visit = func(k string) bool {
300
+ switch state[k] {
301
+ case 1:
302
+ return true
303
+ case 2:
304
+ return false
305
+ }
306
+ state[k] = 1
307
+ hit := false
308
+ for _, d := range ovio.List(tasks[k]["deps"]) {
309
+ if _, ok := tasks[Repr(d)]; ok && visit(Repr(d)) {
310
+ hit = true
311
+ break
312
+ }
313
+ }
314
+ state[k] = 2
315
+ return hit
316
+ }
317
+ for k := range tasks {
318
+ if visit(k) {
319
+ return true
320
+ }
321
+ }
322
+ return false
323
+ }
324
+
325
+ // Check validates one generation directory (optionally against the previous
326
+ // one) and returns rule violations. An error means an unreadable input.
327
+ func Check(run, genDir, prevDir string) ([]string, error) {
328
+ var errs []string
329
+ add := func(f string, a ...any) { errs = append(errs, fmt.Sprintf(f, a...)) }
330
+ R := map[string]map[string]any{}
331
+ for _, name := range required {
332
+ p := join(genDir, name)
333
+ if !isFile(p) {
334
+ add("missing %s", name)
335
+ continue
336
+ }
337
+ b, err := os.ReadFile(p) // #nosec G304 G703 -- fixed record name inside the generation directory
338
+ if err != nil {
339
+ return nil, err
340
+ }
341
+ v, err := decode(b)
342
+ if err == nil {
343
+ if m, ok := v.(map[string]any); ok {
344
+ R[name] = m
345
+ continue
346
+ }
347
+ err = fmt.Errorf("expected a JSON object")
348
+ }
349
+ add("%s: invalid JSON (%v)", name, err)
350
+ }
351
+ if len(errs) > 0 {
352
+ return errs, nil
353
+ }
354
+ for _, name := range required {
355
+ want := "overhaul." + strings.TrimSuffix(name, ".json") + "/1"
356
+ if !eq(R[name]["schema"], want) {
357
+ add("%s: schema must be %s", name, want)
358
+ }
359
+ }
360
+ rj := R["run.json"]
361
+ for _, e := range enums {
362
+ if !e.allowed[str(rj, e.field)] {
363
+ keys := make([]string, 0, len(e.allowed))
364
+ for k := range e.allowed {
365
+ keys = append(keys, k)
366
+ }
367
+ sort.Strings(keys)
368
+ add("run.json: %s=%s not in %s", e.field, Repr(rj[e.field]), Repr(keys))
369
+ }
370
+ }
371
+ repo := str(rj, "repo_root")
372
+ if !isDir(repo) {
373
+ add("run.json: repo_root is not a directory")
374
+ }
375
+ ev := ovio.List(R["evidence.json"]["items"])
376
+ evIDs := uniq(ev, idKey, "evidence", add)
377
+ for _, it := range ev {
378
+ e := ovio.Obj(it)
379
+ p := str(e, "path")
380
+ if p == "" || !inside(run, p) || !isFile(join(run, p)) {
381
+ add("evidence %s: path missing or outside run dir", PyStr(e["id"]))
382
+ continue
383
+ }
384
+ d, err := sha(join(run, p))
385
+ if err != nil {
386
+ return nil, err
387
+ }
388
+ if !eq(d, e["sha256"]) {
389
+ add("evidence %s: sha256 missing or mismatched", PyStr(e["id"]))
390
+ }
391
+ }
392
+ att := ovio.List(R["dispatch.json"]["attempts"])
393
+ vr := map[string]bool{}
394
+ for _, it := range att {
395
+ x := ovio.Obj(it)
396
+ if str(x, "role") == "verifier" && str(x, "status") == "admitted" {
397
+ if r, ok := x["receipt"].(string); ok {
398
+ vr[r] = true
399
+ }
400
+ vr[PyStr(x["task_id"])+"#"+PyStr(x["attempt_id"])] = true
401
+ }
402
+ }
403
+ fs := ovio.List(R["findings.json"]["findings"])
404
+ fIDs := uniq(fs, idKey, "finding", add)
405
+ var fps []any
406
+ for _, f := range fs {
407
+ if ovio.Truthy(ovio.Obj(f)["fingerprint"]) {
408
+ fps = append(fps, f)
409
+ }
410
+ }
411
+ uniq(fps, func(m map[string]any) string { return Repr(m["fingerprint"]) }, "finding fingerprint", add)
412
+ for _, it := range fs {
413
+ f := ovio.Obj(it)
414
+ fid, hist, status := PyStr(f["id"]), ovio.List(f["history"]), str(f, "status")
415
+ if !kinds[str(f, "kind")] || !origins[str(f, "scope_origin")] {
416
+ add("finding %s: bad kind or scope_origin", fid)
417
+ }
418
+ if len(hist) == 0 || str(ovio.Obj(hist[0]), "status") != "candidate" || !eq(ovio.Obj(hist[len(hist)-1])["status"], f["status"]) {
419
+ add("finding %s: history must start at candidate and end at the status", fid)
420
+ }
421
+ for i := 1; i < len(hist); i++ {
422
+ a, b := ovio.Obj(hist[i-1]), ovio.Obj(hist[i])
423
+ if eq(b["status"], a["status"]) && ovio.Truthy(b["reason"]) {
424
+ continue // re-assessment entry (severity or kind change)
425
+ }
426
+ if !moves[str(a, "status")][str(b, "status")] {
427
+ add("finding %s: illegal transition %s -> %s", fid, PyStr(a["status"]), PyStr(b["status"]))
428
+ }
429
+ }
430
+ if f["severity"] != nil && (!severities[str(f, "severity")] || !severityOK[status]) {
431
+ add("finding %s: severity only for established impact", fid)
432
+ }
433
+ if set("confirmed", "verified", "rejected")[status] && !ovio.Truthy(f["evidence"]) {
434
+ add("finding %s: %s needs evidence", fid, status)
435
+ }
436
+ if vb, ok := f["verified_by"].(string); status == "verified" && !(ok && vr[vb]) {
437
+ add("finding %s: verified_by must name an admitted verifier attempt", fid)
438
+ }
439
+ if status == "rejected" && (len(hist) == 0 || !ovio.Truthy(ovio.Obj(hist[len(hist)-1])["reason"])) {
440
+ add("finding %s: rejection needs a reason", fid)
441
+ }
442
+ if status == "needs-validation" && !ovio.Truthy(f["blockers"]) {
443
+ add("finding %s: needs-validation must name the missing fact (blockers)", fid)
444
+ }
445
+ for _, l := range ovio.List(f["locations"]) {
446
+ loc := ovio.Obj(l)
447
+ lp := PyStr(loc["path"])
448
+ var bad bool
449
+ if ovio.Truthy(loc["external"]) {
450
+ bad = path.IsAbs(lp) || filepath.IsAbs(lp) || strings.HasPrefix(lp, "~")
451
+ } else {
452
+ bad = BadPath(lp, repo) != ""
453
+ }
454
+ if bad {
455
+ add("finding %s: location %s is not a repository-relative path or label", fid, Repr(lp))
456
+ }
457
+ }
458
+ for _, ref := range ovio.List(f["evidence"]) {
459
+ if !evIDs[Repr(ref)] {
460
+ add("finding %s: unknown evidence %s", fid, PyStr(ref))
461
+ }
462
+ }
463
+ for _, ref := range ovio.List(f["related"]) {
464
+ if !fIDs[Repr(ref)] {
465
+ add("finding %s: unknown related finding %s", fid, PyStr(ref))
466
+ }
467
+ }
468
+ }
469
+ var plan map[string]any
470
+ tasks := map[string]map[string]any{}
471
+ revs := ovio.Obj(rj["revisions"])
472
+ pr := ovio.Obj(revs["plan"])
473
+ hasPR := len(pr) > 0
474
+ if hasPR && !eq(pr["file"], "revisions/plan-r"+PyStr(pr["rev"])+".json") {
475
+ add("run.json: revisions.plan.file must be revisions/plan-r<rev>.json")
476
+ } else if hasPR {
477
+ var err error
478
+ if plan, err = ovio.LoadObject(join(run, str(pr, "file"))); err != nil {
479
+ return nil, err
480
+ }
481
+ if !eq(plan["rev"], pr["rev"]) {
482
+ add("plan revision number mismatch")
483
+ }
484
+ var controls vset
485
+ rub := ovio.Obj(plan["rubric"])
486
+ if rf := str(rub, "file"); rf == "" {
487
+ add("plan: rubric digest mismatch")
488
+ } else if d, err := sha(join(run, rf)); err != nil {
489
+ return nil, err
490
+ } else if !eq(d, rub["sha256"]) {
491
+ add("plan: rubric digest mismatch")
492
+ } else {
493
+ doc, err := ovio.LoadObject(join(run, rf))
494
+ if err != nil {
495
+ return nil, err
496
+ }
497
+ controls = vset{}
498
+ for _, c := range ovio.List(doc["controls"]) {
499
+ controls.add(ovio.Obj(c)["id"])
500
+ }
501
+ }
502
+ for _, r := range ovio.List(plan["pinned"]) {
503
+ ref := ovio.Obj(r)
504
+ if _, ok := ref["file"]; !ok {
505
+ return nil, keyError("file")
506
+ }
507
+ d, err := sha(join(run, str(ref, "file")))
508
+ if err != nil {
509
+ return nil, err
510
+ }
511
+ if !eq(d, ref["sha256"]) {
512
+ add("plan: pinned %s digest mismatch", PyStr(ref["file"]))
513
+ }
514
+ }
515
+ tl := ovio.List(plan["tasks"])
516
+ uniq(tl, idKey, "task", add)
517
+ var order []any // first-insertion order, like a Python dict
518
+ for _, it := range tl {
519
+ t := ovio.Obj(it)
520
+ if _, ok := tasks[Repr(t["id"])]; !ok {
521
+ order = append(order, t["id"])
522
+ }
523
+ tasks[Repr(t["id"])] = t
524
+ }
525
+ for _, tid := range order {
526
+ t, ts := tasks[Repr(tid)], PyStr(tid)
527
+ for _, d := range ovio.List(t["deps"]) {
528
+ if _, ok := tasks[Repr(d)]; !ok {
529
+ add("task %s: unknown dependency %s", ts, PyStr(d))
530
+ }
531
+ }
532
+ for _, ref := range ovio.List(t["findings"]) {
533
+ if !fIDs[Repr(ref)] {
534
+ add("task %s: unknown finding %s", ts, PyStr(ref))
535
+ }
536
+ }
537
+ if controls != nil {
538
+ for _, c := range ovio.List(t["controls"]) {
539
+ if !controls.has(c) {
540
+ add("task %s: unknown control ids", ts)
541
+ break
542
+ }
543
+ }
544
+ }
545
+ for _, p := range ovio.List(t["allowed_paths"]) {
546
+ if why := BadPath(p, repo); why != "" {
547
+ add("task %s: allowed path %s %s", ts, Repr(p), why)
548
+ }
549
+ }
550
+ if !ovio.Truthy(t["oracle"]) || !ovio.Truthy(t["verifier_role"]) || eq(t["verifier_role"], t["writer_role"]) {
551
+ add("task %s: needs an oracle and a separate verifier", ts)
552
+ }
553
+ }
554
+ if cyclic(tasks) {
555
+ add("plan: task dependencies contain a cycle")
556
+ }
557
+ }
558
+ rr, scp := ovio.Obj(revs["rubric"]), join(genDir, "scorecard.json")
559
+ if isFile(scp) {
560
+ if rf := str(rr, "file"); !(rf != "" && inside(run, rf) && isFile(join(run, rf))) {
561
+ add("run.json: a scorecard needs revisions.rubric naming its rubric file")
562
+ } else if ovio.Truthy(rr["sha256"]) {
563
+ d, err := sha(join(run, rf))
564
+ if err != nil {
565
+ return nil, err
566
+ }
567
+ if !eq(d, rr["sha256"]) {
568
+ add("run.json: revisions.rubric digest mismatch")
569
+ }
570
+ }
571
+ sc, err := ovio.LoadObject(scp)
572
+ if err != nil {
573
+ return nil, err
574
+ }
575
+ if v := sc["readiness_verdict"]; v != nil && !eq(v, rj["readiness_verdict"]) {
576
+ add("run.json: readiness_verdict differs from scorecard.json")
577
+ }
578
+ }
579
+ ap := ovio.List(R["approval.json"]["events"])
580
+ uniq(ap, idKey, "approval", add)
581
+ stopAt := -1
582
+ for i, it := range ap {
583
+ if k := str(ovio.Obj(it), "kind"); k == "stop" || k == "revoke" {
584
+ stopAt = i
585
+ }
586
+ }
587
+ var active, approvals []map[string]any
588
+ granted := map[string]vset{}
589
+ for i, it := range ap {
590
+ a := ovio.Obj(it)
591
+ if str(a, "kind") != "approve" {
592
+ continue
593
+ }
594
+ approvals = append(approvals, a)
595
+ granted[Repr(a["id"])] = setOf(ovio.List(a["tasks"]))
596
+ if str(a, "status") == "active" {
597
+ if i < stopAt {
598
+ add("approval %s: still active after a later stop/revoke", PyStr(a["id"]))
599
+ } else if i > stopAt {
600
+ active = append(active, a)
601
+ }
602
+ }
603
+ }
604
+ anyWriter := false
605
+ for _, it := range att {
606
+ anyWriter = anyWriter || writers[str(ovio.Obj(it), "role")]
607
+ }
608
+ if len(active) > 1 {
609
+ add("approval: more than one active approval")
610
+ }
611
+ if !hasPR && (len(granted) > 0 || anyWriter) {
612
+ add("run.json: approvals and writers need revisions.plan")
613
+ }
614
+ for _, it := range ap {
615
+ a := ovio.Obj(it)
616
+ kind, aid := str(a, "kind"), PyStr(a["id"])
617
+ if (kind == "approve" || kind == "accept-degradation") && (!ovio.Truthy(a["quote"]) || !channels[str(a, "channel")]) {
618
+ add("approval %s: needs the user's verbatim decision and a trusted channel", aid)
619
+ }
620
+ if kind != "approve" {
621
+ continue
622
+ }
623
+ pf := join(run, "revisions", "plan-r"+PyStr(a["plan_rev"])+".json")
624
+ ok := isFile(pf)
625
+ if ok {
626
+ d, err := sha(pf)
627
+ if err != nil {
628
+ return nil, err
629
+ }
630
+ ok = eq(d, a["plan_digest"])
631
+ }
632
+ if !ok {
633
+ add("approval %s: plan digest does not match plan revision %s", aid, PyStr(a["plan_rev"]))
634
+ }
635
+ if str(a, "status") == "active" && plan != nil {
636
+ if !eq(a["plan_rev"], plan["rev"]) {
637
+ add("approval %s: approves a stale plan revision", aid)
638
+ }
639
+ picked := ovio.List(a["tasks"])
640
+ missing, unknown := closure(tasks, picked), vset{}
641
+ for _, t := range picked {
642
+ if _, ok := tasks[Repr(t)]; !ok {
643
+ unknown.add(t)
644
+ }
645
+ }
646
+ if len(unknown) > 0 {
647
+ add("approval %s: unknown tasks %s", aid, Repr(unknown.sorted()))
648
+ }
649
+ if len(missing) > 0 {
650
+ add("approval %s: selected tasks miss prerequisites %s", aid, Repr(missing.sorted()))
651
+ }
652
+ }
653
+ }
654
+ assessmentOnly := ovio.Truthy(rj["assessment_only"])
655
+ if assessmentOnly && len(active) > 0 {
656
+ add("assessment-only run carries an active approval")
657
+ }
658
+ uniq(att, func(x map[string]any) string {
659
+ return "(" + Repr(x["task_id"]) + ", " + Repr(x["attempt_id"]) + ")"
660
+ }, "attempt", add)
661
+ approved := vset{}
662
+ if len(active) > 0 {
663
+ approved = setOf(ovio.List(active[0]["tasks"]))
664
+ }
665
+ liveWrites := map[string]string{}
666
+ var unsettled []any
667
+ for _, it := range att {
668
+ x := ovio.Obj(it)
669
+ xid, status := PyStr(x["task_id"])+"#"+PyStr(x["attempt_id"]), str(x, "status")
670
+ if !attemptState[status] {
671
+ add("attempt %s: bad status", xid)
672
+ }
673
+ if set("returned", "admitted", "rejected")[status] && !(str(x, "receipt") != "" && isFile(join(run, str(x, "receipt")))) {
674
+ add("attempt %s: receipt file missing", xid)
675
+ }
676
+ if set("dispatched", "running", "returned")[status] {
677
+ unsettled = append(unsettled, xid)
678
+ }
679
+ if !writers[str(x, "role")] {
680
+ continue
681
+ }
682
+ if assessmentOnly {
683
+ add("attempt %s: writer dispatched in an assessment-only run", xid)
684
+ }
685
+ if (status == "dispatched" || status == "running") && !approved.has(x["task_id"]) {
686
+ add("attempt %s: writer task is not in the active approval", xid)
687
+ }
688
+ if !granted[Repr(x["authorized_by"])].has(x["task_id"]) {
689
+ add("attempt %s: authorized_by does not name an approval of this task", xid)
690
+ }
691
+ allowed := setOf(ovio.List(tasks[Repr(x["task_id"])]["allowed_paths"]))
692
+ extra := vset{}
693
+ for _, p := range ovio.List(x["changed_paths"]) {
694
+ if !allowed.has(p) {
695
+ extra.add(p)
696
+ }
697
+ }
698
+ if status == "admitted" && len(extra) > 0 {
699
+ add("attempt %s: admitted changes outside allowed paths %s", xid, Repr(extra.sorted()))
700
+ }
701
+ if live[status] {
702
+ for _, p := range ovio.List(x["write_paths"]) {
703
+ k := strings.ToLower(realpath(join(repo, ovio.Str(p))))
704
+ if prev, ok := liveWrites[k]; ok {
705
+ add("single writer: %s and %s both hold %s", prev, xid, PyStr(p))
706
+ }
707
+ liveWrites[k] = xid
708
+ }
709
+ }
710
+ }
711
+ outcome := str(rj, "execution_outcome")
712
+ if outcome != "RUNNING" && len(unsettled) > 0 {
713
+ add("attempts must be admitted, rejected or cancelled before the run leaves RUNNING: %s", Repr(unsettled[:min(5, len(unsettled))]))
714
+ }
715
+ if outcome != "RUNNING" && outcome != "AWAITING_APPROVAL" && len(approvals) > 0 && !assessmentOnly {
716
+ outs := ovio.Obj(rj["task_outcomes"])
717
+ var missing []any
718
+ for _, t := range ovio.List(approvals[len(approvals)-1]["tasks"]) {
719
+ var o any
720
+ if s, ok := t.(string); ok {
721
+ o = outs[s]
722
+ }
723
+ if !taskOutcomes[ovio.Str(o)] {
724
+ missing = append(missing, t)
725
+ }
726
+ }
727
+ if len(missing) > 0 {
728
+ add("approved tasks without exactly one recorded outcome: %s", Repr(missing))
729
+ }
730
+ }
731
+ cov := ovio.List(R["coverage.json"]["files"])
732
+ uniq(cov, func(c map[string]any) string { return Repr(c["path"]) }, "coverage", add)
733
+ for _, it := range cov {
734
+ c := ovio.Obj(it)
735
+ if !ovio.Truthy(c["eligible"]) && !ovio.Truthy(ovio.Get(c, "exclusion.reason")) {
736
+ add("coverage %s: ineligible without an exclusion reason", PyStr(c["path"]))
737
+ }
738
+ }
739
+ if prevDir != "" {
740
+ prev := map[string]map[string]any{}
741
+ for _, n := range []string{"cycles.json", "findings.json", "approval.json", "run.json", "coverage.json"} {
742
+ m, err := ovio.LoadObject(join(prevDir, n))
743
+ if err != nil {
744
+ return nil, err
745
+ }
746
+ prev[n] = m
747
+ }
748
+ for _, k := range []string{"run_id", "repo_root", "mode", "assessment_only"} {
749
+ if !eq(prev["run.json"][k], rj[k]) {
750
+ add("run.json: %s changed; start a new run instead", k)
751
+ }
752
+ }
753
+ if !prefixEq(ovio.List(R["cycles.json"]["cycles"]), ovio.List(prev["cycles.json"]["cycles"])) {
754
+ add("cycles.json is append-only: an earlier cycle changed or disappeared")
755
+ }
756
+ cur := map[string]map[string]any{}
757
+ for _, it := range fs {
758
+ f := ovio.Obj(it)
759
+ cur[Repr(f["id"])] = f
760
+ }
761
+ for _, it := range ovio.List(prev["findings.json"]["findings"]) {
762
+ f := ovio.Obj(it)
763
+ g, ok := cur[Repr(f["id"])]
764
+ fh, isList := f["history"].([]any)
765
+ gh := ovio.List(g["history"])
766
+ if !ok || !isList || !prefixEq(gh, fh) {
767
+ add("finding %s: removed or history rewritten", PyStr(f["id"]))
768
+ } else if (!eq(g["severity"], f["severity"]) || !eq(g["kind"], f["kind"])) && len(gh) == len(fh) {
769
+ add("finding %s: severity or kind changed without a history entry", PyStr(f["id"]))
770
+ }
771
+ }
772
+ kept := vset{}
773
+ for _, c := range cov {
774
+ kept.add(ovio.Obj(c)["path"])
775
+ }
776
+ var gone []any
777
+ for _, c := range ovio.List(prev["coverage.json"]["files"]) {
778
+ if p := ovio.Obj(c)["path"]; !kept.has(p) {
779
+ gone = append(gone, p)
780
+ }
781
+ }
782
+ if len(gone) > 0 {
783
+ add("coverage denominator shrank: %s (exclude with a reason instead)", Repr(gone[:min(5, len(gone))]))
784
+ }
785
+ oldap := ovio.List(prev["approval.json"]["events"])
786
+ same := len(ap) >= len(oldap)
787
+ for i := 0; same && i < len(oldap); i++ {
788
+ same = eq(noStatus(ap[i]), noStatus(oldap[i]))
789
+ }
790
+ if !same {
791
+ add("approval.json events are append-only")
792
+ }
793
+ }
794
+ gen := strings.ReplaceAll(filepath.Base(strings.TrimRight(genDir, "/")), ".tmp", "")
795
+ planStamp := "none"
796
+ if hasPR {
797
+ if _, ok := pr["file"]; !ok {
798
+ return nil, keyError("file")
799
+ }
800
+ d, err := sha(join(run, str(pr, "file")))
801
+ if err != nil {
802
+ return nil, err
803
+ }
804
+ planStamp = "r" + PyStr(pr["rev"]) + ":" + d
805
+ }
806
+ stamp := fmt.Sprintf("overhaul-stamp run=%s generation=%s plan=%s", PyStr(rj["run_id"]), gen, planStamp)
807
+ vdir := join(genDir, "views")
808
+ if isDir(vdir) {
809
+ entries, err := os.ReadDir(vdir)
810
+ if err != nil {
811
+ return nil, err
812
+ }
813
+ for _, v := range entries {
814
+ b, err := os.ReadFile(join(vdir, v.Name())) // #nosec G703 -- view file listed from the generation's own views directory
815
+ if err != nil {
816
+ return nil, err
817
+ }
818
+ if !bytes.Contains(b, []byte(stamp)) {
819
+ add("view %s: stamp does not match this generation (%s)", v.Name(), stamp)
820
+ }
821
+ }
822
+ }
823
+ return errs, nil
824
+ }
825
+
826
+ // noStatus is dict(a, status=None): the event with its mutable status blanked.
827
+ func noStatus(v any) map[string]any {
828
+ m := map[string]any{}
829
+ for k, x := range ovio.Obj(v) {
830
+ m[k] = x
831
+ }
832
+ m["status"] = nil
833
+ return m
834
+ }