devrites 5.13.0 → 5.14.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 (819) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +330 -335
  3. package/bin/devrites.mjs +1 -1
  4. package/docs/adr/0031-overhaul-agents-keep-every-tool.md +52 -0
  5. package/docs/adr/0032-single-lint-gate-and-cached-pr-tests.md +60 -0
  6. package/docs/adr/README.md +3 -1
  7. package/docs/architecture.md +2 -1
  8. package/docs/command-map.md +1 -1
  9. package/docs/engine/commands.md +11 -1
  10. package/docs/orchestration.md +3 -1
  11. package/docs/skills.md +5 -2
  12. package/engine/.golangci.yml +56 -4
  13. package/engine/AGENTS.md +3 -3
  14. package/engine/Makefile +7 -23
  15. package/engine/go.mod +1 -1
  16. package/engine/internal/devritespaths/paths.go +2 -0
  17. package/engine/internal/hostpack/hostpack.go +6 -1
  18. package/engine/internal/hostpack/hostpack_test.go +2 -0
  19. package/engine/internal/install/binary.go +4 -0
  20. package/engine/internal/install/install_test.go +23 -0
  21. package/engine/internal/overhaul/admit/admit_test.go +25 -0
  22. package/engine/internal/overhaul/admit/run.go +13 -1
  23. package/engine/internal/overhaul/overhaul.go +1 -0
  24. package/engine/internal/overhaul/records/check.go +24 -0
  25. package/engine/internal/overhaul/records/init.go +132 -0
  26. package/engine/internal/overhaul/records/init_test.go +96 -0
  27. package/engine/internal/overhaul/records/records_test.go +35 -1
  28. package/engine/internal/overhaul/records/run.go +8 -0
  29. package/engine/internal/overhaul/render/run.go +518 -60
  30. package/engine/internal/overhaul/render/run_test.go +176 -7
  31. package/engine/internal/overhaul/render/visual.go +617 -0
  32. package/engine/internal/overhaul/snapshot/run.go +52 -5
  33. package/engine/internal/overhaul/snapshot/run_test.go +24 -2
  34. package/pack/.claude/agents/_shared/composition-overhaul.md +1 -0
  35. package/pack/.claude/agents/_shared/result-admission.md +3 -1
  36. package/pack/.claude/agents/devrites-code-reviewer.md +17 -7
  37. package/pack/.claude/agents/devrites-devex-reviewer.md +5 -5
  38. package/pack/.claude/agents/devrites-doubt-reviewer.md +6 -3
  39. package/pack/.claude/agents/devrites-evidence-scout.md +10 -0
  40. package/pack/.claude/agents/devrites-frontend-reviewer.md +34 -20
  41. package/pack/.claude/agents/devrites-performance-reviewer.md +29 -11
  42. package/pack/.claude/agents/devrites-plan-reviewer.md +8 -5
  43. package/pack/.claude/agents/devrites-proof-runner.md +20 -4
  44. package/pack/.claude/agents/devrites-retrospector.md +18 -3
  45. package/pack/.claude/agents/devrites-security-auditor.md +32 -26
  46. package/pack/.claude/agents/devrites-simplifier-reviewer.md +4 -4
  47. package/pack/.claude/agents/devrites-spec-reviewer.md +4 -2
  48. package/pack/.claude/agents/devrites-strategy-reviewer.md +11 -8
  49. package/pack/.claude/agents/devrites-test-analyst.md +8 -5
  50. package/pack/.claude/agents/devrites-upgrade-planner.md +3 -0
  51. package/pack/{generated/codex/skills/overhaul/roles/backend-engineer.md → .claude/agents/overhaul-backend-engineer.md} +13 -7
  52. package/pack/{generated/codex/skills/overhaul/roles/boundary.md → .claude/agents/overhaul-boundary.md} +12 -6
  53. package/pack/{generated/codex/skills/overhaul/roles/craft.md → .claude/agents/overhaul-craft.md} +12 -6
  54. package/pack/.claude/{skills/overhaul/roles/frontend-engineer.md → agents/overhaul-frontend-engineer.md} +13 -7
  55. package/pack/{generated/claude/skills/overhaul/roles/implementer.md → .claude/agents/overhaul-implementer.md} +11 -5
  56. package/pack/{generated/codex/skills/overhaul/roles/recon.md → .claude/agents/overhaul-recon.md} +26 -12
  57. package/pack/{generated/codex/skills/overhaul/roles/specialist.md → .claude/agents/overhaul-specialist.md} +14 -8
  58. package/pack/{generated/claude/skills/overhaul/roles/verifier.md → .claude/agents/overhaul-verifier.md} +15 -4
  59. package/pack/.claude/skills/devrites-audit/SKILL.md +2 -1
  60. package/pack/.claude/skills/devrites-browser-proof/SKILL.md +13 -2
  61. package/pack/.claude/skills/devrites-browser-proof/reference/browser-performance.md +7 -4
  62. package/pack/.claude/skills/devrites-browser-proof/reference/visual-verdict.md +14 -10
  63. package/pack/.claude/skills/devrites-frontend-craft/SKILL.md +4 -3
  64. package/pack/.claude/skills/devrites-frontend-craft/reference/quality-standards.md +22 -32
  65. package/pack/.claude/skills/devrites-lib/reference/intent-map.md +25 -5
  66. package/pack/.claude/skills/devrites-lib/reference/orchestration-profiles.md +1 -2
  67. package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +60 -8
  68. package/pack/.claude/skills/devrites-lib/reference/reply-contract.md +21 -6
  69. package/pack/.claude/skills/devrites-lib/reference/standards/README.md +0 -1
  70. package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +9 -16
  71. package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +34 -2
  72. package/pack/.claude/skills/devrites-lib/reference/standards/audit-coverage.md +5 -1
  73. package/pack/.claude/skills/devrites-lib/reference/standards/browser-proof-checklist.md +14 -3
  74. package/pack/.claude/skills/devrites-lib/reference/standards/code-navigation.md +8 -2
  75. package/pack/.claude/skills/devrites-lib/reference/standards/code-review.md +11 -4
  76. package/pack/.claude/skills/devrites-lib/reference/standards/context-hygiene.md +17 -6
  77. package/pack/.claude/skills/devrites-lib/reference/standards/core.md +16 -7
  78. package/pack/.claude/skills/devrites-lib/reference/standards/definition-of-done.md +1 -1
  79. package/pack/.claude/skills/devrites-lib/reference/standards/developer-experience.md +3 -1
  80. package/pack/.claude/skills/devrites-lib/reference/standards/duplicate-code.md +11 -0
  81. package/pack/.claude/skills/devrites-lib/reference/standards/gates.md +16 -1
  82. package/pack/.claude/skills/devrites-lib/reference/standards/performance.md +11 -0
  83. package/pack/.claude/skills/devrites-lib/reference/standards/prose-style.md +4 -3
  84. package/pack/.claude/skills/devrites-lib/reference/standards/review/README.md +6 -1
  85. package/pack/.claude/skills/devrites-lib/reference/standards/review/react.md +55 -0
  86. package/pack/.claude/skills/devrites-lib/reference/standards/review/stack-profile.md +155 -0
  87. package/pack/.claude/skills/devrites-lib/reference/standards/review/ts-js.md +22 -2
  88. package/pack/.claude/skills/devrites-lib/reference/standards/security-checklist.md +6 -3
  89. package/pack/.claude/skills/devrites-lib/reference/standards/security.md +35 -17
  90. package/pack/.claude/skills/devrites-lib/reference/standards/skill-authoring.md +8 -12
  91. package/pack/.claude/skills/devrites-lib/reference/standards/spec-grammar.md +4 -1
  92. package/pack/.claude/skills/devrites-lib/reference/standards/testing.md +36 -0
  93. package/pack/.claude/skills/devrites-lib/reference/standards/tooling.md +22 -2
  94. package/pack/.claude/skills/devrites-lib/reference/standards/verification-methods.md +33 -0
  95. package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +1 -1
  96. package/pack/.claude/skills/devrites-prose-craft/SKILL.md +9 -3
  97. package/pack/.claude/skills/devrites-prose-craft/reference/examples.md +11 -6
  98. package/pack/.claude/skills/overhaul/SKILL.md +53 -34
  99. package/pack/.claude/skills/overhaul/references/audit-domains.md +2 -2
  100. package/pack/.claude/skills/overhaul/references/lifecycle.md +6 -2
  101. package/pack/.claude/skills/overhaul/references/orchestration.md +37 -25
  102. package/pack/.claude/skills/overhaul/references/records.md +16 -3
  103. package/pack/.claude/skills/overhaul/references/review-and-report.md +3 -1
  104. package/pack/.claude/skills/overhaul/references/scope-and-safety.md +47 -20
  105. package/pack/.claude/skills/rite-adopt/SKILL.md +5 -2
  106. package/pack/.claude/skills/rite-adopt/reference/adoption.md +6 -0
  107. package/pack/.claude/skills/rite-adopt/reference/anti-patterns.md +1 -1
  108. package/pack/.claude/skills/rite-autocomplete/SKILL.md +2 -1
  109. package/pack/.claude/skills/rite-autocomplete/reference/loop.md +3 -1
  110. package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +6 -0
  111. package/pack/.claude/skills/rite-build/reference/checkpoint-protocol.md +8 -16
  112. package/pack/.claude/skills/rite-build/reference/parallel-batch.md +9 -0
  113. package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +5 -1
  114. package/pack/.claude/skills/rite-clarify/SKILL.md +1 -1
  115. package/pack/.claude/skills/rite-converge/SKILL.md +9 -2
  116. package/pack/.claude/skills/rite-converge/reference/convergence-assessment.md +5 -0
  117. package/pack/.claude/skills/rite-define/SKILL.md +6 -1
  118. package/pack/.claude/skills/rite-define/reference/plan-template.md +4 -0
  119. package/pack/.claude/skills/rite-doctor/SKILL.md +6 -2
  120. package/pack/.claude/skills/rite-handoff/SKILL.md +14 -2
  121. package/pack/.claude/skills/rite-handoff/reference/handoff-template.md +16 -4
  122. package/pack/.claude/skills/rite-learn/SKILL.md +34 -4
  123. package/pack/.claude/skills/rite-plan/SKILL.md +2 -1
  124. package/pack/.claude/skills/rite-plan/reference/task-breakdown.md +6 -0
  125. package/pack/.claude/skills/rite-polish/SKILL.md +10 -4
  126. package/pack/.claude/skills/rite-polish/reference/anti-ai-slop.md +59 -36
  127. package/pack/.claude/skills/rite-polish/reference/harden-checklist.md +2 -1
  128. package/pack/.claude/skills/rite-polish/reference/ui.md +12 -3
  129. package/pack/.claude/skills/rite-pov/SKILL.md +14 -3
  130. package/pack/.claude/skills/rite-pr-feedback/SKILL.md +5 -1
  131. package/pack/.claude/skills/rite-pressure-test/SKILL.md +5 -3
  132. package/pack/.claude/skills/rite-prove/SKILL.md +12 -4
  133. package/pack/.claude/skills/rite-prove/reference/anti-patterns.md +1 -1
  134. package/pack/.claude/skills/rite-prove/reference/failure-triage.md +12 -3
  135. package/pack/.claude/skills/rite-quick/SKILL.md +2 -0
  136. package/pack/.claude/skills/rite-resolve/SKILL.md +7 -1
  137. package/pack/.claude/skills/rite-resolve/reference/answer-protocol.md +1 -1
  138. package/pack/.claude/skills/rite-review/SKILL.md +4 -1
  139. package/pack/.claude/skills/rite-review/reference/performance-checklist.md +9 -1
  140. package/pack/.claude/skills/rite-seal/SKILL.md +5 -3
  141. package/pack/.claude/skills/rite-seal/reference/anti-patterns.md +1 -1
  142. package/pack/.claude/skills/rite-seal/reference/phase-contract.md +1 -1
  143. package/pack/.claude/skills/rite-spec/SKILL.md +12 -4
  144. package/pack/.claude/skills/rite-spec/reference/spec-template.md +4 -2
  145. package/pack/.claude/skills/rite-spec/reference/state-workspace.md +3 -0
  146. package/pack/.claude/skills/rite-status/SKILL.md +11 -3
  147. package/pack/.claude/skills/rite-upgrade/SKILL.md +7 -1
  148. package/pack/.claude/skills/rite-vet/SKILL.md +4 -2
  149. package/pack/.claude/skills/rite-zoom-out/SKILL.md +5 -0
  150. package/pack/generated/README.md +2 -2
  151. package/pack/generated/claude/agents/devrites-code-reviewer.md +19 -5
  152. package/pack/generated/claude/agents/devrites-devex-reviewer.md +7 -3
  153. package/pack/generated/claude/agents/devrites-doubt-reviewer.md +8 -1
  154. package/pack/generated/claude/agents/devrites-evidence-scout.md +14 -0
  155. package/pack/generated/claude/agents/devrites-frontend-reviewer.md +36 -18
  156. package/pack/generated/claude/agents/devrites-performance-reviewer.md +31 -9
  157. package/pack/generated/claude/agents/devrites-plan-reviewer.md +10 -3
  158. package/pack/generated/claude/agents/devrites-proof-runner.md +24 -4
  159. package/pack/generated/claude/agents/devrites-retrospector.md +22 -3
  160. package/pack/generated/claude/agents/devrites-security-auditor.md +34 -24
  161. package/pack/generated/claude/agents/devrites-simplifier-reviewer.md +6 -2
  162. package/pack/generated/claude/agents/devrites-spec-reviewer.md +8 -2
  163. package/pack/generated/claude/agents/devrites-strategy-reviewer.md +13 -6
  164. package/pack/generated/claude/agents/devrites-test-analyst.md +10 -3
  165. package/pack/generated/claude/agents/devrites-upgrade-planner.md +7 -0
  166. package/pack/{.claude/skills/overhaul/roles/backend-engineer.md → generated/claude/agents/overhaul-backend-engineer.md} +13 -7
  167. package/pack/generated/claude/{skills/overhaul/roles/boundary.md → agents/overhaul-boundary.md} +12 -6
  168. package/pack/generated/claude/{skills/overhaul/roles/craft.md → agents/overhaul-craft.md} +12 -6
  169. package/pack/generated/{codex/skills/overhaul/roles/frontend-engineer.md → claude/agents/overhaul-frontend-engineer.md} +13 -7
  170. package/pack/generated/{codex/skills/overhaul/roles/implementer.md → claude/agents/overhaul-implementer.md} +11 -5
  171. package/pack/generated/claude/{skills/overhaul/roles/recon.md → agents/overhaul-recon.md} +26 -12
  172. package/pack/generated/claude/{skills/overhaul/roles/specialist.md → agents/overhaul-specialist.md} +14 -8
  173. package/pack/generated/{codex/skills/overhaul/roles/verifier.md → claude/agents/overhaul-verifier.md} +15 -4
  174. package/pack/generated/claude/skills/devrites-audit/SKILL.md +2 -1
  175. package/pack/generated/claude/skills/devrites-browser-proof/SKILL.md +13 -2
  176. package/pack/generated/claude/skills/devrites-browser-proof/reference/browser-performance.md +7 -4
  177. package/pack/generated/claude/skills/devrites-browser-proof/reference/visual-verdict.md +14 -10
  178. package/pack/generated/claude/skills/devrites-frontend-craft/SKILL.md +4 -3
  179. package/pack/generated/claude/skills/devrites-frontend-craft/reference/quality-standards.md +22 -32
  180. package/pack/generated/claude/skills/devrites-lib/reference/intent-map.md +25 -5
  181. package/pack/generated/claude/skills/devrites-lib/reference/orchestration-profiles.md +1 -2
  182. package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +60 -8
  183. package/pack/generated/claude/skills/devrites-lib/reference/reply-contract.md +21 -6
  184. package/pack/generated/claude/skills/devrites-lib/reference/standards/README.md +0 -1
  185. package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +9 -16
  186. package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +34 -2
  187. package/pack/generated/claude/skills/devrites-lib/reference/standards/audit-coverage.md +5 -1
  188. package/pack/generated/claude/skills/devrites-lib/reference/standards/browser-proof-checklist.md +14 -3
  189. package/pack/generated/claude/skills/devrites-lib/reference/standards/code-navigation.md +8 -2
  190. package/pack/generated/claude/skills/devrites-lib/reference/standards/code-review.md +11 -4
  191. package/pack/generated/claude/skills/devrites-lib/reference/standards/context-hygiene.md +17 -6
  192. package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +16 -7
  193. package/pack/generated/claude/skills/devrites-lib/reference/standards/definition-of-done.md +1 -1
  194. package/pack/generated/claude/skills/devrites-lib/reference/standards/developer-experience.md +3 -1
  195. package/pack/generated/claude/skills/devrites-lib/reference/standards/duplicate-code.md +11 -0
  196. package/pack/generated/claude/skills/devrites-lib/reference/standards/gates.md +16 -1
  197. package/pack/generated/claude/skills/devrites-lib/reference/standards/performance.md +11 -0
  198. package/pack/generated/claude/skills/devrites-lib/reference/standards/prose-style.md +4 -3
  199. package/pack/generated/claude/skills/devrites-lib/reference/standards/review/README.md +6 -1
  200. package/pack/generated/claude/skills/devrites-lib/reference/standards/review/react.md +55 -0
  201. package/pack/generated/claude/skills/devrites-lib/reference/standards/review/stack-profile.md +155 -0
  202. package/pack/generated/claude/skills/devrites-lib/reference/standards/review/ts-js.md +22 -2
  203. package/pack/generated/claude/skills/devrites-lib/reference/standards/security-checklist.md +6 -3
  204. package/pack/generated/claude/skills/devrites-lib/reference/standards/security.md +35 -17
  205. package/pack/generated/claude/skills/devrites-lib/reference/standards/skill-authoring.md +8 -12
  206. package/pack/generated/claude/skills/devrites-lib/reference/standards/spec-grammar.md +4 -1
  207. package/pack/generated/claude/skills/devrites-lib/reference/standards/testing.md +36 -0
  208. package/pack/generated/claude/skills/devrites-lib/reference/standards/tooling.md +22 -2
  209. package/pack/generated/claude/skills/devrites-lib/reference/standards/verification-methods.md +33 -0
  210. package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +1 -1
  211. package/pack/generated/claude/skills/devrites-prose-craft/SKILL.md +9 -3
  212. package/pack/generated/claude/skills/devrites-prose-craft/reference/examples.md +11 -6
  213. package/pack/generated/claude/skills/overhaul/SKILL.md +53 -34
  214. package/pack/generated/claude/skills/overhaul/references/audit-domains.md +2 -2
  215. package/pack/generated/claude/skills/overhaul/references/lifecycle.md +6 -2
  216. package/pack/generated/claude/skills/overhaul/references/orchestration.md +37 -25
  217. package/pack/generated/claude/skills/overhaul/references/records.md +16 -3
  218. package/pack/generated/claude/skills/overhaul/references/review-and-report.md +3 -1
  219. package/pack/generated/claude/skills/overhaul/references/scope-and-safety.md +47 -20
  220. package/pack/generated/claude/skills/rite-adopt/SKILL.md +5 -2
  221. package/pack/generated/claude/skills/rite-adopt/reference/adoption.md +6 -0
  222. package/pack/generated/claude/skills/rite-adopt/reference/anti-patterns.md +1 -1
  223. package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +2 -1
  224. package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +3 -1
  225. package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +6 -0
  226. package/pack/generated/claude/skills/rite-build/reference/checkpoint-protocol.md +8 -16
  227. package/pack/generated/claude/skills/rite-build/reference/parallel-batch.md +9 -0
  228. package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +5 -1
  229. package/pack/generated/claude/skills/rite-clarify/SKILL.md +1 -1
  230. package/pack/generated/claude/skills/rite-converge/SKILL.md +9 -2
  231. package/pack/generated/claude/skills/rite-converge/reference/convergence-assessment.md +5 -0
  232. package/pack/generated/claude/skills/rite-define/SKILL.md +6 -1
  233. package/pack/generated/claude/skills/rite-define/reference/plan-template.md +4 -0
  234. package/pack/generated/claude/skills/rite-doctor/SKILL.md +6 -2
  235. package/pack/generated/claude/skills/rite-handoff/SKILL.md +14 -2
  236. package/pack/generated/claude/skills/rite-handoff/reference/handoff-template.md +16 -4
  237. package/pack/generated/claude/skills/rite-learn/SKILL.md +34 -4
  238. package/pack/generated/claude/skills/rite-plan/SKILL.md +2 -1
  239. package/pack/generated/claude/skills/rite-plan/reference/task-breakdown.md +6 -0
  240. package/pack/generated/claude/skills/rite-polish/SKILL.md +10 -4
  241. package/pack/generated/claude/skills/rite-polish/reference/anti-ai-slop.md +59 -36
  242. package/pack/generated/claude/skills/rite-polish/reference/harden-checklist.md +2 -1
  243. package/pack/generated/claude/skills/rite-polish/reference/ui.md +12 -3
  244. package/pack/generated/claude/skills/rite-pov/SKILL.md +14 -3
  245. package/pack/generated/claude/skills/rite-pr-feedback/SKILL.md +5 -1
  246. package/pack/generated/claude/skills/rite-pressure-test/SKILL.md +5 -3
  247. package/pack/generated/claude/skills/rite-prove/SKILL.md +12 -4
  248. package/pack/generated/claude/skills/rite-prove/reference/anti-patterns.md +1 -1
  249. package/pack/generated/claude/skills/rite-prove/reference/failure-triage.md +12 -3
  250. package/pack/generated/claude/skills/rite-quick/SKILL.md +2 -0
  251. package/pack/generated/claude/skills/rite-resolve/SKILL.md +7 -1
  252. package/pack/generated/claude/skills/rite-resolve/reference/answer-protocol.md +1 -1
  253. package/pack/generated/claude/skills/rite-review/SKILL.md +4 -1
  254. package/pack/generated/claude/skills/rite-review/reference/performance-checklist.md +9 -1
  255. package/pack/generated/claude/skills/rite-seal/SKILL.md +5 -3
  256. package/pack/generated/claude/skills/rite-seal/reference/anti-patterns.md +1 -1
  257. package/pack/generated/claude/skills/rite-seal/reference/phase-contract.md +1 -1
  258. package/pack/generated/claude/skills/rite-spec/SKILL.md +12 -4
  259. package/pack/generated/claude/skills/rite-spec/reference/spec-template.md +4 -2
  260. package/pack/generated/claude/skills/rite-spec/reference/state-workspace.md +3 -0
  261. package/pack/generated/claude/skills/rite-status/SKILL.md +11 -3
  262. package/pack/generated/claude/skills/rite-upgrade/SKILL.md +7 -1
  263. package/pack/generated/claude/skills/rite-vet/SKILL.md +4 -2
  264. package/pack/generated/claude/skills/rite-zoom-out/SKILL.md +5 -0
  265. package/pack/generated/codex/AGENTS.md +1 -0
  266. package/pack/generated/codex/agents/devrites-code-reviewer.toml +19 -5
  267. package/pack/generated/codex/agents/devrites-devex-reviewer.toml +7 -3
  268. package/pack/generated/codex/agents/devrites-doubt-reviewer.toml +8 -1
  269. package/pack/generated/codex/agents/devrites-evidence-scout.toml +14 -0
  270. package/pack/generated/codex/agents/devrites-frontend-reviewer.toml +36 -18
  271. package/pack/generated/codex/agents/devrites-performance-reviewer.toml +31 -9
  272. package/pack/generated/codex/agents/devrites-plan-reviewer.toml +10 -3
  273. package/pack/generated/codex/agents/devrites-proof-runner.toml +24 -4
  274. package/pack/generated/codex/agents/devrites-retrospector.toml +22 -3
  275. package/pack/generated/codex/agents/devrites-security-auditor.toml +34 -24
  276. package/pack/generated/codex/agents/devrites-simplifier-reviewer.toml +6 -2
  277. package/pack/generated/codex/agents/devrites-spec-reviewer.toml +8 -2
  278. package/pack/generated/codex/agents/devrites-strategy-reviewer.toml +13 -6
  279. package/pack/generated/codex/agents/devrites-test-analyst.toml +10 -3
  280. package/pack/generated/codex/agents/devrites-upgrade-planner.toml +7 -0
  281. package/pack/generated/{devin/skills/overhaul/roles/backend-engineer.md → codex/agents/overhaul-backend-engineer.toml} +15 -7
  282. package/pack/{.claude/skills/overhaul/roles/boundary.md → generated/codex/agents/overhaul-boundary.toml} +14 -6
  283. package/pack/generated/{devin/skills/overhaul/roles/craft.md → codex/agents/overhaul-craft.toml} +14 -6
  284. package/pack/generated/{claude/skills/overhaul/roles/frontend-engineer.md → codex/agents/overhaul-frontend-engineer.toml} +15 -7
  285. package/pack/generated/{devin/skills/overhaul/roles/implementer.md → codex/agents/overhaul-implementer.toml} +13 -5
  286. package/pack/generated/{devin/skills/overhaul/roles/recon.md → codex/agents/overhaul-recon.toml} +28 -12
  287. package/pack/generated/{devin/skills/overhaul/roles/specialist.md → codex/agents/overhaul-specialist.toml} +16 -8
  288. package/pack/{.claude/skills/overhaul/roles/verifier.md → generated/codex/agents/overhaul-verifier.toml} +17 -4
  289. package/pack/generated/codex/skills/devrites-audit/SKILL.md +2 -1
  290. package/pack/generated/codex/skills/devrites-browser-proof/SKILL.md +13 -2
  291. package/pack/generated/codex/skills/devrites-browser-proof/reference/browser-performance.md +7 -4
  292. package/pack/generated/codex/skills/devrites-browser-proof/reference/visual-verdict.md +14 -10
  293. package/pack/generated/codex/skills/devrites-frontend-craft/SKILL.md +4 -3
  294. package/pack/generated/codex/skills/devrites-frontend-craft/reference/quality-standards.md +22 -32
  295. package/pack/generated/codex/skills/devrites-lib/reference/intent-map.md +25 -5
  296. package/pack/generated/codex/skills/devrites-lib/reference/orchestration-profiles.md +1 -2
  297. package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +60 -8
  298. package/pack/generated/codex/skills/devrites-lib/reference/reply-contract.md +21 -6
  299. package/pack/generated/codex/skills/devrites-lib/reference/standards/README.md +0 -1
  300. package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +9 -16
  301. package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +34 -2
  302. package/pack/generated/codex/skills/devrites-lib/reference/standards/audit-coverage.md +5 -1
  303. package/pack/generated/codex/skills/devrites-lib/reference/standards/browser-proof-checklist.md +14 -3
  304. package/pack/generated/codex/skills/devrites-lib/reference/standards/code-navigation.md +8 -2
  305. package/pack/generated/codex/skills/devrites-lib/reference/standards/code-review.md +11 -4
  306. package/pack/generated/codex/skills/devrites-lib/reference/standards/context-hygiene.md +17 -6
  307. package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +16 -7
  308. package/pack/generated/codex/skills/devrites-lib/reference/standards/definition-of-done.md +1 -1
  309. package/pack/generated/codex/skills/devrites-lib/reference/standards/developer-experience.md +3 -1
  310. package/pack/generated/codex/skills/devrites-lib/reference/standards/duplicate-code.md +11 -0
  311. package/pack/generated/codex/skills/devrites-lib/reference/standards/gates.md +16 -1
  312. package/pack/generated/codex/skills/devrites-lib/reference/standards/performance.md +11 -0
  313. package/pack/generated/codex/skills/devrites-lib/reference/standards/prose-style.md +4 -3
  314. package/pack/generated/codex/skills/devrites-lib/reference/standards/review/README.md +6 -1
  315. package/pack/generated/codex/skills/devrites-lib/reference/standards/review/react.md +55 -0
  316. package/pack/generated/codex/skills/devrites-lib/reference/standards/review/stack-profile.md +155 -0
  317. package/pack/generated/codex/skills/devrites-lib/reference/standards/review/ts-js.md +22 -2
  318. package/pack/generated/codex/skills/devrites-lib/reference/standards/security-checklist.md +6 -3
  319. package/pack/generated/codex/skills/devrites-lib/reference/standards/security.md +35 -17
  320. package/pack/generated/codex/skills/devrites-lib/reference/standards/skill-authoring.md +8 -12
  321. package/pack/generated/codex/skills/devrites-lib/reference/standards/spec-grammar.md +4 -1
  322. package/pack/generated/codex/skills/devrites-lib/reference/standards/testing.md +36 -0
  323. package/pack/generated/codex/skills/devrites-lib/reference/standards/tooling.md +22 -2
  324. package/pack/generated/codex/skills/devrites-lib/reference/standards/verification-methods.md +33 -0
  325. package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +1 -1
  326. package/pack/generated/codex/skills/devrites-prose-craft/SKILL.md +9 -3
  327. package/pack/generated/codex/skills/devrites-prose-craft/reference/examples.md +11 -6
  328. package/pack/generated/codex/skills/overhaul/SKILL.md +53 -34
  329. package/pack/generated/codex/skills/overhaul/references/audit-domains.md +2 -2
  330. package/pack/generated/codex/skills/overhaul/references/lifecycle.md +6 -2
  331. package/pack/generated/codex/skills/overhaul/references/orchestration.md +37 -25
  332. package/pack/generated/codex/skills/overhaul/references/records.md +16 -3
  333. package/pack/generated/codex/skills/overhaul/references/review-and-report.md +3 -1
  334. package/pack/generated/codex/skills/overhaul/references/scope-and-safety.md +47 -20
  335. package/pack/generated/codex/skills/rite-adopt/SKILL.md +5 -2
  336. package/pack/generated/codex/skills/rite-adopt/reference/adoption.md +6 -0
  337. package/pack/generated/codex/skills/rite-adopt/reference/anti-patterns.md +1 -1
  338. package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +2 -1
  339. package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +3 -1
  340. package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +6 -0
  341. package/pack/generated/codex/skills/rite-build/reference/checkpoint-protocol.md +8 -16
  342. package/pack/generated/codex/skills/rite-build/reference/parallel-batch.md +9 -0
  343. package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +5 -1
  344. package/pack/generated/codex/skills/rite-clarify/SKILL.md +1 -1
  345. package/pack/generated/codex/skills/rite-converge/SKILL.md +9 -2
  346. package/pack/generated/codex/skills/rite-converge/reference/convergence-assessment.md +5 -0
  347. package/pack/generated/codex/skills/rite-define/SKILL.md +6 -1
  348. package/pack/generated/codex/skills/rite-define/reference/plan-template.md +4 -0
  349. package/pack/generated/codex/skills/rite-doctor/SKILL.md +6 -2
  350. package/pack/generated/codex/skills/rite-handoff/SKILL.md +14 -2
  351. package/pack/generated/codex/skills/rite-handoff/reference/handoff-template.md +16 -4
  352. package/pack/generated/codex/skills/rite-learn/SKILL.md +34 -4
  353. package/pack/generated/codex/skills/rite-plan/SKILL.md +2 -1
  354. package/pack/generated/codex/skills/rite-plan/reference/task-breakdown.md +6 -0
  355. package/pack/generated/codex/skills/rite-polish/SKILL.md +10 -4
  356. package/pack/generated/codex/skills/rite-polish/reference/anti-ai-slop.md +59 -36
  357. package/pack/generated/codex/skills/rite-polish/reference/harden-checklist.md +2 -1
  358. package/pack/generated/codex/skills/rite-polish/reference/ui.md +12 -3
  359. package/pack/generated/codex/skills/rite-pov/SKILL.md +14 -3
  360. package/pack/generated/codex/skills/rite-pr-feedback/SKILL.md +5 -1
  361. package/pack/generated/codex/skills/rite-pressure-test/SKILL.md +5 -3
  362. package/pack/generated/codex/skills/rite-prove/SKILL.md +12 -4
  363. package/pack/generated/codex/skills/rite-prove/reference/anti-patterns.md +1 -1
  364. package/pack/generated/codex/skills/rite-prove/reference/failure-triage.md +12 -3
  365. package/pack/generated/codex/skills/rite-quick/SKILL.md +2 -0
  366. package/pack/generated/codex/skills/rite-resolve/SKILL.md +7 -1
  367. package/pack/generated/codex/skills/rite-resolve/reference/answer-protocol.md +1 -1
  368. package/pack/generated/codex/skills/rite-review/SKILL.md +4 -1
  369. package/pack/generated/codex/skills/rite-review/reference/performance-checklist.md +9 -1
  370. package/pack/generated/codex/skills/rite-seal/SKILL.md +5 -3
  371. package/pack/generated/codex/skills/rite-seal/reference/anti-patterns.md +1 -1
  372. package/pack/generated/codex/skills/rite-seal/reference/phase-contract.md +1 -1
  373. package/pack/generated/codex/skills/rite-spec/SKILL.md +12 -4
  374. package/pack/generated/codex/skills/rite-spec/reference/spec-template.md +4 -2
  375. package/pack/generated/codex/skills/rite-spec/reference/state-workspace.md +3 -0
  376. package/pack/generated/codex/skills/rite-status/SKILL.md +11 -3
  377. package/pack/generated/codex/skills/rite-upgrade/SKILL.md +7 -1
  378. package/pack/generated/codex/skills/rite-vet/SKILL.md +4 -2
  379. package/pack/generated/codex/skills/rite-zoom-out/SKILL.md +5 -0
  380. package/pack/generated/devin/AGENTS.md +1 -0
  381. package/pack/generated/devin/agents/devrites-code-reviewer.md +19 -4
  382. package/pack/generated/devin/agents/devrites-devex-reviewer.md +7 -2
  383. package/pack/generated/devin/agents/devrites-doubt-reviewer.md +8 -0
  384. package/pack/generated/devin/agents/devrites-evidence-scout.md +14 -0
  385. package/pack/generated/devin/agents/devrites-frontend-reviewer.md +36 -17
  386. package/pack/generated/devin/agents/devrites-performance-reviewer.md +31 -8
  387. package/pack/generated/devin/agents/devrites-plan-reviewer.md +10 -2
  388. package/pack/generated/devin/agents/devrites-proof-runner.md +24 -4
  389. package/pack/generated/devin/agents/devrites-retrospector.md +22 -3
  390. package/pack/generated/devin/agents/devrites-security-auditor.md +34 -23
  391. package/pack/generated/devin/agents/devrites-simplifier-reviewer.md +6 -1
  392. package/pack/generated/devin/agents/devrites-spec-reviewer.md +8 -2
  393. package/pack/generated/devin/agents/devrites-strategy-reviewer.md +13 -5
  394. package/pack/generated/devin/agents/devrites-test-analyst.md +10 -2
  395. package/pack/generated/devin/agents/devrites-upgrade-planner.md +7 -0
  396. package/pack/generated/{claude/skills/overhaul/roles/backend-engineer.md → devin/agents/overhaul-backend-engineer.md} +21 -7
  397. package/pack/generated/devin/{skills/overhaul/roles/boundary.md → agents/overhaul-boundary.md} +20 -6
  398. package/pack/{.claude/skills/overhaul/roles/craft.md → generated/devin/agents/overhaul-craft.md} +20 -6
  399. package/pack/generated/devin/{skills/overhaul/roles/frontend-engineer.md → agents/overhaul-frontend-engineer.md} +21 -7
  400. package/pack/{.claude/skills/overhaul/roles/implementer.md → generated/devin/agents/overhaul-implementer.md} +19 -5
  401. package/pack/{.claude/skills/overhaul/roles/recon.md → generated/devin/agents/overhaul-recon.md} +34 -12
  402. package/pack/{.claude/skills/overhaul/roles/specialist.md → generated/devin/agents/overhaul-specialist.md} +22 -8
  403. package/pack/generated/devin/{skills/overhaul/roles/verifier.md → agents/overhaul-verifier.md} +23 -4
  404. package/pack/generated/devin/skills/devrites-audit/SKILL.md +2 -1
  405. package/pack/generated/devin/skills/devrites-browser-proof/SKILL.md +13 -2
  406. package/pack/generated/devin/skills/devrites-browser-proof/reference/browser-performance.md +7 -4
  407. package/pack/generated/devin/skills/devrites-browser-proof/reference/visual-verdict.md +14 -10
  408. package/pack/generated/devin/skills/devrites-frontend-craft/SKILL.md +4 -3
  409. package/pack/generated/devin/skills/devrites-frontend-craft/reference/quality-standards.md +22 -32
  410. package/pack/generated/devin/skills/devrites-lib/reference/intent-map.md +25 -5
  411. package/pack/generated/devin/skills/devrites-lib/reference/orchestration-profiles.md +1 -2
  412. package/pack/generated/devin/skills/devrites-lib/reference/parallel-dispatch.md +60 -8
  413. package/pack/generated/devin/skills/devrites-lib/reference/reply-contract.md +21 -6
  414. package/pack/generated/devin/skills/devrites-lib/reference/standards/README.md +0 -1
  415. package/pack/generated/devin/skills/devrites-lib/reference/standards/afk-hitl.md +9 -16
  416. package/pack/generated/devin/skills/devrites-lib/reference/standards/agents.md +34 -2
  417. package/pack/generated/devin/skills/devrites-lib/reference/standards/audit-coverage.md +5 -1
  418. package/pack/generated/devin/skills/devrites-lib/reference/standards/browser-proof-checklist.md +14 -3
  419. package/pack/generated/devin/skills/devrites-lib/reference/standards/code-navigation.md +8 -2
  420. package/pack/generated/devin/skills/devrites-lib/reference/standards/code-review.md +11 -4
  421. package/pack/generated/devin/skills/devrites-lib/reference/standards/context-hygiene.md +17 -6
  422. package/pack/generated/devin/skills/devrites-lib/reference/standards/core.md +16 -7
  423. package/pack/generated/devin/skills/devrites-lib/reference/standards/definition-of-done.md +1 -1
  424. package/pack/generated/devin/skills/devrites-lib/reference/standards/developer-experience.md +3 -1
  425. package/pack/generated/devin/skills/devrites-lib/reference/standards/duplicate-code.md +11 -0
  426. package/pack/generated/devin/skills/devrites-lib/reference/standards/gates.md +16 -1
  427. package/pack/generated/devin/skills/devrites-lib/reference/standards/performance.md +11 -0
  428. package/pack/generated/devin/skills/devrites-lib/reference/standards/prose-style.md +4 -3
  429. package/pack/generated/devin/skills/devrites-lib/reference/standards/review/README.md +6 -1
  430. package/pack/generated/devin/skills/devrites-lib/reference/standards/review/react.md +55 -0
  431. package/pack/generated/devin/skills/devrites-lib/reference/standards/review/stack-profile.md +155 -0
  432. package/pack/generated/devin/skills/devrites-lib/reference/standards/review/ts-js.md +22 -2
  433. package/pack/generated/devin/skills/devrites-lib/reference/standards/security-checklist.md +6 -3
  434. package/pack/generated/devin/skills/devrites-lib/reference/standards/security.md +35 -17
  435. package/pack/generated/devin/skills/devrites-lib/reference/standards/skill-authoring.md +8 -12
  436. package/pack/generated/devin/skills/devrites-lib/reference/standards/spec-grammar.md +4 -1
  437. package/pack/generated/devin/skills/devrites-lib/reference/standards/testing.md +36 -0
  438. package/pack/generated/devin/skills/devrites-lib/reference/standards/tooling.md +22 -2
  439. package/pack/generated/devin/skills/devrites-lib/reference/standards/verification-methods.md +33 -0
  440. package/pack/generated/devin/skills/devrites-lib/reference/workspace-artifact-schema.md +1 -1
  441. package/pack/generated/devin/skills/devrites-prose-craft/SKILL.md +9 -3
  442. package/pack/generated/devin/skills/devrites-prose-craft/reference/examples.md +11 -6
  443. package/pack/generated/devin/skills/overhaul/SKILL.md +53 -34
  444. package/pack/generated/devin/skills/overhaul/references/audit-domains.md +2 -2
  445. package/pack/generated/devin/skills/overhaul/references/lifecycle.md +6 -2
  446. package/pack/generated/devin/skills/overhaul/references/orchestration.md +37 -25
  447. package/pack/generated/devin/skills/overhaul/references/records.md +16 -3
  448. package/pack/generated/devin/skills/overhaul/references/review-and-report.md +3 -1
  449. package/pack/generated/devin/skills/overhaul/references/scope-and-safety.md +47 -20
  450. package/pack/generated/devin/skills/rite-adopt/SKILL.md +5 -2
  451. package/pack/generated/devin/skills/rite-adopt/reference/adoption.md +6 -0
  452. package/pack/generated/devin/skills/rite-adopt/reference/anti-patterns.md +1 -1
  453. package/pack/generated/devin/skills/rite-autocomplete/SKILL.md +2 -1
  454. package/pack/generated/devin/skills/rite-autocomplete/reference/loop.md +3 -1
  455. package/pack/generated/devin/skills/rite-autocomplete/reference/stop-conditions.md +6 -0
  456. package/pack/generated/devin/skills/rite-build/reference/checkpoint-protocol.md +8 -16
  457. package/pack/generated/devin/skills/rite-build/reference/parallel-batch.md +9 -0
  458. package/pack/generated/devin/skills/rite-build/reference/wright-dispatch.md +5 -1
  459. package/pack/generated/devin/skills/rite-clarify/SKILL.md +1 -1
  460. package/pack/generated/devin/skills/rite-converge/SKILL.md +9 -2
  461. package/pack/generated/devin/skills/rite-converge/reference/convergence-assessment.md +5 -0
  462. package/pack/generated/devin/skills/rite-define/SKILL.md +6 -1
  463. package/pack/generated/devin/skills/rite-define/reference/plan-template.md +4 -0
  464. package/pack/generated/devin/skills/rite-doctor/SKILL.md +6 -2
  465. package/pack/generated/devin/skills/rite-handoff/SKILL.md +14 -2
  466. package/pack/generated/devin/skills/rite-handoff/reference/handoff-template.md +16 -4
  467. package/pack/generated/devin/skills/rite-learn/SKILL.md +34 -4
  468. package/pack/generated/devin/skills/rite-plan/SKILL.md +2 -1
  469. package/pack/generated/devin/skills/rite-plan/reference/task-breakdown.md +6 -0
  470. package/pack/generated/devin/skills/rite-polish/SKILL.md +10 -4
  471. package/pack/generated/devin/skills/rite-polish/reference/anti-ai-slop.md +59 -36
  472. package/pack/generated/devin/skills/rite-polish/reference/harden-checklist.md +2 -1
  473. package/pack/generated/devin/skills/rite-polish/reference/ui.md +12 -3
  474. package/pack/generated/devin/skills/rite-pov/SKILL.md +14 -3
  475. package/pack/generated/devin/skills/rite-pr-feedback/SKILL.md +5 -1
  476. package/pack/generated/devin/skills/rite-pressure-test/SKILL.md +5 -3
  477. package/pack/generated/devin/skills/rite-prove/SKILL.md +12 -4
  478. package/pack/generated/devin/skills/rite-prove/reference/anti-patterns.md +1 -1
  479. package/pack/generated/devin/skills/rite-prove/reference/failure-triage.md +12 -3
  480. package/pack/generated/devin/skills/rite-quick/SKILL.md +2 -0
  481. package/pack/generated/devin/skills/rite-resolve/SKILL.md +7 -1
  482. package/pack/generated/devin/skills/rite-resolve/reference/answer-protocol.md +1 -1
  483. package/pack/generated/devin/skills/rite-review/SKILL.md +4 -1
  484. package/pack/generated/devin/skills/rite-review/reference/performance-checklist.md +9 -1
  485. package/pack/generated/devin/skills/rite-seal/SKILL.md +5 -3
  486. package/pack/generated/devin/skills/rite-seal/reference/anti-patterns.md +1 -1
  487. package/pack/generated/devin/skills/rite-seal/reference/phase-contract.md +1 -1
  488. package/pack/generated/devin/skills/rite-spec/SKILL.md +12 -4
  489. package/pack/generated/devin/skills/rite-spec/reference/spec-template.md +4 -2
  490. package/pack/generated/devin/skills/rite-spec/reference/state-workspace.md +3 -0
  491. package/pack/generated/devin/skills/rite-status/SKILL.md +11 -3
  492. package/pack/generated/devin/skills/rite-upgrade/SKILL.md +7 -1
  493. package/pack/generated/devin/skills/rite-vet/SKILL.md +4 -2
  494. package/pack/generated/devin/skills/rite-zoom-out/SKILL.md +5 -0
  495. package/pack/generated/omp/agents/devrites-code-reviewer.md +19 -4
  496. package/pack/generated/omp/agents/devrites-devex-reviewer.md +7 -2
  497. package/pack/generated/omp/agents/devrites-doubt-reviewer.md +8 -0
  498. package/pack/generated/omp/agents/devrites-evidence-scout.md +15 -1
  499. package/pack/generated/omp/agents/devrites-frontend-reviewer.md +37 -17
  500. package/pack/generated/omp/agents/devrites-performance-reviewer.md +31 -8
  501. package/pack/generated/omp/agents/devrites-plan-reviewer.md +10 -2
  502. package/pack/generated/omp/agents/devrites-proof-runner.md +24 -4
  503. package/pack/generated/omp/agents/devrites-retrospector.md +22 -3
  504. package/pack/generated/omp/agents/devrites-security-auditor.md +34 -23
  505. package/pack/generated/omp/agents/devrites-simplifier-reviewer.md +6 -1
  506. package/pack/generated/omp/agents/devrites-slice-wright.md +6 -6
  507. package/pack/generated/omp/agents/devrites-spec-reviewer.md +8 -2
  508. package/pack/generated/omp/agents/devrites-strategy-reviewer.md +13 -5
  509. package/pack/generated/omp/agents/devrites-test-analyst.md +10 -2
  510. package/pack/generated/omp/agents/devrites-upgrade-planner.md +7 -0
  511. package/pack/generated/omp/agents/overhaul-backend-engineer.md +68 -0
  512. package/pack/generated/omp/agents/overhaul-boundary.md +63 -0
  513. package/pack/generated/omp/agents/overhaul-craft.md +84 -0
  514. package/pack/generated/omp/agents/overhaul-frontend-engineer.md +70 -0
  515. package/pack/generated/omp/agents/overhaul-implementer.md +66 -0
  516. package/pack/generated/omp/agents/overhaul-recon.md +75 -0
  517. package/pack/generated/omp/agents/overhaul-specialist.md +63 -0
  518. package/pack/generated/omp/agents/overhaul-verifier.md +72 -0
  519. package/pack/generated/omp/commands/rite-adopt.md +5 -0
  520. package/pack/generated/omp/commands/rite-autocomplete.md +5 -0
  521. package/pack/generated/omp/commands/rite-build.md +5 -0
  522. package/pack/generated/omp/commands/rite-clarify.md +5 -0
  523. package/pack/generated/omp/commands/rite-converge.md +5 -0
  524. package/pack/generated/omp/commands/rite-customize.md +5 -0
  525. package/pack/generated/omp/commands/rite-define.md +5 -0
  526. package/pack/generated/omp/commands/rite-doctor.md +5 -0
  527. package/pack/generated/omp/commands/rite-dogfood.md +5 -0
  528. package/pack/generated/omp/commands/rite-explain.md +5 -0
  529. package/pack/generated/omp/commands/rite-frame.md +5 -0
  530. package/pack/generated/omp/commands/rite-handoff.md +5 -0
  531. package/pack/generated/omp/commands/rite-learn.md +5 -0
  532. package/pack/generated/omp/commands/rite-plan.md +5 -0
  533. package/pack/generated/omp/commands/rite-polish.md +5 -0
  534. package/pack/generated/omp/commands/rite-pov.md +5 -0
  535. package/pack/generated/omp/commands/rite-pr-feedback.md +5 -0
  536. package/pack/generated/omp/commands/rite-pressure-test.md +5 -0
  537. package/pack/generated/omp/commands/rite-prototype.md +5 -0
  538. package/pack/generated/omp/commands/rite-prove.md +5 -0
  539. package/pack/generated/omp/commands/rite-quick.md +5 -0
  540. package/pack/generated/omp/commands/rite-resolve.md +5 -0
  541. package/pack/generated/omp/commands/rite-review.md +5 -0
  542. package/pack/generated/omp/commands/rite-seal.md +5 -0
  543. package/pack/generated/omp/commands/rite-ship.md +5 -0
  544. package/pack/generated/omp/commands/rite-spec.md +5 -0
  545. package/pack/generated/omp/commands/rite-status.md +5 -0
  546. package/pack/generated/omp/commands/rite-temper.md +5 -0
  547. package/pack/generated/omp/commands/rite-upgrade.md +5 -0
  548. package/pack/generated/omp/commands/rite-vet.md +5 -0
  549. package/pack/generated/omp/commands/rite-watch-pr.md +5 -0
  550. package/pack/generated/omp/commands/rite-zoom-out.md +5 -0
  551. package/pack/generated/omp/commands/rite.md +5 -0
  552. package/pack/generated/omp/skills/devrites-audit/SKILL.md +2 -1
  553. package/pack/generated/omp/skills/devrites-browser-proof/SKILL.md +13 -2
  554. package/pack/generated/omp/skills/devrites-browser-proof/reference/browser-performance.md +7 -4
  555. package/pack/generated/omp/skills/devrites-browser-proof/reference/visual-verdict.md +14 -10
  556. package/pack/generated/omp/skills/devrites-frontend-craft/SKILL.md +4 -3
  557. package/pack/generated/omp/skills/devrites-frontend-craft/reference/quality-standards.md +22 -32
  558. package/pack/generated/omp/skills/devrites-interview/SKILL.md +1 -1
  559. package/pack/generated/omp/skills/devrites-lib/reference/intent-map.md +25 -5
  560. package/pack/generated/omp/skills/devrites-lib/reference/orchestration-profiles.md +1 -2
  561. package/pack/generated/omp/skills/devrites-lib/reference/parallel-dispatch.md +60 -8
  562. package/pack/generated/omp/skills/devrites-lib/reference/reply-contract.md +21 -6
  563. package/pack/generated/omp/skills/devrites-lib/reference/standards/README.md +0 -1
  564. package/pack/generated/omp/skills/devrites-lib/reference/standards/afk-hitl.md +11 -18
  565. package/pack/generated/omp/skills/devrites-lib/reference/standards/agents.md +35 -3
  566. package/pack/generated/omp/skills/devrites-lib/reference/standards/audit-coverage.md +5 -1
  567. package/pack/generated/omp/skills/devrites-lib/reference/standards/browser-proof-checklist.md +14 -3
  568. package/pack/generated/omp/skills/devrites-lib/reference/standards/code-navigation.md +8 -2
  569. package/pack/generated/omp/skills/devrites-lib/reference/standards/code-review.md +11 -4
  570. package/pack/generated/omp/skills/devrites-lib/reference/standards/context-hygiene.md +17 -6
  571. package/pack/generated/omp/skills/devrites-lib/reference/standards/core.md +16 -7
  572. package/pack/generated/omp/skills/devrites-lib/reference/standards/definition-of-done.md +1 -1
  573. package/pack/generated/omp/skills/devrites-lib/reference/standards/developer-experience.md +3 -1
  574. package/pack/generated/omp/skills/devrites-lib/reference/standards/duplicate-code.md +11 -0
  575. package/pack/generated/omp/skills/devrites-lib/reference/standards/gates.md +16 -1
  576. package/pack/generated/omp/skills/devrites-lib/reference/standards/performance.md +11 -0
  577. package/pack/generated/omp/skills/devrites-lib/reference/standards/prose-style.md +4 -3
  578. package/pack/generated/omp/skills/devrites-lib/reference/standards/review/README.md +6 -1
  579. package/pack/generated/omp/skills/devrites-lib/reference/standards/review/react.md +55 -0
  580. package/pack/generated/omp/skills/devrites-lib/reference/standards/review/stack-profile.md +155 -0
  581. package/pack/generated/omp/skills/devrites-lib/reference/standards/review/ts-js.md +22 -2
  582. package/pack/generated/omp/skills/devrites-lib/reference/standards/security-checklist.md +6 -3
  583. package/pack/generated/omp/skills/devrites-lib/reference/standards/security.md +35 -17
  584. package/pack/generated/omp/skills/devrites-lib/reference/standards/skill-authoring.md +8 -12
  585. package/pack/generated/omp/skills/devrites-lib/reference/standards/spec-grammar.md +4 -1
  586. package/pack/generated/omp/skills/devrites-lib/reference/standards/testing.md +36 -0
  587. package/pack/generated/omp/skills/devrites-lib/reference/standards/tooling.md +22 -2
  588. package/pack/generated/omp/skills/devrites-lib/reference/standards/verification-methods.md +33 -0
  589. package/pack/generated/omp/skills/devrites-lib/reference/workspace-artifact-schema.md +1 -1
  590. package/pack/generated/omp/skills/devrites-prose-craft/SKILL.md +9 -3
  591. package/pack/generated/omp/skills/devrites-prose-craft/reference/examples.md +11 -6
  592. package/pack/generated/omp/skills/overhaul/SKILL.md +53 -34
  593. package/pack/generated/omp/skills/overhaul/references/audit-domains.md +2 -2
  594. package/pack/generated/omp/skills/overhaul/references/lifecycle.md +6 -2
  595. package/pack/generated/omp/skills/overhaul/references/orchestration.md +37 -25
  596. package/pack/generated/omp/skills/overhaul/references/records.md +16 -3
  597. package/pack/generated/omp/skills/overhaul/references/review-and-report.md +3 -1
  598. package/pack/generated/omp/skills/overhaul/references/scope-and-safety.md +47 -20
  599. package/pack/generated/omp/skills/rite-adopt/SKILL.md +5 -2
  600. package/pack/generated/omp/skills/rite-adopt/reference/adoption.md +6 -0
  601. package/pack/generated/omp/skills/rite-adopt/reference/anti-patterns.md +1 -1
  602. package/pack/generated/omp/skills/rite-autocomplete/SKILL.md +2 -1
  603. package/pack/generated/omp/skills/rite-autocomplete/reference/loop.md +3 -1
  604. package/pack/generated/omp/skills/rite-autocomplete/reference/stop-conditions.md +6 -0
  605. package/pack/generated/omp/skills/rite-build/reference/checkpoint-protocol.md +10 -18
  606. package/pack/generated/omp/skills/rite-build/reference/parallel-batch.md +10 -1
  607. package/pack/generated/omp/skills/rite-build/reference/wright-dispatch.md +6 -2
  608. package/pack/generated/omp/skills/rite-clarify/SKILL.md +1 -1
  609. package/pack/generated/omp/skills/rite-converge/SKILL.md +9 -2
  610. package/pack/generated/omp/skills/rite-converge/reference/convergence-assessment.md +5 -0
  611. package/pack/generated/omp/skills/rite-define/SKILL.md +6 -1
  612. package/pack/generated/omp/skills/rite-define/reference/plan-template.md +4 -0
  613. package/pack/generated/omp/skills/rite-doctor/SKILL.md +6 -2
  614. package/pack/generated/omp/skills/rite-explain/SKILL.md +2 -2
  615. package/pack/generated/omp/skills/rite-explain/reference/intake.md +1 -1
  616. package/pack/generated/omp/skills/rite-handoff/SKILL.md +14 -2
  617. package/pack/generated/omp/skills/rite-handoff/reference/handoff-template.md +16 -4
  618. package/pack/generated/omp/skills/rite-learn/SKILL.md +34 -4
  619. package/pack/generated/omp/skills/rite-plan/SKILL.md +2 -1
  620. package/pack/generated/omp/skills/rite-plan/reference/task-breakdown.md +6 -0
  621. package/pack/generated/omp/skills/rite-polish/SKILL.md +10 -4
  622. package/pack/generated/omp/skills/rite-polish/reference/anti-ai-slop.md +59 -36
  623. package/pack/generated/omp/skills/rite-polish/reference/harden-checklist.md +2 -1
  624. package/pack/generated/omp/skills/rite-polish/reference/ui.md +12 -3
  625. package/pack/generated/omp/skills/rite-pov/SKILL.md +14 -3
  626. package/pack/generated/omp/skills/rite-pr-feedback/SKILL.md +5 -1
  627. package/pack/generated/omp/skills/rite-pressure-test/SKILL.md +5 -3
  628. package/pack/generated/omp/skills/rite-prove/SKILL.md +12 -4
  629. package/pack/generated/omp/skills/rite-prove/reference/anti-patterns.md +1 -1
  630. package/pack/generated/omp/skills/rite-prove/reference/failure-triage.md +12 -3
  631. package/pack/generated/omp/skills/rite-quick/SKILL.md +2 -0
  632. package/pack/generated/omp/skills/rite-resolve/SKILL.md +8 -2
  633. package/pack/generated/omp/skills/rite-resolve/reference/answer-protocol.md +1 -1
  634. package/pack/generated/omp/skills/rite-review/SKILL.md +4 -1
  635. package/pack/generated/omp/skills/rite-review/reference/performance-checklist.md +9 -1
  636. package/pack/generated/omp/skills/rite-seal/SKILL.md +5 -3
  637. package/pack/generated/omp/skills/rite-seal/reference/anti-patterns.md +1 -1
  638. package/pack/generated/omp/skills/rite-seal/reference/phase-contract.md +1 -1
  639. package/pack/generated/omp/skills/rite-spec/SKILL.md +12 -4
  640. package/pack/generated/omp/skills/rite-spec/reference/investigation.md +1 -1
  641. package/pack/generated/omp/skills/rite-spec/reference/spec-template.md +4 -2
  642. package/pack/generated/omp/skills/rite-spec/reference/state-workspace.md +3 -0
  643. package/pack/generated/omp/skills/rite-status/SKILL.md +11 -3
  644. package/pack/generated/omp/skills/rite-temper/SKILL.md +1 -1
  645. package/pack/generated/omp/skills/rite-upgrade/SKILL.md +7 -1
  646. package/pack/generated/omp/skills/rite-vet/SKILL.md +4 -2
  647. package/pack/generated/omp/skills/rite-vet/reference/review-axes.md +2 -2
  648. package/pack/generated/omp/skills/rite-zoom-out/SKILL.md +5 -0
  649. package/pack/generated/pi/AGENTS.md +1 -0
  650. package/pack/generated/pi/agents/devrites-code-reviewer.md +19 -4
  651. package/pack/generated/pi/agents/devrites-devex-reviewer.md +7 -2
  652. package/pack/generated/pi/agents/devrites-doubt-reviewer.md +8 -0
  653. package/pack/generated/pi/agents/devrites-evidence-scout.md +14 -0
  654. package/pack/generated/pi/agents/devrites-frontend-reviewer.md +36 -17
  655. package/pack/generated/pi/agents/devrites-performance-reviewer.md +31 -8
  656. package/pack/generated/pi/agents/devrites-plan-reviewer.md +10 -2
  657. package/pack/generated/pi/agents/devrites-proof-runner.md +24 -4
  658. package/pack/generated/pi/agents/devrites-retrospector.md +22 -3
  659. package/pack/generated/pi/agents/devrites-security-auditor.md +34 -23
  660. package/pack/generated/pi/agents/devrites-simplifier-reviewer.md +6 -1
  661. package/pack/generated/pi/agents/devrites-spec-reviewer.md +8 -2
  662. package/pack/generated/pi/agents/devrites-strategy-reviewer.md +13 -5
  663. package/pack/generated/pi/agents/devrites-test-analyst.md +10 -2
  664. package/pack/generated/pi/agents/devrites-upgrade-planner.md +7 -0
  665. package/pack/generated/pi/agents/overhaul-backend-engineer.md +69 -0
  666. package/pack/generated/pi/agents/overhaul-boundary.md +64 -0
  667. package/pack/generated/pi/agents/overhaul-craft.md +85 -0
  668. package/pack/generated/pi/agents/overhaul-frontend-engineer.md +71 -0
  669. package/pack/generated/pi/agents/overhaul-implementer.md +67 -0
  670. package/pack/generated/pi/agents/overhaul-recon.md +76 -0
  671. package/pack/generated/pi/agents/overhaul-specialist.md +64 -0
  672. package/pack/generated/pi/agents/overhaul-verifier.md +73 -0
  673. package/pack/generated/pi/prompts/rite-adopt.md +1 -1
  674. package/pack/generated/pi/prompts/rite-autocomplete.md +1 -1
  675. package/pack/generated/pi/prompts/rite-build.md +1 -1
  676. package/pack/generated/pi/prompts/rite-clarify.md +1 -1
  677. package/pack/generated/pi/prompts/rite-converge.md +2 -2
  678. package/pack/generated/pi/prompts/rite-customize.md +1 -1
  679. package/pack/generated/pi/prompts/rite-define.md +1 -1
  680. package/pack/generated/pi/prompts/rite-doctor.md +1 -1
  681. package/pack/generated/pi/prompts/rite-dogfood.md +1 -1
  682. package/pack/generated/pi/prompts/rite-explain.md +1 -1
  683. package/pack/generated/pi/prompts/rite-frame.md +1 -1
  684. package/pack/generated/pi/prompts/rite-handoff.md +1 -1
  685. package/pack/generated/pi/prompts/rite-learn.md +1 -1
  686. package/pack/generated/pi/prompts/rite-plan.md +1 -1
  687. package/pack/generated/pi/prompts/rite-polish.md +1 -1
  688. package/pack/generated/pi/prompts/rite-pov.md +1 -1
  689. package/pack/generated/pi/prompts/rite-pr-feedback.md +1 -1
  690. package/pack/generated/pi/prompts/rite-pressure-test.md +1 -1
  691. package/pack/generated/pi/prompts/rite-prototype.md +1 -1
  692. package/pack/generated/pi/prompts/rite-prove.md +1 -1
  693. package/pack/generated/pi/prompts/rite-quick.md +1 -1
  694. package/pack/generated/pi/prompts/rite-resolve.md +1 -1
  695. package/pack/generated/pi/prompts/rite-review.md +1 -1
  696. package/pack/generated/pi/prompts/rite-seal.md +1 -1
  697. package/pack/generated/pi/prompts/rite-ship.md +1 -1
  698. package/pack/generated/pi/prompts/rite-spec.md +1 -1
  699. package/pack/generated/pi/prompts/rite-status.md +1 -1
  700. package/pack/generated/pi/prompts/rite-temper.md +1 -1
  701. package/pack/generated/pi/prompts/rite-upgrade.md +1 -1
  702. package/pack/generated/pi/prompts/rite-vet.md +1 -1
  703. package/pack/generated/pi/prompts/rite-watch-pr.md +1 -1
  704. package/pack/generated/pi/prompts/rite-zoom-out.md +1 -1
  705. package/pack/generated/pi/prompts/rite.md +1 -1
  706. package/pack/generated/pi/skills/devrites-audit/SKILL.md +2 -1
  707. package/pack/generated/pi/skills/devrites-browser-proof/SKILL.md +13 -2
  708. package/pack/generated/pi/skills/devrites-browser-proof/reference/browser-performance.md +7 -4
  709. package/pack/generated/pi/skills/devrites-browser-proof/reference/visual-verdict.md +14 -10
  710. package/pack/generated/pi/skills/devrites-frontend-craft/SKILL.md +4 -3
  711. package/pack/generated/pi/skills/devrites-frontend-craft/reference/quality-standards.md +22 -32
  712. package/pack/generated/pi/skills/devrites-lib/reference/intent-map.md +25 -5
  713. package/pack/generated/pi/skills/devrites-lib/reference/orchestration-profiles.md +1 -2
  714. package/pack/generated/pi/skills/devrites-lib/reference/parallel-dispatch.md +60 -8
  715. package/pack/generated/pi/skills/devrites-lib/reference/reply-contract.md +21 -6
  716. package/pack/generated/pi/skills/devrites-lib/reference/standards/README.md +0 -1
  717. package/pack/generated/pi/skills/devrites-lib/reference/standards/afk-hitl.md +9 -16
  718. package/pack/generated/pi/skills/devrites-lib/reference/standards/agents.md +34 -2
  719. package/pack/generated/pi/skills/devrites-lib/reference/standards/audit-coverage.md +5 -1
  720. package/pack/generated/pi/skills/devrites-lib/reference/standards/browser-proof-checklist.md +14 -3
  721. package/pack/generated/pi/skills/devrites-lib/reference/standards/code-navigation.md +8 -2
  722. package/pack/generated/pi/skills/devrites-lib/reference/standards/code-review.md +11 -4
  723. package/pack/generated/pi/skills/devrites-lib/reference/standards/context-hygiene.md +17 -6
  724. package/pack/generated/pi/skills/devrites-lib/reference/standards/core.md +16 -7
  725. package/pack/generated/pi/skills/devrites-lib/reference/standards/definition-of-done.md +1 -1
  726. package/pack/generated/pi/skills/devrites-lib/reference/standards/developer-experience.md +3 -1
  727. package/pack/generated/pi/skills/devrites-lib/reference/standards/duplicate-code.md +11 -0
  728. package/pack/generated/pi/skills/devrites-lib/reference/standards/gates.md +16 -1
  729. package/pack/generated/pi/skills/devrites-lib/reference/standards/performance.md +11 -0
  730. package/pack/generated/pi/skills/devrites-lib/reference/standards/prose-style.md +4 -3
  731. package/pack/generated/pi/skills/devrites-lib/reference/standards/review/README.md +6 -1
  732. package/pack/generated/pi/skills/devrites-lib/reference/standards/review/react.md +55 -0
  733. package/pack/generated/pi/skills/devrites-lib/reference/standards/review/stack-profile.md +155 -0
  734. package/pack/generated/pi/skills/devrites-lib/reference/standards/review/ts-js.md +22 -2
  735. package/pack/generated/pi/skills/devrites-lib/reference/standards/security-checklist.md +6 -3
  736. package/pack/generated/pi/skills/devrites-lib/reference/standards/security.md +35 -17
  737. package/pack/generated/pi/skills/devrites-lib/reference/standards/skill-authoring.md +8 -12
  738. package/pack/generated/pi/skills/devrites-lib/reference/standards/spec-grammar.md +4 -1
  739. package/pack/generated/pi/skills/devrites-lib/reference/standards/testing.md +36 -0
  740. package/pack/generated/pi/skills/devrites-lib/reference/standards/tooling.md +22 -2
  741. package/pack/generated/pi/skills/devrites-lib/reference/standards/verification-methods.md +33 -0
  742. package/pack/generated/pi/skills/devrites-lib/reference/workspace-artifact-schema.md +1 -1
  743. package/pack/generated/pi/skills/devrites-prose-craft/SKILL.md +9 -3
  744. package/pack/generated/pi/skills/devrites-prose-craft/reference/examples.md +11 -6
  745. package/pack/generated/pi/skills/overhaul/SKILL.md +53 -34
  746. package/pack/generated/pi/skills/overhaul/references/audit-domains.md +2 -2
  747. package/pack/generated/pi/skills/overhaul/references/lifecycle.md +6 -2
  748. package/pack/generated/pi/skills/overhaul/references/orchestration.md +37 -25
  749. package/pack/generated/pi/skills/overhaul/references/records.md +16 -3
  750. package/pack/generated/pi/skills/overhaul/references/review-and-report.md +3 -1
  751. package/pack/generated/pi/skills/overhaul/references/scope-and-safety.md +47 -20
  752. package/pack/generated/pi/skills/rite-adopt/SKILL.md +5 -2
  753. package/pack/generated/pi/skills/rite-adopt/reference/adoption.md +6 -0
  754. package/pack/generated/pi/skills/rite-adopt/reference/anti-patterns.md +1 -1
  755. package/pack/generated/pi/skills/rite-autocomplete/SKILL.md +2 -1
  756. package/pack/generated/pi/skills/rite-autocomplete/reference/loop.md +3 -1
  757. package/pack/generated/pi/skills/rite-autocomplete/reference/stop-conditions.md +6 -0
  758. package/pack/generated/pi/skills/rite-build/reference/checkpoint-protocol.md +8 -16
  759. package/pack/generated/pi/skills/rite-build/reference/parallel-batch.md +9 -0
  760. package/pack/generated/pi/skills/rite-build/reference/wright-dispatch.md +5 -1
  761. package/pack/generated/pi/skills/rite-clarify/SKILL.md +1 -1
  762. package/pack/generated/pi/skills/rite-converge/SKILL.md +9 -2
  763. package/pack/generated/pi/skills/rite-converge/reference/convergence-assessment.md +5 -0
  764. package/pack/generated/pi/skills/rite-define/SKILL.md +6 -1
  765. package/pack/generated/pi/skills/rite-define/reference/plan-template.md +4 -0
  766. package/pack/generated/pi/skills/rite-doctor/SKILL.md +6 -2
  767. package/pack/generated/pi/skills/rite-handoff/SKILL.md +14 -2
  768. package/pack/generated/pi/skills/rite-handoff/reference/handoff-template.md +16 -4
  769. package/pack/generated/pi/skills/rite-learn/SKILL.md +34 -4
  770. package/pack/generated/pi/skills/rite-plan/SKILL.md +2 -1
  771. package/pack/generated/pi/skills/rite-plan/reference/task-breakdown.md +6 -0
  772. package/pack/generated/pi/skills/rite-polish/SKILL.md +10 -4
  773. package/pack/generated/pi/skills/rite-polish/reference/anti-ai-slop.md +59 -36
  774. package/pack/generated/pi/skills/rite-polish/reference/harden-checklist.md +2 -1
  775. package/pack/generated/pi/skills/rite-polish/reference/ui.md +12 -3
  776. package/pack/generated/pi/skills/rite-pov/SKILL.md +14 -3
  777. package/pack/generated/pi/skills/rite-pr-feedback/SKILL.md +5 -1
  778. package/pack/generated/pi/skills/rite-pressure-test/SKILL.md +5 -3
  779. package/pack/generated/pi/skills/rite-prove/SKILL.md +12 -4
  780. package/pack/generated/pi/skills/rite-prove/reference/anti-patterns.md +1 -1
  781. package/pack/generated/pi/skills/rite-prove/reference/failure-triage.md +12 -3
  782. package/pack/generated/pi/skills/rite-quick/SKILL.md +2 -0
  783. package/pack/generated/pi/skills/rite-resolve/SKILL.md +7 -1
  784. package/pack/generated/pi/skills/rite-resolve/reference/answer-protocol.md +1 -1
  785. package/pack/generated/pi/skills/rite-review/SKILL.md +4 -1
  786. package/pack/generated/pi/skills/rite-review/reference/performance-checklist.md +9 -1
  787. package/pack/generated/pi/skills/rite-seal/SKILL.md +5 -3
  788. package/pack/generated/pi/skills/rite-seal/reference/anti-patterns.md +1 -1
  789. package/pack/generated/pi/skills/rite-seal/reference/phase-contract.md +1 -1
  790. package/pack/generated/pi/skills/rite-spec/SKILL.md +12 -4
  791. package/pack/generated/pi/skills/rite-spec/reference/spec-template.md +4 -2
  792. package/pack/generated/pi/skills/rite-spec/reference/state-workspace.md +3 -0
  793. package/pack/generated/pi/skills/rite-status/SKILL.md +11 -3
  794. package/pack/generated/pi/skills/rite-upgrade/SKILL.md +7 -1
  795. package/pack/generated/pi/skills/rite-vet/SKILL.md +4 -2
  796. package/pack/generated/pi/skills/rite-zoom-out/SKILL.md +5 -0
  797. package/package.json +13 -10
  798. package/scripts/build-host-artifacts.sh +8 -3
  799. package/scripts/codex-generate.sh +2 -1
  800. package/scripts/devin-generate.sh +4 -3
  801. package/scripts/omp-generate.sh +39 -6
  802. package/scripts/pi-generate.sh +9 -4
  803. package/engine/.gosec.json +0 -5
  804. package/pack/generated/omp/skills/overhaul/roles/backend-engineer.md +0 -61
  805. package/pack/generated/omp/skills/overhaul/roles/boundary.md +0 -56
  806. package/pack/generated/omp/skills/overhaul/roles/craft.md +0 -77
  807. package/pack/generated/omp/skills/overhaul/roles/frontend-engineer.md +0 -63
  808. package/pack/generated/omp/skills/overhaul/roles/implementer.md +0 -59
  809. package/pack/generated/omp/skills/overhaul/roles/recon.md +0 -60
  810. package/pack/generated/omp/skills/overhaul/roles/specialist.md +0 -56
  811. package/pack/generated/omp/skills/overhaul/roles/verifier.md +0 -60
  812. package/pack/generated/pi/skills/overhaul/roles/backend-engineer.md +0 -61
  813. package/pack/generated/pi/skills/overhaul/roles/boundary.md +0 -56
  814. package/pack/generated/pi/skills/overhaul/roles/craft.md +0 -77
  815. package/pack/generated/pi/skills/overhaul/roles/frontend-engineer.md +0 -63
  816. package/pack/generated/pi/skills/overhaul/roles/implementer.md +0 -59
  817. package/pack/generated/pi/skills/overhaul/roles/recon.md +0 -60
  818. package/pack/generated/pi/skills/overhaul/roles/specialist.md +0 -56
  819. package/pack/generated/pi/skills/overhaul/roles/verifier.md +0 -60
@@ -26,20 +26,103 @@ import (
26
26
 
27
27
  const usage = "usage: devrites-engine overhaul render <run> <gen-dir> [review|report]\n"
28
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}}`
29
+ // css is the page's only stylesheet; the CSP pins it by sha256. Light is the
30
+ // base (and print) theme; screens that prefer dark get their own validated
31
+ // steps. Every colour is a token on :root and the dark block redefines each.
32
+ // Chart colours: severity is one red ramp (ordinal, validated light and dark);
33
+ // controls are blue pass / red fail / grey no-evidence.
34
+ const css = `:root{color-scheme:light;--bg:#f3f4f6;--surface:#ffffff;--raised:#eceef2;--fg:#15171c;--muted:#565e6b;--line:#d5d9e0;--line-2:#e9ebef;--accent:#1f5fbf;--ok:#11703a;--bad:#b3261e;--warn:#8a5a00;--track:#e6e8ec;--sev1:#8e1b1b;--sev2:#c2402f;--sev3:#e0704a;--sev4:#eea07c;--info:#a3aab5;--pass:#2a78d6;--fail:#c2402f;--unk:#b7bdc6;--s-critical:#8e1b1b;--s-high:#c2402f;--s-medium:#e0704a;--s-low:#eea07c;--s-informational:#a3aab5;--sans:system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
35
+ @media screen and (prefers-color-scheme:dark){:root{color-scheme:dark;--bg:#111216;--surface:#1b1c20;--raised:#24262c;--fg:#eceef2;--muted:#a3a9b4;--line:#34373e;--line-2:#27292f;--accent:#7fb0ff;--ok:#5fd38a;--bad:#ff8a7a;--warn:#e9b44c;--track:#2b2e35;--sev1:#ff9a82;--sev2:#f26a4f;--sev3:#cc4a33;--sev4:#a33e2d;--info:#6b7280;--pass:#3987e5;--fail:#d9473a;--unk:#5a606b;--s-critical:#ff9a82;--s-high:#f26a4f;--s-medium:#cc4a33;--s-low:#a33e2d;--s-informational:#6b7280}}
36
+ *,*::before,*::after{box-sizing:border-box}main *{min-width:0}svg{max-width:100%}
37
+ html{scroll-padding-top:4.5rem;-webkit-text-size-adjust:100%}
38
+ @media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
39
+ body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.5 var(--sans)}
40
+ h1,h2,h3,h4{font-weight:600;line-height:1.25;margin:0;text-wrap:balance}
41
+ h2{font-size:1.25rem;margin:0 0 .25rem}h4{font-size:.8125rem;color:var(--muted);margin:0 0 .25rem}
42
+ p{margin:0 0 1rem}a{color:var(--accent);text-underline-offset:2px}
43
+ code,pre,textarea,.m{font-family:var(--mono);font-size:.8125rem}code{overflow-wrap:anywhere}
44
+ :focus-visible{outline:2px solid var(--accent);outline-offset:2px}
45
+ .muted{color:var(--muted)}.count{font:500 .75rem/1.5 var(--mono);color:var(--muted)}
46
+ .lede{color:var(--muted);margin:0 0 1rem;max-width:70ch}
47
+ .skip{position:absolute;left:-9999px;z-index:30}.skip:focus{left:1rem;top:.5rem;background:var(--surface);padding:.5rem 1rem;border-radius:8px}
48
+ .top{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:1rem;padding:.5rem 1rem;background:var(--surface);border-bottom:1px solid var(--line)}
49
+ .top .brand{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;font-weight:600;white-space:nowrap}
50
+ .top code{flex:1 1 0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:.75rem}
51
+ .shell{max-width:84rem;margin:0 auto;padding:1.5rem 1rem 4rem}
52
+ .toc ul{list-style:none;margin:0 0 1.5rem;padding:0 0 .5rem;display:flex;gap:.5rem;overflow-x:auto}
53
+ .toc a{display:block;white-space:nowrap;padding:.25rem .75rem;border:1px solid var(--line);border-radius:999px;text-decoration:none;color:var(--fg);font-size:.875rem}
54
+ .toc a:hover{background:var(--raised)}
55
+ @media (min-width:64rem){.shell{display:grid;grid-template-columns:12rem minmax(0,1fr);gap:2.5rem}.toc{position:sticky;top:4.5rem;align-self:start}.toc ul{flex-direction:column;gap:0;overflow:visible;margin:0}.toc a{white-space:normal;border:0;border-radius:8px;padding:.3rem .5rem}}
56
+ main>section,.records>section{margin:0 0 1.5rem;padding:1.5rem;background:var(--surface);border:1px solid var(--line);border-radius:12px}
57
+ .hero{margin:0 0 1.5rem;padding:1.5rem;background:var(--surface);border:1px solid var(--line);border-radius:12px}
58
+ .hero>p[role=status]{font-size:.8125rem;color:var(--muted);margin:0 0 1rem}.hero>p[role=status] strong{font-weight:500}
59
+ .answer{display:grid;gap:2rem;grid-template-columns:minmax(0,1fr)}
60
+ @media (min-width:56rem){.answer{grid-template-columns:minmax(0,3fr) minmax(0,2fr)}}
61
+ .verdict{font-size:1.5rem}.verdict.t-bad{color:var(--bad)}.verdict.t-ok{color:var(--ok)}.verdict.t-warn{color:var(--warn)}
62
+ .hero-num{font-size:3.5rem;font-weight:650;line-height:1.05;margin:.25rem 0}.hero-num span{font-size:1.25rem;font-weight:500;color:var(--muted)}
63
+ .hero .score>.bar{height:18px;margin:.5rem 0 1.25rem}
64
+ svg.bar{display:block;width:100%;height:12px;overflow:visible}
65
+ .trk{fill:var(--track)}.tgt{fill:var(--fg)}.was{fill:var(--muted)}
66
+ .g0,.c-pass,.c-part{fill:var(--pass)}.g4{fill:var(--sev4)}.g3{fill:var(--sev3)}.g2{fill:var(--sev2)}.g1{fill:var(--sev1)}.c-fail{fill:var(--fail)}.c-unk{fill:var(--unk)}
67
+ .s-critical{fill:var(--sev1)}.s-high{fill:var(--sev2)}.s-medium{fill:var(--sev3)}.s-low{fill:var(--sev4)}.s-informational,.s-none{fill:var(--info)}
68
+ .rows{list-style:none;margin:0;padding:0;display:grid;gap:.75rem}
69
+ .rows li{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"l v" "b b";gap:.25rem .75rem;align-items:center}
70
+ .rows li:has(.wide){grid-template-columns:minmax(0,1fr);grid-template-areas:"l" "b" "v"}.rows li:has(.wide) .val{text-align:left}
71
+ .rows .lbl{grid-area:l;overflow-wrap:anywhere}.rows .bar{grid-area:b}.rows .val{grid-area:v;text-align:right;font-variant-numeric:tabular-nums;color:var(--muted);font-size:.875rem}
72
+ @media (min-width:48rem){.rows li{grid-template-columns:minmax(0,13rem) minmax(0,1fr) 3.5rem;grid-template-areas:"l b v"}.rows li:has(.wide){grid-template-columns:minmax(0,11rem) minmax(0,1fr) 17rem;grid-template-areas:"l b v"}.rows .val{text-align:left}}
73
+ .lanes{margin:0 0 .5rem}
74
+ .legend{list-style:none;display:flex;flex-wrap:wrap;gap:.25rem 1.25rem;margin:1rem 0 0;padding:0;font-size:.8125rem;color:var(--muted)}
75
+ .legend li{display:flex;align-items:center;gap:.4rem}.legend strong{color:var(--fg)}
76
+ .key{display:inline-block;width:.7rem;height:.7rem;border-radius:2px;background:var(--c,var(--muted));flex:none}
77
+ .key.g0,.key.c-pass,.key.c-part{--c:var(--pass)}.key.g4,.key.s-low{--c:var(--sev4)}.key.g3,.key.s-medium{--c:var(--sev3)}.key.g2,.key.s-high{--c:var(--sev2)}.key.g1,.key.s-critical{--c:var(--sev1)}.key.c-fail{--c:var(--fail)}.key.c-unk{--c:var(--unk)}.key.s-informational,.key.s-none{--c:var(--info)}.key.was{--c:var(--muted);width:3px}.key.tgt{--c:var(--fg);width:2px;height:.9rem;border-radius:0}
78
+ .blockers h2{font-size:1rem;margin:0 0 .75rem}
79
+ .gates{list-style:none;margin:0 0 .75rem;padding:0;display:grid;gap:.6rem}
80
+ .gates li{display:flex;gap:.6rem;align-items:flex-start}.gates code{color:var(--muted);font-size:.75rem}
81
+ .mark{flex:none;display:inline-grid;place-items:center;width:1.4rem;height:1.4rem;border-radius:999px;font-size:.75rem;font-weight:700;color:var(--surface);background:var(--bad)}
82
+ .t-warn .mark{background:var(--warn)}
83
+ .strip{margin:1.75rem 0 0;padding-top:1.25rem;border-top:1px solid var(--line-2)}.strip h2{font-size:1rem;margin:0 0 .5rem}.strip .bar{height:16px}
84
+ .next{margin:1.25rem 0 0;font-weight:600}
85
+ #gaps table{min-width:36rem}#gaps th[scope=row]{font-weight:500;white-space:nowrap;background:var(--surface)}
86
+ #gaps td.cell{min-width:8rem}#gaps .val{display:block;font-variant-numeric:tabular-nums;font-weight:600;margin:0 0 .25rem}
87
+ #gaps .cell.g1 .val,#gaps .cell.g2 .val{color:var(--bad)}#gaps .cell.g0 .val{color:var(--ok)}#gaps .cell.g0 .val::after{content:" ✓"}
88
+ .pill{display:inline-block;padding:0 .5rem;border:1px solid var(--line);border-radius:999px;font:600 .75rem/1.6 var(--sans);white-space:nowrap;color:var(--muted)}
89
+ .pill.t-bad{color:var(--bad);border-color:currentColor}.pill.t-ok{color:var(--ok);border-color:currentColor}.pill.t-warn{color:var(--warn);border-color:currentColor}
90
+ .filter{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;border:0;margin:0 0 1rem;padding:0}
91
+ .filter legend{float:left;margin-right:.5rem;padding:0;font-size:.875rem;color:var(--muted)}
92
+ .filter input{position:absolute;opacity:0;width:1px;height:1px;margin:0}
93
+ .filter label{cursor:pointer;padding:.25rem .75rem;border:1px solid var(--line);border-radius:999px;font-size:.875rem}
94
+ .filter input:checked+label{background:var(--fg);color:var(--bg);border-color:var(--fg)}.filter input:checked+label .count{color:inherit}
95
+ .filter input:focus-visible+label{outline:2px solid var(--accent);outline-offset:2px}
96
+ @supports not selector(:has(a)){.filter{display:none}}
97
+ #findings:has(#sev-critical:checked) .finding:not(.s-critical),#findings:has(#sev-high:checked) .finding:not(.s-high),#findings:has(#sev-medium:checked) .finding:not(.s-medium),#findings:has(#sev-low:checked) .finding:not(.s-low),#findings:has(#sev-informational:checked) .finding:not(.s-informational){display:none}
98
+ .cards{border:1px solid var(--line);border-radius:10px;overflow:hidden}
99
+ .finding,.task{border-bottom:1px solid var(--line-2)}.finding:last-child,.task:last-child{border-bottom:0}.sub{font-size:1rem;margin:1.5rem 0 .5rem}
100
+ .finding>summary,.task>summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:5.5rem 4.5rem minmax(0,1fr);gap:.25rem .75rem;align-items:baseline;padding:.6rem .9rem}.task>summary{grid-template-columns:4.5rem 6.5rem minmax(0,1fr) auto}.task>summary>.pill:nth-child(2){justify-self:start}
101
+ .finding>summary::-webkit-details-marker,.task>summary::-webkit-details-marker{display:none}.finding>summary:hover,.task>summary:hover{background:var(--raised)}
102
+ .finding .where{grid-column:3;color:var(--muted);font-size:.75rem}
103
+ @media (min-width:60rem){.finding>summary{grid-template-columns:5.5rem 4.5rem minmax(0,1fr) minmax(0,16rem)}.finding .where{grid-column:auto;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}
104
+ .sev{display:inline-flex;align-items:center;gap:.4rem;font-size:.8125rem;font-weight:600}
105
+ .fid{font-weight:600}.ftitle{overflow-wrap:anywhere}
106
+ .finding[open]>summary,.task[open]>summary{background:var(--raised)}.fbody{padding:.75rem .9rem 1rem;display:grid;gap:.9rem}
107
+ .kv{display:grid;grid-template-columns:minmax(0,9rem) minmax(0,1fr);gap:.25rem 1rem;margin:0}
108
+ .kv dt{color:var(--muted);font-size:.8125rem}.kv dd{margin:0;overflow-wrap:anywhere}
109
+ @media (max-width:40rem){.kv{grid-template-columns:minmax(0,1fr);gap:0}.kv dd{margin-bottom:.5rem}}
110
+ .hist{margin:0;padding-left:1.25rem}.hist li{margin:0 0 .25rem;overflow-wrap:anywhere}
111
+ .records{margin:2rem 0 0}.records>summary{cursor:pointer;display:inline-block;margin:0 0 1rem;padding:.5rem 1rem;border:1px solid var(--line);border-radius:999px;background:var(--surface);font-weight:600}
112
+ .scroll{overflow:auto;max-height:75vh;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
113
+ table{border-collapse:separate;border-spacing:0;width:100%;font-size:.875rem}
114
+ .scroll:has(th:nth-child(6)) table{min-width:60rem}
115
+ caption{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
116
+ th,td{padding:.5rem .75rem;text-align:left;vertical-align:top;border-bottom:1px solid var(--line-2);overflow-wrap:anywhere}
117
+ thead th{position:sticky;top:0;z-index:1;background:var(--raised);color:var(--muted);font-weight:600;font-size:.75rem;border-bottom:1px solid var(--line)}
118
+ tbody tr:last-child>*{border-bottom:0}
119
+ td.n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}td.m{font-size:.8125rem}
120
+ tr:target,.finding:target,.task:target{outline:2px solid var(--accent);outline-offset:-2px}
121
+ #decide{border:2px solid var(--accent)}
122
+ #decide label{display:block;font-weight:600;margin:0 0 .5rem}
123
+ textarea{display:block;width:100%;min-height:7rem;padding:.75rem;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--fg);resize:vertical}
124
+ @media print{.top,.toc,.skip,.filter{display:none}.shell{display:block;padding:0}.scroll{max-height:none;overflow:visible}thead th{position:static}.scroll:has(th:nth-child(6)) table{min-width:0}.finding,tr,.rows li{break-inside:avoid}body{font-size:10pt}}
125
+ @media print{details::details-content{content-visibility:visible}}`
43
126
 
44
127
  var (
45
128
  rowID = regexp.MustCompile(`^[A-Z][A-Z0-9]*-[A-Za-z0-9._-]+$`)
@@ -50,6 +133,15 @@ var (
50
133
  // esc matches Python html.escape(quote=True) byte for byte.
51
134
  esc = strings.NewReplacer("&", "&amp;", "<", "&lt;", ">", "&gt;", `"`, "&quot;", "'", "&#x27;").Replace
52
135
  mdEsc = strings.NewReplacer(`\`, `\\`, "|", `\|`, "\n", " ", "<", "&lt;").Replace
136
+
137
+ // HTML-only presentation: severity scale, status order, typed table cells.
138
+ sevOrder = []string{"critical", "high", "medium", "low", "informational"}
139
+ sevLabel = map[string]string{"critical": "Critical", "high": "High", "medium": "Medium", "low": "Low", "informational": "Info", "none": "Unrated"}
140
+ monoCols = set("field", "id", "path", "paths", "attempt", "task", "control", "file", "sha256", "receipt", "allowed paths",
141
+ "finding / task", "oracle", "regression proof", "change made", "open ranges", "ranges (state)")
142
+ numCell = regexp.MustCompile(`^-?\d+(\.\d+)?( ?/ ?\d+(\.\d+)?)?$`)
143
+ goodTok = set("PASS", "MEETS_TARGETS", "MEETS_TARGETS_WITH_APPROVED_DEGRADATION")
144
+ warnTok = set("UNKNOWN", "AWAITING_APPROVAL", "WAIVED_OPERATIONAL")
53
145
  )
54
146
 
55
147
  func set(xs ...string) map[string]bool {
@@ -137,6 +229,14 @@ func (v view) e(x any) string {
137
229
  return s
138
230
  }
139
231
 
232
+ // txt renders a scalar as plain escaped text (no flag span), for pills and KPIs.
233
+ func (v view) txt(x any) string {
234
+ if empty(x) {
235
+ return "not recorded"
236
+ }
237
+ return esc(v.redact(pyStr(x)))
238
+ }
239
+
140
240
  // m renders one Markdown table cell value.
141
241
  func (v view) m(x any) string {
142
242
  if empty(x) {
@@ -419,9 +519,17 @@ func scorecardRows(rubric map[string]any, domains []string, base, sc map[string]
419
519
  }
420
520
 
421
521
  type built struct {
422
- rj map[string]any
522
+ rj, sc, base map[string]any
523
+ rubric map[string]any
524
+ domains []string
525
+ tasks []map[string]any
526
+ laneCov map[string][2]int // lane -> reviewed, eligible ranges
423
527
  secs []section
424
528
  approve, stamp string
529
+ finds []map[string]any
530
+ lanes []string
531
+ cards map[string][]map[string]any // section anchor -> findings drawn as cards in HTML
532
+ byF map[string][]map[string]any // finding id -> plan tasks
425
533
  }
426
534
 
427
535
  func build(run, gen string) (*built, error) {
@@ -491,6 +599,7 @@ func build(run, gen string) (*built, error) {
491
599
  }
492
600
 
493
601
  var laneRows []row
602
+ laneCov := map[string][2]int{}
494
603
  for _, lane := range lanes {
495
604
  xs := filter(att, func(x map[string]any) bool { return ovio.Str(x["lane"]) == lane && admitted(x) })
496
605
  var windows, open []string
@@ -527,6 +636,7 @@ func build(run, gen string) (*built, error) {
527
636
  }
528
637
  }
529
638
  }
639
+ laneCov[lane] = [2]int{done, total}
530
640
  laneScore := ovio.Get(ovio.Obj(ovio.Obj(sc["lanes"])[lane]), "Q.exact")
531
641
  laneRows = append(laneRows, row{lane, strs(windows), strs(profs), fmt.Sprintf("%d / %d", done, total), strs(open), laneScore})
532
642
  }
@@ -563,6 +673,8 @@ func build(run, gen string) (*built, error) {
563
673
  }
564
674
  notLead := func(f map[string]any) bool { s := ovio.Str(f["status"]); return !leads[s] && s != "rejected" }
565
675
  opp := func(f map[string]any) bool { return ovio.Str(f["kind"]) == "opportunity" }
676
+ confirmed := filter(finds, func(f map[string]any) bool { return notLead(f) && !opp(f) })
677
+ opps := filter(finds, func(f map[string]any) bool { return opp(f) && notLead(f) })
566
678
  var repairs, rejected, planRows, controls, changes []row
567
679
  for _, f := range finds {
568
680
  for _, t := range byF[pyStr(f["id"])] {
@@ -624,10 +736,9 @@ func build(run, gen string) (*built, error) {
624
736
  section{"contracts", "Contracts and boundaries", []string{"id", "producer", "consumers", "version", "evidence", "open questions"},
625
737
  rowsOf(objs(R["contracts"]["contracts"]), "id", "producer", "consumers", "version", "evidence", "questions")},
626
738
  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")},
739
+ rowsOf(confirmed, "id", "title", "kind", "severity", "status", "lanes", "locations", "failing_scenario", "impact", "evidence")},
629
740
  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")},
741
+ rowsOf(opps, "id", "title", "status", "locations", "impact")},
631
742
  section{"repairs", "Findings and repairs", []string{"finding / task", "severity and confidence", "previous failure", "change made",
632
743
  "regression proof", "independent result", "remaining risk"}, repairs},
633
744
  section{"leads", "Unvalidated leads (no severity)", []string{"id", "title", "status", "potential impact", "missing fact"},
@@ -670,7 +781,8 @@ func build(run, gen string) (*built, error) {
670
781
  }
671
782
  stamp := sf("overhaul-stamp run=%s generation=%s plan=%s", rj["run_id"],
672
783
  strings.ReplaceAll(filepath.Base(strings.TrimRight(gen, "/")), ".tmp", ""), planStamp)
673
- return &built{rj, S, approve, stamp}, nil
784
+ return &built{rj: rj, sc: sc, base: base, rubric: rubric, domains: domains, tasks: tasks, laneCov: laneCov, secs: S, approve: approve, stamp: stamp, finds: finds, lanes: lanes,
785
+ cards: map[string][]map[string]any{"findings": confirmed, "opportunities": opps}, byF: byF}, nil
674
786
  }
675
787
 
676
788
  func mdTable(v view, cols []string, body []row) []string {
@@ -714,59 +826,22 @@ func render(run, gen, kind, home string) (string, error) {
714
826
  csp := "default-src 'none'; style-src 'sha256-" + base64.StdEncoding.EncodeToString(sum[:]) +
715
827
  "'; img-src data:; base-uri 'none'; form-action 'none'"
716
828
  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
829
  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>`)
830
+ decide := kind == "review" && b.approve != ""
831
+ md := []string{"<!-- " + b.stamp + " -->", "# " + title, "", "`" + b.stamp + "`", ""}
733
832
  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>`)
833
+ if decide {
739
834
  md = append(md, "## Decision", "", "Only a message you send in the conversation counts. Approval text:", "", "```text", b.approve, "```", "")
740
835
  }
741
836
  for _, s := range b.secs {
742
- out = append(out, `<section id="`+esc(s.anchor)+`"><h2>`+esc(s.heading)+`</h2>`)
743
837
  md = append(md, "## "+v.m(s.heading), "")
744
838
  if len(s.body) == 0 {
745
- out = append(out, `<p class="muted">No records.</p></section>`)
746
839
  md = append(md, "No records.", "")
747
840
  continue
748
841
  }
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
842
  md = append(append(md, mdTable(v, s.cols, s.body)...), "")
768
843
  }
769
- out = append(out, "</main></body></html>")
844
+ out := v.page(b, kind, title, summary, csp, decide)
770
845
  for ext, text := range map[string][]string{"html": out, "md": md} {
771
846
  if err := os.WriteFile(filepath.Join(vd, kind+"."+ext), []byte(strings.Join(text, "\n")+"\n"), 0o644); err != nil {
772
847
  return "", err
@@ -774,3 +849,386 @@ func render(run, gen, kind, home string) (string, error) {
774
849
  }
775
850
  return filepath.Join(vd, kind+".html"), nil
776
851
  }
852
+
853
+ // page renders the HTML view: the answer and gap charts first, then the plan
854
+ // and decision (review) or repairs (report), the findings, and every other
855
+ // record table in a collapsed appendix.
856
+ func (v view) page(b *built, kind, title, summary, csp string, decide bool) []string {
857
+ verdict := pyStr(b.rj["readiness_verdict"])
858
+ lead := []string{"findings", "opportunities", "leads"}
859
+ if kind == "review" {
860
+ lead = append([]string{"plan"}, lead...)
861
+ } else {
862
+ lead = append([]string{"repairs", "performance", "cycles"}, lead...)
863
+ }
864
+ byAnchor := map[string]section{}
865
+ for _, s := range b.secs {
866
+ byAnchor[s.anchor] = s
867
+ }
868
+ charts := []struct{ id, name, html string }{
869
+ {"gaps", "Gap map", v.gapMap(b)}, {"losses", "Score lost", v.controlLoss(b)},
870
+ {"hotspots", "Hotspots", v.hotspots(b)}, {"reach", "Coverage", v.reach(b)},
871
+ }
872
+ var nav strings.Builder
873
+ link := func(id, name, extra string) {
874
+ fmt.Fprintf(&nav, `<li><a href="#%s">%s%s</a></li>`, id, esc(name), extra)
875
+ }
876
+ link("summary", "Summary", "")
877
+ for _, c := range charts {
878
+ if c.html != "" {
879
+ link(c.id, c.name, "")
880
+ }
881
+ }
882
+ shown := map[string]bool{}
883
+ for _, a := range lead {
884
+ s := byAnchor[a]
885
+ if s.anchor == "" || (len(s.body) == 0 && a != "findings" && a != "plan") {
886
+ continue
887
+ }
888
+ shown[a] = true
889
+ if a == "findings" && decide {
890
+ link("decide", "Decision", "")
891
+ }
892
+ name := s.heading
893
+ if short := navName[a]; short != "" {
894
+ name = short
895
+ }
896
+ link(a, name, count(s))
897
+ }
898
+ if decide && !shown["findings"] {
899
+ link("decide", "Decision", "")
900
+ }
901
+ link("records", "All records", "")
902
+
903
+ out := []string{`<!doctype html><html lang="en"><head><meta charset="utf-8">`,
904
+ `<meta http-equiv="Content-Security-Policy" content="` + csp + `">`,
905
+ `<meta name="viewport" content="width=device-width,initial-scale=1">`,
906
+ "<title>" + esc(title) + "</title><style>" + css + "</style></head><body>",
907
+ // Escaped (unlike the Python recipe) so a hostile run id cannot close the comment.
908
+ "<!-- " + esc(b.stamp) + " -->", `<a class="skip" href="#main">Skip to content</a>`,
909
+ `<header class="top"><span class="brand">` + esc(title) + `</span><code>` + esc(b.stamp) + `</code>` +
910
+ `<span class="pill ` + tone(verdict) + `">` + v.txt(b.rj["readiness_verdict"]) + `</span></header>`,
911
+ `<div class="shell"><nav class="toc" aria-label="Sections"><ul>` + nav.String() + "</ul></nav>",
912
+ `<main id="main">`, v.summaryBlock(b, summary, decide)}
913
+ for _, c := range charts {
914
+ if c.html != "" {
915
+ out = append(out, c.html)
916
+ }
917
+ }
918
+ decision := `<section id="decide"><h2>Decision</h2><p><strong>Nothing on this page approves anything.</strong> Copy a message into the ` +
919
+ `conversation with the agent; only your message there counts. Edit the task list to approve a subset, or ` +
920
+ `reply with rejections, deferrals or questions per task ID.</p><label for="ap">Approval message</label>` +
921
+ `<textarea id="ap" readonly>` + esc(b.approve) + `</textarea></section>`
922
+ placed := false
923
+ for _, a := range lead {
924
+ if !shown[a] {
925
+ continue
926
+ }
927
+ if a == "findings" && decide {
928
+ out = append(out, decision)
929
+ placed = true
930
+ }
931
+ out = append(out, v.section(b, byAnchor[a]))
932
+ }
933
+ if decide && !placed {
934
+ out = append(out, decision)
935
+ }
936
+ rest := 0
937
+ for _, s := range b.secs {
938
+ if !shown[s.anchor] {
939
+ rest++
940
+ }
941
+ }
942
+ out = append(out, fmt.Sprintf(`<details id="records" class="records"><summary>All records <span class="count">%d tables</span></summary>`+
943
+ `<p class="muted">Every canonical record behind the charts above, as tables.</p>`, rest))
944
+ for _, s := range b.secs {
945
+ if !shown[s.anchor] {
946
+ out = append(out, v.section(b, s))
947
+ }
948
+ }
949
+ return append(out, "</details></main></div></body></html>")
950
+ }
951
+
952
+ func (v view) section(b *built, s section) string {
953
+ var w strings.Builder
954
+ w.WriteString(`<section id="` + esc(s.anchor) + `"><h2>` + esc(s.heading) + count(s) + `</h2>`)
955
+ if s.anchor == "plan" && len(b.tasks) > 0 {
956
+ return v.planView(b, s)
957
+ }
958
+ switch items, isCards := b.cards[s.anchor]; {
959
+ case len(s.body) == 0:
960
+ w.WriteString(`<p class="muted">No records.</p>`)
961
+ case isCards:
962
+ w.WriteString(v.cardList(items, b.byF, s.anchor == "findings"))
963
+ default:
964
+ w.WriteString(v.table(s))
965
+ }
966
+ return w.String() + "</section>"
967
+ }
968
+
969
+ func count(s section) string {
970
+ if s.anchor == "result" {
971
+ return ""
972
+ }
973
+ return fmt.Sprintf(` <span class="count">%d</span>`, len(s.body))
974
+ }
975
+
976
+ // tone maps a verdict, outcome or gate token to its semantic colour role.
977
+ func tone(s string) string {
978
+ switch {
979
+ case goodTok[s]:
980
+ return "t-ok"
981
+ case s == "FAIL" || s == "NOT_READY" || s == "NOT_ASSESSABLE" || strings.HasPrefix(s, "BLOCKED"):
982
+ return "t-bad"
983
+ case warnTok[s]:
984
+ return "t-warn"
985
+ }
986
+ return "t-none"
987
+ }
988
+
989
+ func (v view) table(s section) string {
990
+ var w strings.Builder
991
+ w.WriteString(`<div class="scroll" role="region" tabindex="0" aria-label="` + esc(s.heading) + `"><table><caption>` +
992
+ esc(s.heading) + `</caption><thead><tr>`)
993
+ for _, c := range s.cols {
994
+ w.WriteString(`<th scope="col">` + esc(c) + `</th>`)
995
+ }
996
+ w.WriteString("</tr></thead><tbody>")
997
+ for _, r := range s.body {
998
+ w.WriteString("\n<tr")
999
+ if first := pyStr(r[0]); rowID.MatchString(first) {
1000
+ w.WriteString(` id="` + esc(first) + `"`)
1001
+ }
1002
+ w.WriteString(">")
1003
+ for i, x := range r {
1004
+ cls := ""
1005
+ if t, ok := x.(string); ok && numCell.MatchString(t) {
1006
+ cls = ` class="n"`
1007
+ } else if t, ok := x.(json.Number); ok && numCell.MatchString(t.String()) {
1008
+ cls = ` class="n"`
1009
+ } else if i < len(s.cols) && monoCols[s.cols[i]] && !empty(x) {
1010
+ cls = ` class="m"`
1011
+ }
1012
+ w.WriteString("<td" + cls + ">" + v.e(x) + "</td>")
1013
+ }
1014
+ w.WriteString("</tr>")
1015
+ }
1016
+ w.WriteString("</tbody></table></div>")
1017
+ return w.String()
1018
+ }
1019
+
1020
+ // sevKey is the finding's severity if it is on the known scale, else "none";
1021
+ // only these fixed keys ever reach a class attribute.
1022
+ func sevKey(f map[string]any) string {
1023
+ if s := ovio.Str(f["severity"]); s != "none" && sevLabel[s] != "" {
1024
+ return s
1025
+ }
1026
+ return "none"
1027
+ }
1028
+
1029
+ func sevRank(f map[string]any) int {
1030
+ for i, s := range sevOrder {
1031
+ if sevKey(f) == s {
1032
+ return i
1033
+ }
1034
+ }
1035
+ return len(sevOrder)
1036
+ }
1037
+
1038
+ // cardList draws findings most severe first; the confirmed-findings list
1039
+ // carries a CSS-only severity filter (without :has() support all cards show).
1040
+ func (v view) cardList(items []map[string]any, byF map[string][]map[string]any, filter bool) string {
1041
+ sorted := append([]map[string]any(nil), items...)
1042
+ sort.SliceStable(sorted, func(i, j int) bool { return sevRank(sorted[i]) < sevRank(sorted[j]) })
1043
+ var w strings.Builder
1044
+ if filter {
1045
+ n := map[string]int{}
1046
+ for _, f := range items {
1047
+ n[sevKey(f)]++
1048
+ }
1049
+ fmt.Fprintf(&w, `<fieldset class="filter"><legend>Show</legend><input type="radio" name="sev" id="sev-all" checked>`+
1050
+ `<label for="sev-all">All <span class="count">%d</span></label>`, len(items))
1051
+ for _, s := range sevOrder {
1052
+ if n[s] > 0 {
1053
+ fmt.Fprintf(&w, `<input type="radio" name="sev" id="sev-%s"><label for="sev-%s">%s <span class="count">%d</span></label>`,
1054
+ s, s, sevLabel[s], n[s])
1055
+ }
1056
+ }
1057
+ w.WriteString("</fieldset>")
1058
+ }
1059
+ w.WriteString(`<div class="cards">`)
1060
+ for _, f := range sorted {
1061
+ w.WriteString("\n" + v.card(f, byF[pyStr(f["id"])], !filter))
1062
+ }
1063
+ w.WriteString("</div>")
1064
+ return w.String()
1065
+ }
1066
+
1067
+ // card renders one finding as a one-line row that expands: severity, id,
1068
+ // title and first location in the summary; failing case, impact, evidence,
1069
+ // fix, verification and history inside.
1070
+ func (v view) card(f map[string]any, tasks []map[string]any, opp bool) string {
1071
+ sev := sevKey(f)
1072
+ var w strings.Builder
1073
+ w.WriteString("<details")
1074
+ if id := pyStr(f["id"]); rowID.MatchString(id) {
1075
+ w.WriteString(` id="` + esc(id) + `"`)
1076
+ }
1077
+ w.WriteString(` class="finding s-` + sev + `"><summary>`)
1078
+ if !opp {
1079
+ label := sevLabel[sev]
1080
+ if s := ovio.Str(f["severity"]); sev == "none" && s != "" {
1081
+ label = esc(v.redact(s))
1082
+ }
1083
+ w.WriteString(`<span class="sev s-` + sev + `"><span class="key s-` + sev + `"></span>` + label + `</span>`)
1084
+ }
1085
+ w.WriteString(`<code class="fid">` + v.e(f["id"]) + `</code><span class="ftitle">` + v.e(f["title"]))
1086
+ if st := ovio.Str(f["status"]); st != "" && st != "confirmed" {
1087
+ w.WriteString(` <span class="pill">` + v.e(f["status"]) + `</span>`)
1088
+ }
1089
+ w.WriteString(`</span>`)
1090
+ if l := ovio.List(f["locations"]); len(l) > 0 {
1091
+ more := ""
1092
+ if len(l) > 1 {
1093
+ more = fmt.Sprintf(" +%d", len(l)-1)
1094
+ }
1095
+ w.WriteString(`<code class="where">` + v.loc(l[0]) + more + `</code>`)
1096
+ }
1097
+ w.WriteString(`</summary><div class="fbody">`)
1098
+ if opp {
1099
+ w.WriteString(v.kv(f, "benefit:impact"))
1100
+ } else {
1101
+ w.WriteString(v.kv(f, "failing case:failing_scenario", "impact", "lanes", "kind"))
1102
+ }
1103
+ w.WriteString(v.details("Evidence", v.kv(f, "evidence", "confidence", "expected", "actual", "prerequisites",
1104
+ "safeguards checked:safeguards_checked", "limitations", "locations", "related", "domain", "scope origin:scope_origin",
1105
+ "rules:rule_ids", "profiles:profile_ids", "components:component_ids")))
1106
+ w.WriteString(v.details("Proposed fix", v.kv(f, "smallest fix:smallest_fix", "fix options:fix_options",
1107
+ "write scope:write_scope", "test plan:test_plan", "performance hypothesis:perf_hypothesis")))
1108
+ var ver strings.Builder
1109
+ if !empty(f["verified_by"]) {
1110
+ ver.WriteString(`<dt>verified by</dt><dd>` + v.e(f["verified_by"]) + `</dd>`)
1111
+ }
1112
+ if len(tasks) > 0 {
1113
+ ver.WriteString(`<dt>repair tasks</dt><dd>`)
1114
+ for i, t := range tasks {
1115
+ if i > 0 {
1116
+ ver.WriteString(", ")
1117
+ }
1118
+ if id := pyStr(t["id"]); rowID.MatchString(id) {
1119
+ ver.WriteString(`<a href="#` + esc(id) + `">` + esc(id) + `</a>`)
1120
+ } else {
1121
+ ver.WriteString(v.e(t["id"]))
1122
+ }
1123
+ }
1124
+ ver.WriteString("</dd>")
1125
+ }
1126
+ if ver.Len() > 0 {
1127
+ w.WriteString(v.details("Verification", `<dl class="kv">`+ver.String()+`</dl>`))
1128
+ }
1129
+ if h := ovio.List(f["history"]); len(h) > 0 {
1130
+ var hist strings.Builder
1131
+ hist.WriteString(`<ol class="hist">`)
1132
+ for _, e := range h {
1133
+ hist.WriteString("<li>")
1134
+ if m, ok := e.(map[string]any); ok {
1135
+ hist.WriteString(`<strong>` + v.e(m["status"]) + `</strong>`)
1136
+ for _, k := range sortedKeys(m) {
1137
+ if k != "status" && !empty(m[k]) {
1138
+ hist.WriteString(` · <span class="muted">` + esc(k) + `</span> ` + v.e(m[k]))
1139
+ }
1140
+ }
1141
+ } else {
1142
+ hist.WriteString(v.e(e))
1143
+ }
1144
+ hist.WriteString("</li>")
1145
+ }
1146
+ hist.WriteString("</ol>")
1147
+ w.WriteString(v.details(fmt.Sprintf("History (%d)", len(h)), hist.String()))
1148
+ }
1149
+ w.WriteString("</div></details>")
1150
+ return w.String()
1151
+ }
1152
+
1153
+ // loc renders a location object as path:start-end (symbol).
1154
+ func (v view) loc(x any) string {
1155
+ l, ok := x.(map[string]any)
1156
+ if !ok || empty(l["path"]) {
1157
+ return v.e(x)
1158
+ }
1159
+ s := pyStr(l["path"])
1160
+ if !empty(l["start"]) {
1161
+ s += ":" + pyStr(l["start"])
1162
+ if e := l["end"]; !empty(e) && pyStr(e) != pyStr(l["start"]) {
1163
+ s += "-" + pyStr(e)
1164
+ }
1165
+ }
1166
+ if !empty(l["symbol"]) {
1167
+ s += " (" + pyStr(l["symbol"]) + ")"
1168
+ }
1169
+ return esc(v.redact(s))
1170
+ }
1171
+
1172
+ // kv renders the recorded fields as a definition list; "label:key" renames.
1173
+ func (v view) kv(f map[string]any, fields ...string) string {
1174
+ var w strings.Builder
1175
+ for _, fl := range fields {
1176
+ label, key, ok := strings.Cut(fl, ":")
1177
+ if !ok {
1178
+ key = label
1179
+ }
1180
+ x := f[key]
1181
+ if empty(x) {
1182
+ continue
1183
+ }
1184
+ val := v.e(x)
1185
+ if key == "locations" {
1186
+ var ls []string
1187
+ for _, l := range ovio.List(x) {
1188
+ ls = append(ls, `<code>`+v.loc(l)+`</code>`)
1189
+ }
1190
+ val = strings.Join(ls, "<br>")
1191
+ }
1192
+ w.WriteString(`<dt>` + esc(label) + `</dt><dd>` + val + `</dd>`)
1193
+ }
1194
+ if w.Len() == 0 {
1195
+ return ""
1196
+ }
1197
+ return `<dl class="kv">` + w.String() + `</dl>`
1198
+ }
1199
+
1200
+ // details renders one labelled block inside an expanded finding.
1201
+ func (v view) details(summary, body string) string {
1202
+ if body == "" {
1203
+ return ""
1204
+ }
1205
+ return `<div class="blk"><h4>` + esc(summary) + `</h4>` + body + `</div>`
1206
+ }
1207
+
1208
+ // threshold returns one scorecard threshold row: value, minimum and result.
1209
+ func threshold(sc map[string]any, scope string) (val, least *big.Rat, result string) {
1210
+ for _, r := range objs(sc["thresholds"]) {
1211
+ if s, ok := r["scope"].(string); !ok || s != scope {
1212
+ continue
1213
+ }
1214
+ if x := ovio.Get(r, "value.exact"); !empty(x) {
1215
+ val, _ = new(big.Rat).SetString(pyStr(x))
1216
+ }
1217
+ if !empty(r["min"]) {
1218
+ least, _ = new(big.Rat).SetString(pyStr(r["min"]))
1219
+ }
1220
+ return val, least, ovio.Str(r["result"])
1221
+ }
1222
+ return nil, nil, ""
1223
+ }
1224
+
1225
+ // floor2 shows a score to two decimals, rounded down so it never overstates.
1226
+ func floor2(r *big.Rat) string {
1227
+ if r.Sign() < 0 {
1228
+ return r.FloatString(2)
1229
+ }
1230
+ n := new(big.Int).Mul(r.Num(), big.NewInt(100))
1231
+ n.Div(n, r.Denom())
1232
+ q, m := new(big.Int).DivMod(n, big.NewInt(100), new(big.Int))
1233
+ return fmt.Sprintf("%s.%02d", q, m.Int64())
1234
+ }