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,776 @@
1
+ // Package render implements the /overhaul render tool: offline review and
2
+ // report views (HTML + Markdown) projected from one generation's canonical
3
+ // JSON. Every repository-derived string is escaped; pages carry no scripts, no
4
+ // remote assets and a hash-pinned stylesheet under a restrictive CSP.
5
+ package render
6
+
7
+ import (
8
+ "bytes"
9
+ "crypto/sha256"
10
+ "encoding/base64"
11
+ "encoding/json"
12
+ "errors"
13
+ "fmt"
14
+ "io"
15
+ "io/fs"
16
+ "math/big"
17
+ "os"
18
+ "path/filepath"
19
+ "regexp"
20
+ "sort"
21
+ "strings"
22
+ "unicode/utf16"
23
+
24
+ "github.com/devrites/devrites/internal/overhaul/ovio"
25
+ )
26
+
27
+ const usage = "usage: devrites-engine overhaul render <run> <gen-dir> [review|report]\n"
28
+
29
+ // css is byte-identical to the Python recipe so the CSP hash matches.
30
+ const css = `:root{color-scheme:light dark;--fg:#1b1f24;--bg:#fff;--muted:#57606a;--line:#d0d7de;--bad:#a40e26;--ok:#1a7f37}
31
+ @media (prefers-color-scheme:dark){:root{--fg:#e6edf3;--bg:#0d1117;--muted:#9da7b3;--line:#3d444d;--bad:#ff7b72;--ok:#56d364}}
32
+ body{margin:0 auto;max-width:72rem;padding:1rem;font:16px/1.5 system-ui,sans-serif;color:var(--fg);background:var(--bg)}
33
+ *,*::before,*::after{box-sizing:border-box}main *{min-width:0}img,svg{max-width:100%}
34
+ a{color:inherit}a:focus-visible,textarea:focus-visible,.scroll:focus-visible{outline:3px solid #0969da;outline-offset:2px}
35
+ .skip{position:absolute;left:-9999px}.skip:focus{left:1rem;top:1rem;background:var(--bg);padding:.5rem}
36
+ nav ul{display:flex;flex-wrap:wrap;gap:.25rem 1rem;padding:0;list-style:none}
37
+ .scroll{overflow-x:auto}table{border-collapse:collapse;width:100%;margin:.5rem 0 1rem}
38
+ th,td{border:1px solid var(--line);padding:.3rem .5rem;text-align:left;vertical-align:top;overflow-wrap:anywhere}
39
+ caption{text-align:left;font-weight:600}code,pre,textarea{font:13px/1.4 ui-monospace,monospace}code{overflow-wrap:anywhere}
40
+ .muted{color:var(--muted)}.FAIL,.NOT_READY,.UNKNOWN,.NOT_ASSESSABLE,.BLOCKED{color:var(--bad);font-weight:600}
41
+ .PASS,.MEETS_TARGETS{color:var(--ok);font-weight:600}textarea{width:100%;min-height:5rem}
42
+ @media print{nav,.skip{display:none}}`
43
+
44
+ var (
45
+ rowID = regexp.MustCompile(`^[A-Z][A-Z0-9]*-[A-Za-z0-9._-]+$`)
46
+ unsafeID = regexp.MustCompile(`[^A-Za-z0-9_-]`)
47
+ flags = set("PASS", "FAIL", "UNKNOWN", "NOT_READY", "MEETS_TARGETS", "NOT_ASSESSABLE", "BLOCKED")
48
+ leads = set("candidate", "needs-validation")
49
+ reviewed = set("semantically-reviewed", "cross-boundary-reviewed", "verified")
50
+ // esc matches Python html.escape(quote=True) byte for byte.
51
+ esc = strings.NewReplacer("&", "&amp;", "<", "&lt;", ">", "&gt;", `"`, "&quot;", "'", "&#x27;").Replace
52
+ mdEsc = strings.NewReplacer(`\`, `\\`, "|", `\|`, "\n", " ", "<", "&lt;").Replace
53
+ )
54
+
55
+ func set(xs ...string) map[string]bool {
56
+ m := map[string]bool{}
57
+ for _, x := range xs {
58
+ m[x] = true
59
+ }
60
+ return m
61
+ }
62
+
63
+ type row []any
64
+
65
+ type section struct {
66
+ anchor, heading string
67
+ cols []string
68
+ body []row
69
+ }
70
+
71
+ // Run executes `render <run> <gen-dir> [review|report]` and prints the HTML path.
72
+ func Run(args []string, stdout, stderr io.Writer) int {
73
+ if len(args) < 2 || len(args) > 3 {
74
+ fmt.Fprint(stderr, usage)
75
+ return 2
76
+ }
77
+ kind := "review"
78
+ if len(args) == 3 {
79
+ kind = args[2]
80
+ }
81
+ if kind != "review" && kind != "report" {
82
+ fmt.Fprint(stderr, usage)
83
+ return 2
84
+ }
85
+ home, _ := os.UserHomeDir()
86
+ path, err := render(args[0], args[1], kind, home)
87
+ if err != nil {
88
+ fmt.Fprintf(stderr, "overhaul render: %v\n", err)
89
+ return 2
90
+ }
91
+ fmt.Fprintln(stdout, path)
92
+ return 0
93
+ }
94
+
95
+ type view struct{ home string }
96
+
97
+ func (v view) redact(s string) string {
98
+ if v.home == "" || v.home == "/" {
99
+ return s
100
+ }
101
+ return strings.ReplaceAll(s, v.home, "~")
102
+ }
103
+
104
+ func empty(x any) bool {
105
+ switch t := x.(type) {
106
+ case nil:
107
+ return true
108
+ case string:
109
+ return t == ""
110
+ case []any:
111
+ return len(t) == 0
112
+ case map[string]any:
113
+ return len(t) == 0
114
+ }
115
+ return false
116
+ }
117
+
118
+ // e renders one HTML cell value.
119
+ func (v view) e(x any) string {
120
+ if empty(x) {
121
+ return `<span class="muted">not recorded</span>`
122
+ }
123
+ switch t := x.(type) {
124
+ case []any:
125
+ parts := make([]string, len(t))
126
+ for i, y := range t {
127
+ parts[i] = v.e(y)
128
+ }
129
+ return strings.Join(parts, ", ")
130
+ case map[string]any:
131
+ return esc(v.redact(pyJSON(t)))
132
+ }
133
+ s := esc(v.redact(pyStr(x)))
134
+ if flags[s] {
135
+ return `<span class="` + s + `">` + s + `</span>`
136
+ }
137
+ return s
138
+ }
139
+
140
+ // m renders one Markdown table cell value.
141
+ func (v view) m(x any) string {
142
+ if empty(x) {
143
+ return "not recorded"
144
+ }
145
+ if t, ok := x.([]any); ok {
146
+ parts := make([]string, len(t))
147
+ for i, y := range t {
148
+ parts[i] = v.m(y)
149
+ }
150
+ return strings.Join(parts, ", ")
151
+ }
152
+ return mdEsc(v.redact(pyStr(x)))
153
+ }
154
+
155
+ // pyStr mirrors Python str() of a decoded JSON value. Numbers keep their JSON
156
+ // source text; lists and objects use json.dumps(sort_keys=True) form.
157
+ func pyStr(x any) string {
158
+ switch t := x.(type) {
159
+ case nil:
160
+ return "None"
161
+ case bool:
162
+ if t {
163
+ return "True"
164
+ }
165
+ return "False"
166
+ case string:
167
+ return t
168
+ case json.Number:
169
+ return t.String()
170
+ }
171
+ return pyJSON(x)
172
+ }
173
+
174
+ // pyJSON mirrors Python json.dumps(v, sort_keys=True) (ASCII-only output).
175
+ func pyJSON(x any) string {
176
+ var b strings.Builder
177
+ var walk func(any)
178
+ walk = func(x any) {
179
+ switch t := x.(type) {
180
+ case nil:
181
+ b.WriteString("null")
182
+ case bool:
183
+ fmt.Fprint(&b, t)
184
+ case json.Number:
185
+ b.WriteString(t.String())
186
+ case string:
187
+ b.WriteByte('"')
188
+ for _, r := range t {
189
+ switch {
190
+ case r == '"' || r == '\\':
191
+ b.WriteByte('\\')
192
+ b.WriteRune(r)
193
+ case r == '\n':
194
+ b.WriteString(`\n`)
195
+ case r == '\r':
196
+ b.WriteString(`\r`)
197
+ case r == '\t':
198
+ b.WriteString(`\t`)
199
+ case r == '\b':
200
+ b.WriteString(`\b`)
201
+ case r == '\f':
202
+ b.WriteString(`\f`)
203
+ case r >= 0x20 && r <= 0x7e:
204
+ b.WriteRune(r)
205
+ case r > 0xffff:
206
+ r1, r2 := utf16.EncodeRune(r)
207
+ fmt.Fprintf(&b, `\u%04x\u%04x`, r1, r2)
208
+ default:
209
+ fmt.Fprintf(&b, `\u%04x`, r)
210
+ }
211
+ }
212
+ b.WriteByte('"')
213
+ case []any:
214
+ b.WriteByte('[')
215
+ for i, y := range t {
216
+ if i > 0 {
217
+ b.WriteString(", ")
218
+ }
219
+ walk(y)
220
+ }
221
+ b.WriteByte(']')
222
+ case map[string]any:
223
+ b.WriteByte('{')
224
+ for i, k := range sortedKeys(t) {
225
+ if i > 0 {
226
+ b.WriteString(", ")
227
+ }
228
+ walk(k)
229
+ b.WriteString(": ")
230
+ walk(t[k])
231
+ }
232
+ b.WriteByte('}')
233
+ default:
234
+ fmt.Fprint(&b, t)
235
+ }
236
+ }
237
+ walk(x)
238
+ return b.String()
239
+ }
240
+
241
+ func sortedKeys(m map[string]any) []string {
242
+ keys := make([]string, 0, len(m))
243
+ for k := range m {
244
+ keys = append(keys, k)
245
+ }
246
+ sort.Strings(keys)
247
+ return keys
248
+ }
249
+
250
+ // load reads a JSON object; a missing file is an empty object.
251
+ func load(path string) (map[string]any, error) {
252
+ m, err := ovio.LoadObject(path)
253
+ if errors.Is(err, fs.ErrNotExist) {
254
+ return map[string]any{}, nil
255
+ }
256
+ return m, err
257
+ }
258
+
259
+ // objectKeys returns the keys of the top-level object field name in document
260
+ // order: Python iterates rubric domains in JSON order, Go maps do not.
261
+ func objectKeys(path, name string) []string {
262
+ b, err := os.ReadFile(path) // #nosec G304 -- record file inside the operator-selected generation
263
+ if err != nil {
264
+ return nil
265
+ }
266
+ dec := json.NewDecoder(bytes.NewReader(b))
267
+ if _, err := dec.Token(); err != nil {
268
+ return nil
269
+ }
270
+ var skip json.RawMessage
271
+ for dec.More() {
272
+ k, err := dec.Token()
273
+ if err != nil {
274
+ return nil
275
+ }
276
+ if k != name {
277
+ if dec.Decode(&skip) != nil {
278
+ return nil
279
+ }
280
+ continue
281
+ }
282
+ if d, _ := dec.Token(); d != json.Delim('{') {
283
+ return nil
284
+ }
285
+ var keys []string
286
+ seen := map[string]bool{}
287
+ for dec.More() {
288
+ k, err := dec.Token()
289
+ if err != nil || dec.Decode(&skip) != nil {
290
+ return keys
291
+ }
292
+ if s := k.(string); !seen[s] {
293
+ seen[s] = true
294
+ keys = append(keys, s)
295
+ }
296
+ }
297
+ return keys
298
+ }
299
+ return nil
300
+ }
301
+
302
+ func objs(v any) []map[string]any {
303
+ l := ovio.List(v)
304
+ out := make([]map[string]any, len(l))
305
+ for i, x := range l {
306
+ out[i] = ovio.Obj(x)
307
+ }
308
+ return out
309
+ }
310
+
311
+ func strs(xs []string) []any {
312
+ out := make([]any, len(xs))
313
+ for i, x := range xs {
314
+ out[i] = x
315
+ }
316
+ return out
317
+ }
318
+
319
+ // sf formats with every argument converted through pyStr, like Python "%s".
320
+ func sf(format string, xs ...any) string {
321
+ for i, x := range xs {
322
+ xs[i] = pyStr(x)
323
+ }
324
+ return fmt.Sprintf(format, xs...)
325
+ }
326
+
327
+ func has(list any, s string) bool {
328
+ for _, x := range ovio.List(list) {
329
+ if y, ok := x.(string); ok && y == s {
330
+ return true
331
+ }
332
+ }
333
+ return false
334
+ }
335
+
336
+ func rowsOf(items []map[string]any, fields ...string) []row {
337
+ out := make([]row, 0, len(items))
338
+ for _, x := range items {
339
+ r := make(row, len(fields))
340
+ for i, f := range fields {
341
+ r[i] = ovio.Get(x, f)
342
+ }
343
+ out = append(out, r)
344
+ }
345
+ return out
346
+ }
347
+
348
+ func filter(xs []map[string]any, keep func(map[string]any) bool) []map[string]any {
349
+ var out []map[string]any
350
+ for _, x := range xs {
351
+ if keep(x) {
352
+ out = append(out, x)
353
+ }
354
+ }
355
+ return out
356
+ }
357
+
358
+ func pick(card map[string]any, scope string) any {
359
+ for _, r := range objs(card["thresholds"]) {
360
+ if s, ok := r["scope"].(string); ok && s == scope {
361
+ return ovio.Get(r, "value.exact")
362
+ }
363
+ }
364
+ return nil
365
+ }
366
+
367
+ func scorecardRows(rubric map[string]any, domains []string, base, sc map[string]any) ([]row, error) {
368
+ live := filter(objs(rubric["controls"]), func(c map[string]any) bool { return c != nil && c["na"] == nil })
369
+ dw, lanes, st := ovio.Obj(rubric["domains"]), ovio.Strings(rubric["lanes"]), ovio.Obj(sc["status_by_control"])
370
+ type scope struct{ name, lane, dom string }
371
+ scopes := []scope{{"global", "", ""}}
372
+ for _, d := range domains {
373
+ scopes = append(scopes, scope{"domain " + d, "", d})
374
+ }
375
+ for _, l := range lanes {
376
+ scopes = append(scopes, scope{"lane " + l, l, ""})
377
+ }
378
+ for _, l := range lanes {
379
+ for _, d := range domains {
380
+ scopes = append(scopes, scope{"lane " + l + " / " + d, l, d})
381
+ }
382
+ }
383
+ var out []row
384
+ for _, s := range scopes {
385
+ cs := filter(live, func(c map[string]any) bool {
386
+ return (s.dom == "" || c["domain"] == any(s.dom)) && (s.lane == "" || has(c["lanes"], s.lane))
387
+ })
388
+ b, c := pick(base, s.name), pick(sc, s.name)
389
+ if b == nil && c == nil {
390
+ continue
391
+ }
392
+ sum := new(big.Rat)
393
+ gaps, blockers := []any{}, []any{}
394
+ for _, ctl := range cs {
395
+ w, ok := ctl["weight"]
396
+ if !ok {
397
+ w = json.Number("0")
398
+ }
399
+ r, ok := new(big.Rat).SetString(pyStr(w))
400
+ if !ok {
401
+ return nil, fmt.Errorf("control %s: invalid weight %s", pyStr(ctl["id"]), pyStr(w))
402
+ }
403
+ sum.Add(sum, r)
404
+ status := ovio.Str(st[ovio.Str(ctl["id"])])
405
+ if status != "PASS" && status != "FAIL" {
406
+ gaps = append(gaps, ctl["id"])
407
+ }
408
+ if ovio.Truthy(ctl["hard_gate"]) && status != "PASS" {
409
+ blockers = append(blockers, ctl["id"])
410
+ }
411
+ }
412
+ var weight any
413
+ if s.dom != "" {
414
+ weight = dw[s.dom]
415
+ }
416
+ out = append(out, row{s.name, weight, sum.RatString(), b, c, gaps, blockers})
417
+ }
418
+ return out, nil
419
+ }
420
+
421
+ type built struct {
422
+ rj map[string]any
423
+ secs []section
424
+ approve, stamp string
425
+ }
426
+
427
+ func build(run, gen string) (*built, error) {
428
+ R := map[string]map[string]any{}
429
+ for _, n := range []string{"run", "coverage", "stack-profiles", "dispatch", "contracts", "findings", "evidence",
430
+ "approval", "scorecard", "scorecard-baseline", "results-baseline", "results-candidate", "cycles"} {
431
+ m, err := load(filepath.Join(gen, n+".json"))
432
+ if err != nil {
433
+ return nil, err
434
+ }
435
+ R[n] = m
436
+ }
437
+ rj := R["run"]
438
+ pr := ovio.Obj(ovio.Get(rj, "revisions.plan"))
439
+ plan, digest := map[string]any{}, "none"
440
+ if len(pr) > 0 {
441
+ p := filepath.Join(run, ovio.Str(pr["file"]))
442
+ var err error
443
+ if plan, err = load(p); err != nil {
444
+ return nil, err
445
+ }
446
+ if digest, err = ovio.SHA256File(p); err != nil {
447
+ return nil, err
448
+ }
449
+ }
450
+ rfile := ovio.Get(plan, "rubric.file")
451
+ if !ovio.Truthy(rfile) {
452
+ rfile = ovio.Get(rj, "revisions.rubric.file")
453
+ }
454
+ rubric, domains := map[string]any{}, []string(nil)
455
+ if ovio.Truthy(rfile) {
456
+ p := filepath.Join(run, pyStr(rfile))
457
+ var err error
458
+ if rubric, err = load(p); err != nil {
459
+ return nil, err
460
+ }
461
+ domains = objectKeys(p, "domains")
462
+ }
463
+ finds, att := objs(R["findings"]["findings"]), objs(R["dispatch"]["attempts"])
464
+ sc, base := R["scorecard"], R["scorecard-baseline"]
465
+ cov := objs(R["coverage"]["files"])
466
+ tasks := objs(plan["tasks"])
467
+
468
+ laneSet := set("frontend", "backend", "boundary")
469
+ for _, x := range att {
470
+ if l := ovio.Str(x["lane"]); l != "" {
471
+ laneSet[l] = true
472
+ }
473
+ }
474
+ lanes := make([]string, 0, len(laneSet))
475
+ for l := range laneSet {
476
+ lanes = append(lanes, l)
477
+ }
478
+ sort.Strings(lanes)
479
+ admitted := func(x map[string]any) bool { return ovio.Str(x["status"]) == "admitted" }
480
+ changed := map[string]any{}
481
+ for _, x := range att {
482
+ if ovio.Str(x["role"]) == "implementer" && admitted(x) {
483
+ changed[pyStr(x["task_id"])] = x["changed_paths"]
484
+ }
485
+ }
486
+ byF := map[string][]map[string]any{}
487
+ for _, t := range tasks {
488
+ for _, fid := range ovio.List(t["findings"]) {
489
+ byF[pyStr(fid)] = append(byF[pyStr(fid)], t)
490
+ }
491
+ }
492
+
493
+ var laneRows []row
494
+ for _, lane := range lanes {
495
+ xs := filter(att, func(x map[string]any) bool { return ovio.Str(x["lane"]) == lane && admitted(x) })
496
+ var windows, open []string
497
+ profSet := map[string]bool{}
498
+ for _, x := range xs {
499
+ windows = append(windows, sf("%s %s to %s", x["role"], x["started_at"], x["finished_at"]))
500
+ for _, p := range ovio.List(x["profiles"]) {
501
+ profSet[pyStr(p)] = true
502
+ }
503
+ }
504
+ var profs []string
505
+ for p := range profSet {
506
+ profs = append(profs, p)
507
+ }
508
+ sort.Strings(profs)
509
+ done, total := 0, 0
510
+ for _, c := range cov {
511
+ if !ovio.Truthy(c["eligible"]) {
512
+ continue
513
+ }
514
+ for _, r := range objs(c["ranges"]) {
515
+ ls := r["lanes"]
516
+ if !ovio.Truthy(ls) {
517
+ ls = c["lanes"]
518
+ }
519
+ if !has(ls, lane) {
520
+ continue
521
+ }
522
+ total++
523
+ if reviewed[ovio.Str(r["state"])] {
524
+ done++
525
+ } else {
526
+ open = append(open, sf("%s:%s-%s %s", c["path"], r["start"], r["end"], r["state"]))
527
+ }
528
+ }
529
+ }
530
+ laneScore := ovio.Get(ovio.Obj(ovio.Obj(sc["lanes"])[lane]), "Q.exact")
531
+ laneRows = append(laneRows, row{lane, strs(windows), strs(profs), fmt.Sprintf("%d / %d", done, total), strs(open), laneScore})
532
+ }
533
+
534
+ var result []row
535
+ for _, k := range []string{"run_id", "mode", "assessment_only", "phase", "readiness_verdict", "execution_outcome",
536
+ "identities.comparison", "identities.baseline", "identities.candidate", "capabilities", "degradation", "budget", "stop"} {
537
+ result = append(result, row{k, ovio.Get(rj, k)})
538
+ }
539
+ S := []section{
540
+ {"result", "Scope, identities and result", []string{"field", "value"}, result},
541
+ {"lane-coverage", "Lane, stack and boundary coverage", []string{"lane", "admitted reviewers and windows", "profiles",
542
+ "reviewed / eligible ranges", "open ranges", "lane score"}, laneRows},
543
+ }
544
+ for _, lane := range lanes {
545
+ var body []row
546
+ for _, x := range att {
547
+ if ovio.Str(x["lane"]) == lane {
548
+ body = append(body, row{sf("%s#%s", x["task_id"], x["attempt_id"]), x["role"], x["status"], x["profiles"],
549
+ x["started_at"], x["finished_at"], x["receipt"]})
550
+ }
551
+ }
552
+ S = append(S, section{"lane-" + unsafeID.ReplaceAllString(lane, "-"), "Lane: " + lane,
553
+ []string{"attempt", "role", "status", "profiles", "started", "finished", "receipt"}, body})
554
+ }
555
+
556
+ var covRows []row
557
+ for _, c := range cov {
558
+ var rs []string
559
+ for _, r := range objs(c["ranges"]) {
560
+ rs = append(rs, sf("%s-%s %s", r["start"], r["end"], r["state"]))
561
+ }
562
+ covRows = append(covRows, row{c["path"], c["eligible"], c["lanes"], strs(rs), ovio.Get(c, "exclusion.reason")})
563
+ }
564
+ notLead := func(f map[string]any) bool { s := ovio.Str(f["status"]); return !leads[s] && s != "rejected" }
565
+ opp := func(f map[string]any) bool { return ovio.Str(f["kind"]) == "opportunity" }
566
+ var repairs, rejected, planRows, controls, changes []row
567
+ for _, f := range finds {
568
+ for _, t := range byF[pyStr(f["id"])] {
569
+ repairs = append(repairs, row{sf("%s / %s", f["id"], t["id"]), []any{f["severity"], f["confidence"]},
570
+ f["failing_scenario"], changed[pyStr(t["id"])], t["oracle"], []any{f["status"], f["verified_by"]}, t["risk"]})
571
+ }
572
+ if ovio.Str(f["status"]) == "rejected" {
573
+ var reason any
574
+ if h := ovio.List(f["history"]); len(h) > 0 {
575
+ reason = ovio.Get(h[len(h)-1], "reason")
576
+ }
577
+ rejected = append(rejected, row{f["id"], f["title"], reason})
578
+ }
579
+ }
580
+ bench := filter(objs(R["evidence"]["items"]), func(x map[string]any) bool { return ovio.Str(x["kind"]) == "benchmark" })
581
+ var perfFields []string
582
+ for _, k := range []string{"view", "scenario", "metric", "baseline_median", "candidate_median", "absolute_delta", "ratio",
583
+ "ci95", "n", "target", "guardrails", "verdict"} {
584
+ perfFields = append(perfFields, "measurement."+k)
585
+ }
586
+ for _, t := range tasks {
587
+ planRows = append(planRows, row{t["id"], t["lane"], t["findings"], t["deps"], t["allowed_paths"], t["oracle"],
588
+ sf("%s / %s", t["benefit"], t["cost"]), t["rollback"], t["risk"], sf("%s / %s", t["writer_role"], t["verifier_role"])})
589
+ }
590
+ for _, c := range objs(rubric["controls"]) {
591
+ id := ovio.Str(c["id"])
592
+ controls = append(controls, row{c["id"], c["domain"], c["lanes"], c["weight"], c["hard_gate"],
593
+ ovio.Obj(base["status_by_control"])[id], ovio.Obj(sc["status_by_control"])[id]})
594
+ }
595
+ var scoreRows []row
596
+ for _, r := range objs(sc["thresholds"]) {
597
+ scoreRows = append(scoreRows, row{r["scope"], ovio.Get(r, "value.exact"), ovio.Get(r, "value.decimal"), r["min"], r["result"]})
598
+ }
599
+ gates := ovio.Obj(sc["gates"])
600
+ for _, g := range sortedKeys(gates) {
601
+ scoreRows = append(scoreRows, row{g, nil, nil, nil, gates[g]})
602
+ }
603
+ card, err := scorecardRows(rubric, domains, base, sc)
604
+ if err != nil {
605
+ return nil, err
606
+ }
607
+ for _, x := range filter(att, admitted) {
608
+ changes = append(changes, row{sf("%s#%s", x["task_id"], x["attempt_id"]), x["task_id"], x["changed_paths"]})
609
+ }
610
+ orNone := func(v any) string {
611
+ if ovio.Truthy(v) {
612
+ return pyStr(v)
613
+ }
614
+ return "none"
615
+ }
616
+ verdict := "not computed"
617
+ if v, ok := sc["readiness_verdict"]; ok {
618
+ verdict = pyStr(v)
619
+ }
620
+ S = append(S,
621
+ section{"coverage", "Coverage ledger", []string{"path", "eligible", "lanes", "ranges (state)", "exclusion"}, covRows},
622
+ section{"profiles", "Stack profiles", []string{"id", "revision", "status", "file", "sha256"},
623
+ rowsOf(objs(R["stack-profiles"]["profiles"]), "id", "rev", "status", "file", "sha256")},
624
+ section{"contracts", "Contracts and boundaries", []string{"id", "producer", "consumers", "version", "evidence", "open questions"},
625
+ rowsOf(objs(R["contracts"]["contracts"]), "id", "producer", "consumers", "version", "evidence", "questions")},
626
+ section{"findings", "Confirmed findings", []string{"id", "title", "kind", "severity", "status", "lanes", "locations", "failing case", "impact", "evidence"},
627
+ rowsOf(filter(finds, func(f map[string]any) bool { return notLead(f) && !opp(f) }), "id", "title", "kind",
628
+ "severity", "status", "lanes", "locations", "failing_scenario", "impact", "evidence")},
629
+ section{"opportunities", "Opportunities (not defects)", []string{"id", "title", "status", "locations", "benefit"},
630
+ rowsOf(filter(finds, func(f map[string]any) bool { return opp(f) && notLead(f) }), "id", "title", "status", "locations", "impact")},
631
+ section{"repairs", "Findings and repairs", []string{"finding / task", "severity and confidence", "previous failure", "change made",
632
+ "regression proof", "independent result", "remaining risk"}, repairs},
633
+ section{"leads", "Unvalidated leads (no severity)", []string{"id", "title", "status", "potential impact", "missing fact"},
634
+ rowsOf(filter(finds, func(f map[string]any) bool { return leads[ovio.Str(f["status"])] }), "id", "title", "status", "potential_impact", "blockers")},
635
+ section{"rejected", "Rejected candidates", []string{"id", "title", "reason"}, rejected},
636
+ section{"performance", "Performance before/after", []string{"view", "scenario", "metric", "before", "after", "delta", "ratio",
637
+ "CI 95%", "n", "target", "guardrails", "verdict"}, rowsOf(bench, perfFields...)},
638
+ section{"plan", "Repair plan revision " + orNone(plan["rev"]), []string{"task", "lane", "findings", "deps", "allowed paths",
639
+ "oracle", "benefit / cost", "rollback", "risk", "writer / verifier"}, planRows},
640
+ section{"controls", "Rubric controls (revision " + orNone(rubric["rev"]) + ")", []string{"control", "domain", "lanes", "weight",
641
+ "hard gate", "baseline", "candidate"}, controls},
642
+ section{"score", "Scorecard (verdict " + verdict + ")", []string{"scope", "exact", "decimal", "minimum", "result"}, scoreRows},
643
+ section{"scorecard", "Transparent scorecard (baseline vs candidate)", []string{"scope", "domain weight",
644
+ "applicable control weight", "baseline", "candidate", "evidence gaps", "hard blockers"}, card},
645
+ section{"approvals", "Approvals and decisions", []string{"id", "kind", "status", "plan revision", "tasks", "channel", "quote"},
646
+ rowsOf(objs(R["approval"]["events"]), "id", "kind", "status", "plan_rev", "tasks", "channel", "quote")},
647
+ section{"cycles", "Iteration history", []string{"cycle", "deficits", "hypothesis", "agents", "changes", "outcome", "scores", "next / stop"},
648
+ rowsOf(objs(R["cycles"]["cycles"]), "id", "deficits", "hypothesis", "agents", "changes", "outcome", "scores", "next")},
649
+ section{"dependencies", "Dependency decisions", []string{"dependency", "before", "after", "decision", "evidence date", "reason", "proof", "risk"},
650
+ rowsOf(objs(R["stack-profiles"]["dependencies"]), "name", "before", "after", "decision", "evidence_date", "reason", "proof", "risk")},
651
+ section{"changes", "Changed paths", []string{"attempt", "task", "paths"}, changes},
652
+ section{"questions", "Open questions and remaining work", []string{"id", "question", "blocks", "status"},
653
+ rowsOf(objs(rj["questions"]), "id", "text", "blocks", "status")},
654
+ )
655
+
656
+ approve := ""
657
+ if len(pr) > 0 && !ovio.Truthy(rj["assessment_only"]) {
658
+ ids := make([]string, len(tasks))
659
+ for i, t := range tasks {
660
+ if id, ok := t["id"]; ok {
661
+ ids[i] = pyStr(id)
662
+ }
663
+ }
664
+ approve = sf("Approve overhaul %s plan revision %s, digest %s, tasks %s. Keep all listed constraints and exclusions.",
665
+ rj["run_id"], pr["rev"], digest, strings.Join(ids, " "))
666
+ }
667
+ planStamp := "none"
668
+ if len(pr) > 0 {
669
+ planStamp = sf("r%s:%s", pr["rev"], digest)
670
+ }
671
+ stamp := sf("overhaul-stamp run=%s generation=%s plan=%s", rj["run_id"],
672
+ strings.ReplaceAll(filepath.Base(strings.TrimRight(gen, "/")), ".tmp", ""), planStamp)
673
+ return &built{rj, S, approve, stamp}, nil
674
+ }
675
+
676
+ func mdTable(v view, cols []string, body []row) []string {
677
+ out := []string{"| " + strings.Join(cols, " | ") + " |", "|" + strings.Repeat("---|", len(cols))}
678
+ for _, r := range body {
679
+ cells := make([]string, len(r))
680
+ for i, x := range r {
681
+ cells[i] = v.m(x)
682
+ }
683
+ out = append(out, "| "+strings.Join(cells, " | ")+" |")
684
+ }
685
+ return out
686
+ }
687
+
688
+ func render(run, gen, kind, home string) (string, error) {
689
+ b, err := build(run, gen)
690
+ if err != nil {
691
+ return "", err
692
+ }
693
+ v := view{home}
694
+ vd := filepath.Join(gen, "views")
695
+ if err := os.MkdirAll(vd, 0o755); err != nil {
696
+ return "", err
697
+ }
698
+ runID := pyStr(b.rj["run_id"])
699
+ if kind == "review" {
700
+ for _, s := range b.secs {
701
+ if s.anchor != "plan" || len(s.body) == 0 {
702
+ continue
703
+ }
704
+ lines := append([]string{"<!-- " + b.stamp + " -->", "# Overhaul plan " + runID, ""}, mdTable(v, s.cols, s.body)...)
705
+ if b.approve != "" {
706
+ lines = append(lines, "", "```text", b.approve, "```")
707
+ }
708
+ if err := os.WriteFile(filepath.Join(vd, "plan.md"), []byte(strings.Join(lines, "\n")+"\n"), 0o644); err != nil {
709
+ return "", err
710
+ }
711
+ }
712
+ }
713
+ sum := sha256.Sum256([]byte(css))
714
+ csp := "default-src 'none'; style-src 'sha256-" + base64.StdEncoding.EncodeToString(sum[:]) +
715
+ "'; img-src data:; base-uri 'none'; form-action 'none'"
716
+ title := "Overhaul " + kind + " " + runID
717
+ var nav strings.Builder
718
+ for _, s := range b.secs {
719
+ fmt.Fprintf(&nav, `<li><a href="#%s">%s</a></li>`, esc(s.anchor), esc(s.heading))
720
+ }
721
+ out := []string{`<!doctype html><html lang="en"><head><meta charset="utf-8">`,
722
+ `<meta http-equiv="Content-Security-Policy" content="` + csp + `">`,
723
+ `<meta name="viewport" content="width=device-width,initial-scale=1">`,
724
+ "<title>" + esc(title) + "</title><style>" + css + "</style></head><body>",
725
+ // Escaped (unlike the Python recipe) so a hostile run id cannot close the comment.
726
+ "<!-- " + esc(b.stamp) + " -->", `<a class="skip" href="#main">Skip to content</a>`,
727
+ `<header><h1>` + esc(title) + `</h1><p class="muted"><code>` + esc(b.stamp) + `</code></p></header>`,
728
+ `<nav aria-label="Sections"><ul>` + nav.String() + "</ul></nav>",
729
+ `<main id="main">`}
730
+ md := []string{"<!-- " + b.stamp + " -->", "# " + title, "", "`" + b.stamp + "`", ""}
731
+ summary := sf("Outcome %s · verdict %s · phase %s", b.rj["execution_outcome"], b.rj["readiness_verdict"], b.rj["phase"])
732
+ out = append(out, `<p role="status"><strong>`+esc(summary)+`</strong></p>`)
733
+ md = append(md, "**"+v.m(summary)+"**", "")
734
+ if kind == "review" && b.approve != "" {
735
+ out = append(out, `<section id="decide"><h2>Decision</h2><p>Nothing on this page approves anything. Copy a message into the `+
736
+ `conversation with the agent; only your message there counts. Edit the task list to approve a subset, or `+
737
+ `reply with rejections, deferrals or questions per task ID.</p><label for="ap">Approval message</label>`+
738
+ `<textarea id="ap" readonly>`+esc(b.approve)+`</textarea></section>`)
739
+ md = append(md, "## Decision", "", "Only a message you send in the conversation counts. Approval text:", "", "```text", b.approve, "```", "")
740
+ }
741
+ for _, s := range b.secs {
742
+ out = append(out, `<section id="`+esc(s.anchor)+`"><h2>`+esc(s.heading)+`</h2>`)
743
+ md = append(md, "## "+v.m(s.heading), "")
744
+ if len(s.body) == 0 {
745
+ out = append(out, `<p class="muted">No records.</p></section>`)
746
+ md = append(md, "No records.", "")
747
+ continue
748
+ }
749
+ var th strings.Builder
750
+ for _, c := range s.cols {
751
+ th.WriteString(`<th scope="col">` + esc(c) + `</th>`)
752
+ }
753
+ out = append(out, `<div class="scroll" role="region" tabindex="0" aria-label="`+esc(s.heading)+`"><table><caption>`+
754
+ esc(s.heading)+`</caption><thead><tr>`+th.String()+`</tr></thead><tbody>`)
755
+ for _, r := range s.body {
756
+ id := ""
757
+ if first := pyStr(r[0]); rowID.MatchString(first) {
758
+ id = ` id="` + esc(first) + `"`
759
+ }
760
+ var td strings.Builder
761
+ for _, x := range r {
762
+ td.WriteString("<td>" + v.e(x) + "</td>")
763
+ }
764
+ out = append(out, "<tr"+id+">"+td.String()+"</tr>")
765
+ }
766
+ out = append(out, "</tbody></table></div></section>")
767
+ md = append(append(md, mdTable(v, s.cols, s.body)...), "")
768
+ }
769
+ out = append(out, "</main></body></html>")
770
+ for ext, text := range map[string][]string{"html": out, "md": md} {
771
+ if err := os.WriteFile(filepath.Join(vd, kind+"."+ext), []byte(strings.Join(text, "\n")+"\n"), 0o644); err != nil {
772
+ return "", err
773
+ }
774
+ }
775
+ return filepath.Join(vd, kind+".html"), nil
776
+ }