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,577 @@
1
+ package records
2
+
3
+ import (
4
+ "bytes"
5
+ "encoding/json"
6
+ "os"
7
+ "path/filepath"
8
+ "strings"
9
+ "testing"
10
+
11
+ "github.com/devrites/devrites/internal/overhaul/ovio"
12
+ "github.com/devrites/devrites/internal/overhaul/render"
13
+ )
14
+
15
+ type J = map[string]any
16
+ type L = []any
17
+
18
+ type fixture struct {
19
+ t *testing.T
20
+ repo, run string
21
+ }
22
+
23
+ func write(t *testing.T, path string, v any) {
24
+ t.Helper()
25
+ if err := os.MkdirAll(filepath.Dir(path), 0o755); err != nil {
26
+ t.Fatal(err)
27
+ }
28
+ var b []byte
29
+ switch x := v.(type) {
30
+ case string:
31
+ b = []byte(x)
32
+ default:
33
+ var err error
34
+ if b, err = json.MarshalIndent(v, "", " "); err != nil {
35
+ t.Fatal(err)
36
+ }
37
+ }
38
+ if err := os.WriteFile(path, b, 0o644); err != nil {
39
+ t.Fatal(err)
40
+ }
41
+ }
42
+
43
+ func digest(t *testing.T, path string) string {
44
+ t.Helper()
45
+ d, err := ovio.SHA256File(path)
46
+ if err != nil {
47
+ t.Fatal(err)
48
+ }
49
+ return d
50
+ }
51
+
52
+ func task(id string, deps L, path string) J {
53
+ return J{"id": id, "deps": deps, "allowed_paths": L{path}, "oracle": "test passes",
54
+ "writer_role": "implementer", "verifier_role": "verifier", "controls": L{"C-1"}}
55
+ }
56
+
57
+ func newFixture(t *testing.T) *fixture {
58
+ dir := t.TempDir()
59
+ f := &fixture{t: t, repo: filepath.Join(dir, "repo"), run: filepath.Join(dir, "run")}
60
+ write(t, filepath.Join(f.repo, "src/a.py"), "print('a')\n")
61
+ write(t, filepath.Join(f.run, "revisions/rubric-r1.json"), J{"schema": "overhaul.rubric/1", "rev": 1, "controls": L{J{"id": "C-1"}}})
62
+ f.writePlan(L{task("T-1", L{}, "src/a.py"), task("T-2", L{"T-1"}, "src/b.py")})
63
+ write(t, filepath.Join(f.run, "evidence/red.log"), "red\n")
64
+ write(t, filepath.Join(f.run, "receipts/R-1.json"), J{})
65
+ return f
66
+ }
67
+
68
+ func (f *fixture) writePlan(tasks L) {
69
+ write(f.t, filepath.Join(f.run, "revisions/plan-r1.json"), J{"schema": "overhaul.plan/1", "rev": 1,
70
+ "rubric": J{"file": "revisions/rubric-r1.json", "sha256": digest(f.t, filepath.Join(f.run, "revisions/rubric-r1.json"))},
71
+ "tasks": tasks})
72
+ }
73
+
74
+ // records returns a fresh, valid record set with digests of the current files.
75
+ func (f *fixture) records() map[string]J {
76
+ return map[string]J{
77
+ "run.json": {"schema": "overhaul.run/1", "run_id": "run-1", "repo_root": f.repo, "mode": "full",
78
+ "assessment_only": false, "phase": "REMEDIATING", "readiness_verdict": "NOT_ASSESSED",
79
+ "execution_outcome": "RUNNING", "revisions": J{"plan": J{"rev": 1, "file": "revisions/plan-r1.json"}}},
80
+ "coverage.json": {"schema": "overhaul.coverage/1", "files": L{J{"path": "src/a.py", "eligible": true}}},
81
+ "findings.json": {"schema": "overhaul.findings/1", "findings": L{J{"id": "F-1", "fingerprint": "fp-1",
82
+ "kind": "defect", "scope_origin": "pre-existing", "status": "confirmed", "severity": "high",
83
+ "evidence": L{"E-1"}, "locations": L{J{"path": "src/a.py", "start": 1, "end": 1},
84
+ J{"path": "mobile-app:src/api.ts", "external": true}},
85
+ "history": L{J{"status": "candidate"}, J{"status": "confirmed"}}}}},
86
+ "evidence.json": {"schema": "overhaul.evidence/1", "items": L{J{"id": "E-1", "path": "evidence/red.log",
87
+ "sha256": digest(f.t, filepath.Join(f.run, "evidence/red.log"))}}},
88
+ "dispatch.json": {"schema": "overhaul.dispatch/1", "attempts": L{J{"task_id": "T-1", "attempt_id": "A1",
89
+ "role": "implementer", "status": "admitted", "authorized_by": "AP-1", "receipt": "receipts/R-1.json",
90
+ "changed_paths": L{"src/a.py"}}}},
91
+ "approval.json": {"schema": "overhaul.approval/1", "events": L{J{"id": "AP-1", "kind": "approve",
92
+ "status": "active", "tasks": L{"T-1"}, "plan_rev": 1, "quote": "yes, fix T-1", "channel": "conversation",
93
+ "plan_digest": digest(f.t, filepath.Join(f.run, "revisions/plan-r1.json"))}}},
94
+ "cycles.json": {"schema": "overhaul.cycles/1", "cycles": L{J{"n": 1}}},
95
+ }
96
+ }
97
+
98
+ func (f *fixture) cmd(args ...string) (int, string, string) {
99
+ var out, errb bytes.Buffer
100
+ code := Run(args, &out, &errb)
101
+ return code, out.String(), errb.String()
102
+ }
103
+
104
+ // publish stages, writes recs (plus extra files relative to the stage) and publishes.
105
+ func (f *fixture) publish(recs map[string]J, extra map[string]string) (int, string) {
106
+ f.t.Helper()
107
+ code, out, errs := f.cmd("stage", f.run)
108
+ if code != 0 {
109
+ f.t.Fatalf("stage: %d %s", code, errs)
110
+ }
111
+ tmp := strings.TrimSpace(out)
112
+ for name, doc := range recs {
113
+ write(f.t, filepath.Join(tmp, name), doc)
114
+ }
115
+ for name, body := range extra {
116
+ write(f.t, filepath.Join(tmp, name), body)
117
+ }
118
+ code, out, errs = f.cmd("publish", f.run)
119
+ return code, out + errs
120
+ }
121
+
122
+ func (f *fixture) mustPublish(recs map[string]J) {
123
+ f.t.Helper()
124
+ if code, out := f.publish(recs, nil); code != 0 {
125
+ f.t.Fatalf("publish failed: %d\n%s", code, out)
126
+ }
127
+ }
128
+
129
+ func finding(r map[string]J) J { return r["findings.json"]["findings"].(L)[0].(J) }
130
+ func approval(r map[string]J) J { return r["approval.json"]["events"].(L)[0].(J) }
131
+ func attempts(r map[string]J) L { return r["dispatch.json"]["attempts"].(L) }
132
+
133
+ func addAttempt(r map[string]J, a J) {
134
+ r["dispatch.json"]["attempts"] = append(attempts(r), a)
135
+ }
136
+
137
+ func TestPublishThenValidate(t *testing.T) {
138
+ f := newFixture(t)
139
+ code, out := f.publish(f.records(), nil)
140
+ if code != 0 || !strings.Contains(out, "published g0001") {
141
+ t.Fatalf("publish: %d %s", code, out)
142
+ }
143
+ if code, out, _ := f.cmd("validate", f.run); code != 0 || strings.TrimSpace(out) != "valid g0001" {
144
+ t.Fatalf("validate: %d %s", code, out)
145
+ }
146
+ f.mustPublish(f.records())
147
+ m, err := ovio.LoadObject(filepath.Join(f.run, "g0002/manifest.json"))
148
+ if err != nil {
149
+ t.Fatal(err)
150
+ }
151
+ _, hasRun := ovio.Obj(m["files"])["run.json"]
152
+ _, hasPlan := ovio.Obj(m["revisions"])["revisions/plan-r1.json"]
153
+ if m["previous"] != "g0001" || !hasRun || !hasPlan {
154
+ t.Fatalf("manifest: %v", m)
155
+ }
156
+ if code, out, _ := f.cmd("validate", f.run); code != 0 || strings.TrimSpace(out) != "valid g0002" {
157
+ t.Fatalf("validate g0002: %d %s", code, out)
158
+ }
159
+ if code, out, _ := f.cmd("digest", filepath.Join(f.run, "evidence/red.log")); code != 0 ||
160
+ strings.TrimSpace(out) != digest(t, filepath.Join(f.run, "evidence/red.log")) {
161
+ t.Fatalf("digest: %d %s", code, out)
162
+ }
163
+ if code, _, _ := f.cmd("bogus"); code != 2 {
164
+ t.Fatalf("usage exit = %d", code)
165
+ }
166
+ }
167
+
168
+ func TestSingleGenerationRules(t *testing.T) {
169
+ verifiedHistory := L{J{"status": "candidate"}, J{"status": "confirmed"}, J{"status": "approved-for-fix"},
170
+ J{"status": "in-progress"}, J{"status": "fixed-unverified"}, J{"status": "verified"}}
171
+ verifier := J{"task_id": "T-1", "attempt_id": "V1", "role": "verifier", "status": "admitted", "receipt": "receipts/R-1.json"}
172
+ cases := []struct {
173
+ name string
174
+ mutate func(f *fixture, r map[string]J)
175
+ want string // "" means the publish must succeed
176
+ }{
177
+ {"approval without quote", func(f *fixture, r map[string]J) { delete(approval(r), "quote") }, "needs the user's verbatim decision"},
178
+ {"approval untrusted channel", func(f *fixture, r map[string]J) { approval(r)["channel"] = "email" }, "trusted channel"},
179
+ {"accept-degradation without quote", func(f *fixture, r map[string]J) {
180
+ r["approval.json"]["events"] = append(r["approval.json"]["events"].(L), J{"id": "D-1", "kind": "accept-degradation", "channel": "conversation"})
181
+ }, "approval D-1: needs the user's verbatim decision"},
182
+ {"approval digest mismatch", func(f *fixture, r map[string]J) { approval(r)["plan_digest"] = strings.Repeat("0", 64) }, "plan digest does not match"},
183
+ {"subset approval missing prerequisite", func(f *fixture, r map[string]J) { approval(r)["tasks"] = L{"T-2"} }, "miss prerequisites ['T-1']"},
184
+ {"writer for unapproved task", func(f *fixture, r map[string]J) {
185
+ addAttempt(r, J{"task_id": "T-2", "attempt_id": "A1", "role": "implementer", "status": "running", "authorized_by": "AP-1"})
186
+ }, "attempt T-2#A1: writer task is not in the active approval"},
187
+ {"approval active after stop", func(f *fixture, r map[string]J) {
188
+ r["approval.json"]["events"] = append(r["approval.json"]["events"].(L), J{"id": "S-1", "kind": "stop"})
189
+ }, "still active after a later stop/revoke"},
190
+ {"live writer after stop", func(f *fixture, r map[string]J) {
191
+ approval(r)["status"] = "stopped"
192
+ r["approval.json"]["events"] = append(r["approval.json"]["events"].(L), J{"id": "S-1", "kind": "stop"})
193
+ addAttempt(r, J{"task_id": "T-1", "attempt_id": "A2", "role": "implementer", "status": "running", "authorized_by": "AP-1"})
194
+ }, "attempt T-1#A2: writer task is not in the active approval"},
195
+ {"assessment-only with approval", func(f *fixture, r map[string]J) {
196
+ r["run.json"]["assessment_only"] = true
197
+ r["dispatch.json"]["attempts"] = L{}
198
+ }, "assessment-only run carries an active approval"},
199
+ {"assessment-only with writer", func(f *fixture, r map[string]J) {
200
+ r["run.json"]["assessment_only"] = true
201
+ approval(r)["status"] = "revoked"
202
+ }, "writer dispatched in an assessment-only run"},
203
+ {"live writers case alias", func(f *fixture, r map[string]J) {
204
+ addAttempt(r, J{"task_id": "T-1", "attempt_id": "A2", "role": "implementer", "status": "running", "authorized_by": "AP-1", "write_paths": L{"src/a.py"}})
205
+ addAttempt(r, J{"task_id": "T-1", "attempt_id": "A3", "role": "implementer", "status": "unknown", "authorized_by": "AP-1", "write_paths": L{"SRC/A.PY"}})
206
+ }, "single writer: T-1#A2 and T-1#A3 both hold SRC/A.PY"},
207
+ {"live writers symlink alias", func(f *fixture, r map[string]J) {
208
+ if err := os.Symlink("a.py", filepath.Join(f.repo, "src/link.py")); err != nil {
209
+ f.t.Fatal(err)
210
+ }
211
+ addAttempt(r, J{"task_id": "T-1", "attempt_id": "A2", "role": "implementer", "status": "running", "authorized_by": "AP-1", "write_paths": L{"src/a.py"}})
212
+ addAttempt(r, J{"task_id": "T-1", "attempt_id": "A3", "role": "implementer", "status": "dispatched", "authorized_by": "AP-1", "write_paths": L{"src/link.py"}})
213
+ }, "single writer: T-1#A2 and T-1#A3 both hold src/link.py"},
214
+ {"settled writers may share a path", func(f *fixture, r map[string]J) {
215
+ addAttempt(r, J{"task_id": "T-1", "attempt_id": "A2", "role": "implementer", "status": "running", "authorized_by": "AP-1", "write_paths": L{"src/a.py"}})
216
+ addAttempt(r, J{"task_id": "T-1", "attempt_id": "A3", "role": "implementer", "status": "cancelled", "authorized_by": "AP-1", "write_paths": L{"src/a.py"}})
217
+ }, ""},
218
+ {"allowed path escape", func(f *fixture, r map[string]J) {
219
+ f.writePlan(L{task("T-1", L{}, "../outside.py"), task("T-2", L{"T-1"}, "src/b.py")})
220
+ approval(r)["plan_digest"] = digest(f.t, filepath.Join(f.run, "revisions/plan-r1.json"))
221
+ }, "allowed path '../outside.py' not normalized or escapes the repository"},
222
+ {"dependency cycle", func(f *fixture, r map[string]J) {
223
+ f.writePlan(L{task("T-1", L{"T-2"}, "src/a.py"), task("T-2", L{"T-1"}, "src/b.py")})
224
+ approval(r)["plan_digest"] = digest(f.t, filepath.Join(f.run, "revisions/plan-r1.json"))
225
+ approval(r)["tasks"] = L{"T-1", "T-2"}
226
+ }, "task dependencies contain a cycle"},
227
+ {"bracket path accepted", func(f *fixture, r map[string]J) {
228
+ f.writePlan(L{task("T-1", L{}, "src/a.py"), task("T-2", L{"T-1"}, "app/blog/[slug]/page.tsx")})
229
+ approval(r)["plan_digest"] = digest(f.t, filepath.Join(f.run, "revisions/plan-r1.json"))
230
+ finding(r)["locations"] = L{J{"path": "app/blog/[slug]/page.tsx", "start": 1}}
231
+ }, ""},
232
+ {"duplicate fingerprint", func(f *fixture, r map[string]J) {
233
+ r["findings.json"]["findings"] = append(r["findings.json"]["findings"].(L), J{"id": "F-2", "fingerprint": "fp-1",
234
+ "kind": "defect", "scope_origin": "introduced", "status": "candidate", "history": L{J{"status": "candidate"}}})
235
+ }, "finding fingerprint: duplicate id 'fp-1'"},
236
+ {"needs-validation without blockers", func(f *fixture, r map[string]J) {
237
+ r["findings.json"]["findings"] = append(r["findings.json"]["findings"].(L), J{"id": "F-2", "fingerprint": "fp-2",
238
+ "kind": "defect", "scope_origin": "introduced", "status": "needs-validation",
239
+ "history": L{J{"status": "candidate"}, J{"status": "needs-validation"}}})
240
+ }, "finding F-2: needs-validation must name the missing fact (blockers)"},
241
+ {"host path location", func(f *fixture, r map[string]J) {
242
+ finding(r)["locations"] = L{J{"path": "/Users/me/app/a.py", "start": 1}}
243
+ }, "location '/Users/me/app/a.py' is not a repository-relative path or label"},
244
+ {"external host path location", func(f *fixture, r map[string]J) {
245
+ finding(r)["locations"] = L{J{"path": "~/app/a.py", "external": true}}
246
+ }, "is not a repository-relative path or label"},
247
+ {"directory location", func(f *fixture, r map[string]J) {
248
+ finding(r)["locations"] = L{J{"path": "src"}}
249
+ }, "location 'src' is not a repository-relative path or label"},
250
+ {"illegal transition", func(f *fixture, r map[string]J) {
251
+ finding(r)["history"] = L{J{"status": "candidate"}, J{"status": "verified"}, J{"status": "confirmed"}}
252
+ }, "illegal transition candidate -> verified"},
253
+ {"severity on candidate", func(f *fixture, r map[string]J) {
254
+ finding(r)["status"] = "candidate"
255
+ finding(r)["history"] = L{J{"status": "candidate"}}
256
+ }, "severity only for established impact"},
257
+ {"history must start at candidate", func(f *fixture, r map[string]J) {
258
+ finding(r)["history"] = L{J{"status": "confirmed"}}
259
+ }, "must start at candidate"},
260
+ {"same-status entry with reason", func(f *fixture, r map[string]J) {
261
+ finding(r)["history"] = L{J{"status": "candidate"}, J{"status": "confirmed"}, J{"status": "confirmed", "reason": "severity re-assessed"}}
262
+ }, ""},
263
+ {"same-status entry without reason", func(f *fixture, r map[string]J) {
264
+ finding(r)["history"] = L{J{"status": "candidate"}, J{"status": "confirmed"}, J{"status": "confirmed"}}
265
+ }, "illegal transition confirmed -> confirmed"},
266
+ {"evidence sha256 mandatory", func(f *fixture, r map[string]J) {
267
+ delete(r["evidence.json"]["items"].(L)[0].(J), "sha256")
268
+ }, "evidence E-1: sha256 missing"},
269
+ {"evidence outside run dir", func(f *fixture, r map[string]J) {
270
+ r["evidence.json"]["items"].(L)[0].(J)["path"] = "../repo/src/a.py"
271
+ }, "evidence E-1: path missing or outside run dir"},
272
+ {"verified_by without verifier", func(f *fixture, r map[string]J) {
273
+ finding(r)["status"], finding(r)["history"], finding(r)["verified_by"] = "verified", verifiedHistory, "T-1#V1"
274
+ }, "verified_by must name an admitted verifier attempt"},
275
+ {"verified_by names attempt", func(f *fixture, r map[string]J) {
276
+ finding(r)["status"], finding(r)["history"], finding(r)["verified_by"] = "verified", verifiedHistory, "T-1#V1"
277
+ addAttempt(r, verifier)
278
+ }, ""},
279
+ {"verified_by names receipt", func(f *fixture, r map[string]J) {
280
+ finding(r)["status"], finding(r)["history"], finding(r)["verified_by"] = "verified", verifiedHistory, "receipts/R-1.json"
281
+ addAttempt(r, verifier)
282
+ }, ""},
283
+ {"plan file must match rev", func(f *fixture, r map[string]J) {
284
+ r["run.json"]["revisions"] = J{"plan": J{"rev": 1, "file": "revisions/rubric-r1.json"}}
285
+ }, "must be revisions/plan-r<rev>.json"},
286
+ {"approvals need revisions.plan", func(f *fixture, r map[string]J) {
287
+ r["run.json"]["revisions"] = J{}
288
+ r["dispatch.json"]["attempts"] = L{}
289
+ }, "approvals and writers need revisions.plan"},
290
+ {"writers need revisions.plan", func(f *fixture, r map[string]J) {
291
+ r["run.json"]["revisions"] = J{}
292
+ r["approval.json"]["events"] = L{}
293
+ }, "approvals and writers need revisions.plan"},
294
+ {"assessment without plan is fine", func(f *fixture, r map[string]J) {
295
+ r["run.json"]["revisions"] = J{}
296
+ r["run.json"]["assessment_only"] = true
297
+ r["approval.json"]["events"] = L{}
298
+ r["dispatch.json"]["attempts"] = L{}
299
+ }, ""},
300
+ {"terminal outcome missing", func(f *fixture, r map[string]J) {
301
+ r["run.json"]["execution_outcome"] = "READY_FOR_USER_REVIEW"
302
+ }, "approved tasks without exactly one recorded outcome: ['T-1']"},
303
+ {"terminal outcome recorded", func(f *fixture, r map[string]J) {
304
+ r["run.json"]["execution_outcome"] = "READY_FOR_USER_REVIEW"
305
+ r["run.json"]["task_outcomes"] = J{"T-1": "completed"}
306
+ }, ""},
307
+ {"unsettled attempt blocks leaving RUNNING", func(f *fixture, r map[string]J) {
308
+ r["run.json"]["execution_outcome"] = "STOPPED_BY_USER"
309
+ r["run.json"]["task_outcomes"] = J{"T-1": "completed"}
310
+ addAttempt(r, J{"task_id": "R-9", "attempt_id": "A1", "role": "reviewer", "status": "returned", "receipt": "receipts/R-1.json"})
311
+ }, "before the run leaves RUNNING: ['R-9#A1']"},
312
+ {"unknown and timed-out allowed after stop", func(f *fixture, r map[string]J) {
313
+ approval(r)["status"] = "stopped"
314
+ r["approval.json"]["events"] = append(r["approval.json"]["events"].(L), J{"id": "S-1", "kind": "stop"})
315
+ r["run.json"]["execution_outcome"] = "STOPPED_BY_USER"
316
+ r["run.json"]["task_outcomes"] = J{"T-1": "not-started"}
317
+ addAttempt(r, J{"task_id": "T-1", "attempt_id": "A2", "role": "implementer", "status": "unknown", "authorized_by": "AP-1"})
318
+ addAttempt(r, J{"task_id": "R-9", "attempt_id": "A1", "role": "reviewer", "status": "timed-out"})
319
+ }, ""},
320
+ {"scorecard needs revisions.rubric", func(f *fixture, r map[string]J) {
321
+ r["scorecard.json"] = J{"readiness_verdict": "NOT_ASSESSED"}
322
+ }, "scorecard needs revisions.rubric"},
323
+ {"scorecard rubric digest", func(f *fixture, r map[string]J) {
324
+ r["scorecard.json"] = J{"readiness_verdict": "NOT_ASSESSED"}
325
+ r["run.json"]["revisions"].(J)["rubric"] = J{"rev": 1, "file": "revisions/rubric-r1.json", "sha256": strings.Repeat("0", 64)}
326
+ }, "revisions.rubric digest mismatch"},
327
+ {"scorecard verdict differs", func(f *fixture, r map[string]J) {
328
+ r["scorecard.json"] = J{"readiness_verdict": "NOT_READY"}
329
+ r["run.json"]["revisions"].(J)["rubric"] = J{"rev": 1, "file": "revisions/rubric-r1.json",
330
+ "sha256": digest(f.t, filepath.Join(f.run, "revisions/rubric-r1.json"))}
331
+ }, "readiness_verdict differs"},
332
+ {"scorecard consistent", func(f *fixture, r map[string]J) {
333
+ r["scorecard.json"] = J{"readiness_verdict": "NOT_ASSESSED"}
334
+ r["run.json"]["revisions"].(J)["rubric"] = J{"rev": 1, "file": "revisions/rubric-r1.json",
335
+ "sha256": digest(f.t, filepath.Join(f.run, "revisions/rubric-r1.json"))}
336
+ }, ""},
337
+ {"schema tag and enum", func(f *fixture, r map[string]J) {
338
+ r["cycles.json"]["schema"] = "overhaul.cycle/1"
339
+ r["run.json"]["mode"] = "yolo"
340
+ }, "run.json: mode='yolo' not in ['branch', 'full', 'pr']"},
341
+ {"ineligible coverage without reason", func(f *fixture, r map[string]J) {
342
+ r["coverage.json"]["files"] = L{J{"path": "src/a.py", "eligible": false}}
343
+ }, "coverage src/a.py: ineligible without an exclusion reason"},
344
+ }
345
+ for _, c := range cases {
346
+ t.Run(c.name, func(t *testing.T) {
347
+ f := newFixture(t)
348
+ r := f.records()
349
+ c.mutate(f, r)
350
+ code, out := f.publish(r, nil)
351
+ if c.want == "" {
352
+ if code != 0 {
353
+ t.Fatalf("want publish ok, got %d:\n%s", code, out)
354
+ }
355
+ return
356
+ }
357
+ if code != 1 || !strings.Contains(out, "VIOLATION: ") || !strings.Contains(out, c.want) {
358
+ t.Fatalf("want exit 1 with %q, got %d:\n%s", c.want, code, out)
359
+ }
360
+ })
361
+ }
362
+ }
363
+
364
+ func TestCrossGenerationRules(t *testing.T) {
365
+ cases := []struct {
366
+ name string
367
+ mutate func(f *fixture, r map[string]J)
368
+ want string
369
+ }{
370
+ {"cycles append-only", func(f *fixture, r map[string]J) { r["cycles.json"]["cycles"] = L{J{"n": 2}} }, "cycles.json is append-only"},
371
+ {"cycles may grow", func(f *fixture, r map[string]J) {
372
+ r["cycles.json"]["cycles"] = L{J{"n": 1}, J{"n": 2}}
373
+ }, ""},
374
+ {"finding removed", func(f *fixture, r map[string]J) { r["findings.json"]["findings"] = L{} }, "finding F-1: removed or history rewritten"},
375
+ {"history rewritten", func(f *fixture, r map[string]J) {
376
+ finding(r)["history"] = L{J{"status": "candidate", "reason": "edited"}, J{"status": "confirmed"}}
377
+ }, "finding F-1: removed or history rewritten"},
378
+ {"severity change without history", func(f *fixture, r map[string]J) { finding(r)["severity"] = "medium" }, "severity or kind changed without a history entry"},
379
+ {"severity change with history", func(f *fixture, r map[string]J) {
380
+ finding(r)["severity"] = "medium"
381
+ finding(r)["history"] = L{J{"status": "candidate"}, J{"status": "confirmed"}, J{"status": "confirmed", "reason": "re-assessed"}}
382
+ }, ""},
383
+ {"approval events append-only", func(f *fixture, r map[string]J) { approval(r)["quote"] = "something else" }, "approval.json events are append-only"},
384
+ {"approval status may change", func(f *fixture, r map[string]J) { approval(r)["status"] = "revoked" }, ""},
385
+ {"immutable revision changed", func(f *fixture, r map[string]J) {
386
+ write(f.t, filepath.Join(f.run, "revisions/rubric-r1.json"), J{"schema": "overhaul.rubric/1", "rev": 1, "controls": L{}})
387
+ }, "immutable revision changed: revisions/rubric-r1.json"},
388
+ {"run_id pinned", func(f *fixture, r map[string]J) { r["run.json"]["run_id"] = "run-2" }, "run_id changed"},
389
+ {"mode pinned", func(f *fixture, r map[string]J) { r["run.json"]["mode"] = "pr" }, "mode changed"},
390
+ {"repo_root pinned", func(f *fixture, r map[string]J) {
391
+ r["run.json"]["repo_root"] = filepath.Join(f.repo, "src")
392
+ }, "repo_root changed"},
393
+ {"assessment_only pinned", func(f *fixture, r map[string]J) {
394
+ r["run.json"]["assessment_only"] = true
395
+ approval(r)["status"] = "revoked"
396
+ r["dispatch.json"]["attempts"] = L{}
397
+ }, "assessment_only changed"},
398
+ {"coverage denominator shrank", func(f *fixture, r map[string]J) { r["coverage.json"]["files"] = L{} }, "coverage denominator shrank: ['src/a.py']"},
399
+ {"coverage exclusion keeps denominator", func(f *fixture, r map[string]J) {
400
+ r["coverage.json"]["files"] = L{J{"path": "src/a.py", "eligible": false, "exclusion": J{"reason": "generated"}}}
401
+ }, ""},
402
+ }
403
+ for _, c := range cases {
404
+ t.Run(c.name, func(t *testing.T) {
405
+ f := newFixture(t)
406
+ f.mustPublish(f.records())
407
+ r := f.records()
408
+ c.mutate(f, r)
409
+ code, out := f.publish(r, nil)
410
+ if c.want == "" {
411
+ if code != 0 {
412
+ t.Fatalf("want publish ok, got %d:\n%s", code, out)
413
+ }
414
+ return
415
+ }
416
+ if code != 1 || !strings.Contains(out, c.want) {
417
+ t.Fatalf("want exit 1 with %q, got %d:\n%s", c.want, code, out)
418
+ }
419
+ })
420
+ }
421
+ }
422
+
423
+ func TestStaleStage(t *testing.T) {
424
+ f := newFixture(t)
425
+ f.mustPublish(f.records())
426
+ if code, _, errs := f.cmd("stage", f.run); code != 0 {
427
+ t.Fatal(errs)
428
+ }
429
+ write(t, filepath.Join(f.run, "CURRENT"), "g0000\n")
430
+ code, _, errs := f.cmd("publish", f.run)
431
+ if code != 1 || !strings.Contains(errs, "stale stage: CURRENT moved from g0001 to g0000") {
432
+ t.Fatalf("got %d %s", code, errs)
433
+ }
434
+ if code, _, errs := f.cmd("stage", f.run); code != 2 || !strings.Contains(errs, "g0001 exists but CURRENT is g0000: interrupted publish") {
435
+ t.Fatalf("restage: %d %s", code, errs)
436
+ }
437
+ }
438
+
439
+ func TestStageCopiesWithoutViewsOrManifest(t *testing.T) {
440
+ f := newFixture(t)
441
+ stamp := "overhaul-stamp run=run-1 generation=g0001 plan=r1:" + digest(t, filepath.Join(f.run, "revisions/plan-r1.json"))
442
+ if code, out := f.publish(f.records(), map[string]string{"views/review.md": "# Review\n" + stamp + "\n"}); code != 0 {
443
+ t.Fatal(out)
444
+ }
445
+ code, out, errs := f.cmd("stage", f.run)
446
+ if code != 0 {
447
+ t.Fatal(errs)
448
+ }
449
+ tmp := strings.TrimSpace(out)
450
+ if filepath.Clean(tmp) != filepath.Join(f.run, "g0002.tmp") {
451
+ t.Fatalf("stage path %q", tmp)
452
+ }
453
+ base, _ := os.ReadFile(filepath.Join(tmp, ".base"))
454
+ if string(base) != "g0001" || isDir(filepath.Join(tmp, "views")) || isFile(filepath.Join(tmp, "manifest.json")) || !isFile(filepath.Join(tmp, "run.json")) {
455
+ t.Fatalf("bad stage contents (base %q)", base)
456
+ }
457
+ if code, _, errs := f.cmd("stage", f.run); code != 2 || !strings.Contains(errs, "staged generation already exists") {
458
+ t.Fatalf("double stage: %d %s", code, errs)
459
+ }
460
+ }
461
+
462
+ func TestTamperedGenerationDetected(t *testing.T) {
463
+ f := newFixture(t)
464
+ f.mustPublish(f.records())
465
+ p := filepath.Join(f.run, "g0001/cycles.json")
466
+ b, _ := os.ReadFile(p)
467
+ write(t, p, string(b)+" ")
468
+ code, out, _ := f.cmd("validate", f.run)
469
+ if code != 1 || !strings.Contains(out, "VIOLATION: mixed or modified generation: cycles.json does not match manifest") {
470
+ t.Fatalf("got %d %s", code, out)
471
+ }
472
+ }
473
+
474
+ func TestViewStamp(t *testing.T) {
475
+ f := newFixture(t)
476
+ code, out := f.publish(f.records(), map[string]string{"views/review.md": "overhaul-stamp run=run-1 generation=g0000 plan=none\n"})
477
+ if code != 1 || !strings.Contains(out, "view review.md: stamp does not match this generation") {
478
+ t.Fatalf("got %d %s", code, out)
479
+ }
480
+ }
481
+
482
+ // Views from the renderer must carry the stamp this validator expects.
483
+ func TestRenderedViewsPassValidation(t *testing.T) {
484
+ f := newFixture(t)
485
+ code, out, errs := f.cmd("stage", f.run)
486
+ if code != 0 {
487
+ t.Fatalf("stage: %d %s", code, errs)
488
+ }
489
+ tmp := strings.TrimSpace(out)
490
+ for name, doc := range f.records() {
491
+ write(t, filepath.Join(tmp, name), doc)
492
+ }
493
+ for _, kind := range []string{"review", "report"} {
494
+ var o, e bytes.Buffer
495
+ if c := render.Run([]string{f.run, tmp, kind}, &o, &e); c != 0 {
496
+ t.Fatalf("render %s: %d %s", kind, c, e.String())
497
+ }
498
+ }
499
+ if code, out, errs := f.cmd("publish", f.run); code != 0 {
500
+ t.Fatalf("publish: %d %s%s", code, out, errs)
501
+ }
502
+ }
503
+
504
+ func TestInterruptedPublish(t *testing.T) {
505
+ f := newFixture(t)
506
+ f.mustPublish(f.records())
507
+ if err := os.Mkdir(filepath.Join(f.run, "g0002"), 0o755); err != nil {
508
+ t.Fatal(err)
509
+ }
510
+ code, _, errs := f.cmd("stage", f.run)
511
+ if code != 2 || !strings.Contains(errs, "interrupted publish") {
512
+ t.Fatalf("stage: %d %s", code, errs)
513
+ }
514
+ code, out, _ := f.cmd("validate", f.run)
515
+ if code != 0 || !strings.Contains(out, "NOTE: g0002 is newer than CURRENT") || !strings.Contains(out, "valid g0001") {
516
+ t.Fatalf("validate: %d %s", code, out)
517
+ }
518
+ }
519
+
520
+ func TestPublishNeedsExactlyOneStage(t *testing.T) {
521
+ f := newFixture(t)
522
+ if err := os.MkdirAll(filepath.Join(f.run, "revisions"), 0o755); err != nil {
523
+ t.Fatal(err)
524
+ }
525
+ code, _, errs := f.cmd("publish", f.run)
526
+ if code != 2 || !strings.Contains(errs, "expected exactly one staged generation, found []") {
527
+ t.Fatalf("got %d %s", code, errs)
528
+ }
529
+ }
530
+
531
+ func TestBadPath(t *testing.T) {
532
+ repo := t.TempDir()
533
+ outside := t.TempDir()
534
+ write(t, filepath.Join(repo, "src/a.py"), "x\n")
535
+ write(t, filepath.Join(outside, "secret.py"), "x\n")
536
+ if err := os.Symlink(filepath.Join(outside, "secret.py"), filepath.Join(repo, "src/out.py")); err != nil {
537
+ t.Fatal(err)
538
+ }
539
+ cases := []struct {
540
+ path any
541
+ want string
542
+ }{
543
+ {"src/a.py", ""},
544
+ {"src/new.py", ""},
545
+ {"app/blog/[slug]/page.tsx", ""},
546
+ {"src/*.py", "not an exact relative file path"},
547
+ {"src/a?.py", "not an exact relative file path"},
548
+ {"/etc/passwd", "not an exact relative file path"},
549
+ {"src/", "not an exact relative file path"},
550
+ {"", "not an exact relative file path"},
551
+ {json.Number("3"), "not an exact relative file path"},
552
+ {"../x.py", "not normalized or escapes the repository"},
553
+ {"src/../src/a.py", "not normalized or escapes the repository"},
554
+ {"./src/a.py", "not normalized or escapes the repository"},
555
+ {"src", "names a directory or git metadata"},
556
+ {".git/config", "names a directory or git metadata"},
557
+ {"src/.git/HEAD", "names a directory or git metadata"},
558
+ {"src/out.py", "resolves outside the repository (symlink or traversal)"},
559
+ }
560
+ for _, c := range cases {
561
+ if got := BadPath(c.path, repo); got != c.want {
562
+ t.Errorf("BadPath(%v) = %q, want %q", c.path, got, c.want)
563
+ }
564
+ }
565
+ }
566
+
567
+ func TestRepr(t *testing.T) {
568
+ cases := map[string]any{
569
+ "None": nil, "True": true, "'a'": "a", `"it's"`: "it's", "['a', 'b']": L{"a", "b"},
570
+ "3": json.Number("3"), `'a\\b'`: `a\b`,
571
+ }
572
+ for want, v := range cases {
573
+ if got := Repr(v); got != want {
574
+ t.Errorf("Repr(%v) = %s, want %s", v, got, want)
575
+ }
576
+ }
577
+ }