devrites 5.13.1 → 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 (818) hide show
  1. package/CHANGELOG.md +16 -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/install_test.go +1 -0
  20. package/engine/internal/overhaul/admit/admit_test.go +25 -0
  21. package/engine/internal/overhaul/admit/run.go +13 -1
  22. package/engine/internal/overhaul/overhaul.go +1 -0
  23. package/engine/internal/overhaul/records/check.go +24 -0
  24. package/engine/internal/overhaul/records/init.go +132 -0
  25. package/engine/internal/overhaul/records/init_test.go +96 -0
  26. package/engine/internal/overhaul/records/records_test.go +35 -1
  27. package/engine/internal/overhaul/records/run.go +8 -0
  28. package/engine/internal/overhaul/render/run.go +518 -60
  29. package/engine/internal/overhaul/render/run_test.go +176 -7
  30. package/engine/internal/overhaul/render/visual.go +617 -0
  31. package/engine/internal/overhaul/snapshot/run.go +52 -5
  32. package/engine/internal/overhaul/snapshot/run_test.go +24 -2
  33. package/pack/.claude/agents/_shared/composition-overhaul.md +1 -0
  34. package/pack/.claude/agents/_shared/result-admission.md +3 -1
  35. package/pack/.claude/agents/devrites-code-reviewer.md +17 -7
  36. package/pack/.claude/agents/devrites-devex-reviewer.md +5 -5
  37. package/pack/.claude/agents/devrites-doubt-reviewer.md +6 -3
  38. package/pack/.claude/agents/devrites-evidence-scout.md +10 -0
  39. package/pack/.claude/agents/devrites-frontend-reviewer.md +34 -20
  40. package/pack/.claude/agents/devrites-performance-reviewer.md +29 -11
  41. package/pack/.claude/agents/devrites-plan-reviewer.md +8 -5
  42. package/pack/.claude/agents/devrites-proof-runner.md +20 -4
  43. package/pack/.claude/agents/devrites-retrospector.md +18 -3
  44. package/pack/.claude/agents/devrites-security-auditor.md +32 -26
  45. package/pack/.claude/agents/devrites-simplifier-reviewer.md +4 -4
  46. package/pack/.claude/agents/devrites-spec-reviewer.md +4 -2
  47. package/pack/.claude/agents/devrites-strategy-reviewer.md +11 -8
  48. package/pack/.claude/agents/devrites-test-analyst.md +8 -5
  49. package/pack/.claude/agents/devrites-upgrade-planner.md +3 -0
  50. package/pack/{generated/codex/skills/overhaul/roles/backend-engineer.md → .claude/agents/overhaul-backend-engineer.md} +13 -7
  51. package/pack/{generated/codex/skills/overhaul/roles/boundary.md → .claude/agents/overhaul-boundary.md} +12 -6
  52. package/pack/{generated/codex/skills/overhaul/roles/craft.md → .claude/agents/overhaul-craft.md} +12 -6
  53. package/pack/.claude/{skills/overhaul/roles/frontend-engineer.md → agents/overhaul-frontend-engineer.md} +13 -7
  54. package/pack/{generated/claude/skills/overhaul/roles/implementer.md → .claude/agents/overhaul-implementer.md} +11 -5
  55. package/pack/{generated/codex/skills/overhaul/roles/recon.md → .claude/agents/overhaul-recon.md} +26 -12
  56. package/pack/{generated/codex/skills/overhaul/roles/specialist.md → .claude/agents/overhaul-specialist.md} +14 -8
  57. package/pack/{generated/claude/skills/overhaul/roles/verifier.md → .claude/agents/overhaul-verifier.md} +15 -4
  58. package/pack/.claude/skills/devrites-audit/SKILL.md +2 -1
  59. package/pack/.claude/skills/devrites-browser-proof/SKILL.md +13 -2
  60. package/pack/.claude/skills/devrites-browser-proof/reference/browser-performance.md +7 -4
  61. package/pack/.claude/skills/devrites-browser-proof/reference/visual-verdict.md +14 -10
  62. package/pack/.claude/skills/devrites-frontend-craft/SKILL.md +4 -3
  63. package/pack/.claude/skills/devrites-frontend-craft/reference/quality-standards.md +22 -32
  64. package/pack/.claude/skills/devrites-lib/reference/intent-map.md +25 -5
  65. package/pack/.claude/skills/devrites-lib/reference/orchestration-profiles.md +1 -2
  66. package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +60 -8
  67. package/pack/.claude/skills/devrites-lib/reference/reply-contract.md +21 -6
  68. package/pack/.claude/skills/devrites-lib/reference/standards/README.md +0 -1
  69. package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +9 -16
  70. package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +34 -2
  71. package/pack/.claude/skills/devrites-lib/reference/standards/audit-coverage.md +5 -1
  72. package/pack/.claude/skills/devrites-lib/reference/standards/browser-proof-checklist.md +14 -3
  73. package/pack/.claude/skills/devrites-lib/reference/standards/code-navigation.md +8 -2
  74. package/pack/.claude/skills/devrites-lib/reference/standards/code-review.md +11 -4
  75. package/pack/.claude/skills/devrites-lib/reference/standards/context-hygiene.md +17 -6
  76. package/pack/.claude/skills/devrites-lib/reference/standards/core.md +16 -7
  77. package/pack/.claude/skills/devrites-lib/reference/standards/definition-of-done.md +1 -1
  78. package/pack/.claude/skills/devrites-lib/reference/standards/developer-experience.md +3 -1
  79. package/pack/.claude/skills/devrites-lib/reference/standards/duplicate-code.md +11 -0
  80. package/pack/.claude/skills/devrites-lib/reference/standards/gates.md +16 -1
  81. package/pack/.claude/skills/devrites-lib/reference/standards/performance.md +11 -0
  82. package/pack/.claude/skills/devrites-lib/reference/standards/prose-style.md +4 -3
  83. package/pack/.claude/skills/devrites-lib/reference/standards/review/README.md +6 -1
  84. package/pack/.claude/skills/devrites-lib/reference/standards/review/react.md +55 -0
  85. package/pack/.claude/skills/devrites-lib/reference/standards/review/stack-profile.md +155 -0
  86. package/pack/.claude/skills/devrites-lib/reference/standards/review/ts-js.md +22 -2
  87. package/pack/.claude/skills/devrites-lib/reference/standards/security-checklist.md +6 -3
  88. package/pack/.claude/skills/devrites-lib/reference/standards/security.md +35 -17
  89. package/pack/.claude/skills/devrites-lib/reference/standards/skill-authoring.md +8 -12
  90. package/pack/.claude/skills/devrites-lib/reference/standards/spec-grammar.md +4 -1
  91. package/pack/.claude/skills/devrites-lib/reference/standards/testing.md +36 -0
  92. package/pack/.claude/skills/devrites-lib/reference/standards/tooling.md +22 -2
  93. package/pack/.claude/skills/devrites-lib/reference/standards/verification-methods.md +33 -0
  94. package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +1 -1
  95. package/pack/.claude/skills/devrites-prose-craft/SKILL.md +9 -3
  96. package/pack/.claude/skills/devrites-prose-craft/reference/examples.md +11 -6
  97. package/pack/.claude/skills/overhaul/SKILL.md +53 -34
  98. package/pack/.claude/skills/overhaul/references/audit-domains.md +2 -2
  99. package/pack/.claude/skills/overhaul/references/lifecycle.md +6 -2
  100. package/pack/.claude/skills/overhaul/references/orchestration.md +37 -25
  101. package/pack/.claude/skills/overhaul/references/records.md +16 -3
  102. package/pack/.claude/skills/overhaul/references/review-and-report.md +3 -1
  103. package/pack/.claude/skills/overhaul/references/scope-and-safety.md +47 -20
  104. package/pack/.claude/skills/rite-adopt/SKILL.md +5 -2
  105. package/pack/.claude/skills/rite-adopt/reference/adoption.md +6 -0
  106. package/pack/.claude/skills/rite-adopt/reference/anti-patterns.md +1 -1
  107. package/pack/.claude/skills/rite-autocomplete/SKILL.md +2 -1
  108. package/pack/.claude/skills/rite-autocomplete/reference/loop.md +3 -1
  109. package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +6 -0
  110. package/pack/.claude/skills/rite-build/reference/checkpoint-protocol.md +8 -16
  111. package/pack/.claude/skills/rite-build/reference/parallel-batch.md +9 -0
  112. package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +5 -1
  113. package/pack/.claude/skills/rite-clarify/SKILL.md +1 -1
  114. package/pack/.claude/skills/rite-converge/SKILL.md +9 -2
  115. package/pack/.claude/skills/rite-converge/reference/convergence-assessment.md +5 -0
  116. package/pack/.claude/skills/rite-define/SKILL.md +6 -1
  117. package/pack/.claude/skills/rite-define/reference/plan-template.md +4 -0
  118. package/pack/.claude/skills/rite-doctor/SKILL.md +6 -2
  119. package/pack/.claude/skills/rite-handoff/SKILL.md +14 -2
  120. package/pack/.claude/skills/rite-handoff/reference/handoff-template.md +16 -4
  121. package/pack/.claude/skills/rite-learn/SKILL.md +34 -4
  122. package/pack/.claude/skills/rite-plan/SKILL.md +2 -1
  123. package/pack/.claude/skills/rite-plan/reference/task-breakdown.md +6 -0
  124. package/pack/.claude/skills/rite-polish/SKILL.md +10 -4
  125. package/pack/.claude/skills/rite-polish/reference/anti-ai-slop.md +59 -36
  126. package/pack/.claude/skills/rite-polish/reference/harden-checklist.md +2 -1
  127. package/pack/.claude/skills/rite-polish/reference/ui.md +12 -3
  128. package/pack/.claude/skills/rite-pov/SKILL.md +14 -3
  129. package/pack/.claude/skills/rite-pr-feedback/SKILL.md +5 -1
  130. package/pack/.claude/skills/rite-pressure-test/SKILL.md +5 -3
  131. package/pack/.claude/skills/rite-prove/SKILL.md +12 -4
  132. package/pack/.claude/skills/rite-prove/reference/anti-patterns.md +1 -1
  133. package/pack/.claude/skills/rite-prove/reference/failure-triage.md +12 -3
  134. package/pack/.claude/skills/rite-quick/SKILL.md +2 -0
  135. package/pack/.claude/skills/rite-resolve/SKILL.md +7 -1
  136. package/pack/.claude/skills/rite-resolve/reference/answer-protocol.md +1 -1
  137. package/pack/.claude/skills/rite-review/SKILL.md +4 -1
  138. package/pack/.claude/skills/rite-review/reference/performance-checklist.md +9 -1
  139. package/pack/.claude/skills/rite-seal/SKILL.md +5 -3
  140. package/pack/.claude/skills/rite-seal/reference/anti-patterns.md +1 -1
  141. package/pack/.claude/skills/rite-seal/reference/phase-contract.md +1 -1
  142. package/pack/.claude/skills/rite-spec/SKILL.md +12 -4
  143. package/pack/.claude/skills/rite-spec/reference/spec-template.md +4 -2
  144. package/pack/.claude/skills/rite-spec/reference/state-workspace.md +3 -0
  145. package/pack/.claude/skills/rite-status/SKILL.md +11 -3
  146. package/pack/.claude/skills/rite-upgrade/SKILL.md +7 -1
  147. package/pack/.claude/skills/rite-vet/SKILL.md +4 -2
  148. package/pack/.claude/skills/rite-zoom-out/SKILL.md +5 -0
  149. package/pack/generated/README.md +2 -2
  150. package/pack/generated/claude/agents/devrites-code-reviewer.md +19 -5
  151. package/pack/generated/claude/agents/devrites-devex-reviewer.md +7 -3
  152. package/pack/generated/claude/agents/devrites-doubt-reviewer.md +8 -1
  153. package/pack/generated/claude/agents/devrites-evidence-scout.md +14 -0
  154. package/pack/generated/claude/agents/devrites-frontend-reviewer.md +36 -18
  155. package/pack/generated/claude/agents/devrites-performance-reviewer.md +31 -9
  156. package/pack/generated/claude/agents/devrites-plan-reviewer.md +10 -3
  157. package/pack/generated/claude/agents/devrites-proof-runner.md +24 -4
  158. package/pack/generated/claude/agents/devrites-retrospector.md +22 -3
  159. package/pack/generated/claude/agents/devrites-security-auditor.md +34 -24
  160. package/pack/generated/claude/agents/devrites-simplifier-reviewer.md +6 -2
  161. package/pack/generated/claude/agents/devrites-spec-reviewer.md +8 -2
  162. package/pack/generated/claude/agents/devrites-strategy-reviewer.md +13 -6
  163. package/pack/generated/claude/agents/devrites-test-analyst.md +10 -3
  164. package/pack/generated/claude/agents/devrites-upgrade-planner.md +7 -0
  165. package/pack/{.claude/skills/overhaul/roles/backend-engineer.md → generated/claude/agents/overhaul-backend-engineer.md} +13 -7
  166. package/pack/generated/claude/{skills/overhaul/roles/boundary.md → agents/overhaul-boundary.md} +12 -6
  167. package/pack/generated/claude/{skills/overhaul/roles/craft.md → agents/overhaul-craft.md} +12 -6
  168. package/pack/generated/{codex/skills/overhaul/roles/frontend-engineer.md → claude/agents/overhaul-frontend-engineer.md} +13 -7
  169. package/pack/generated/{codex/skills/overhaul/roles/implementer.md → claude/agents/overhaul-implementer.md} +11 -5
  170. package/pack/generated/claude/{skills/overhaul/roles/recon.md → agents/overhaul-recon.md} +26 -12
  171. package/pack/generated/claude/{skills/overhaul/roles/specialist.md → agents/overhaul-specialist.md} +14 -8
  172. package/pack/generated/{codex/skills/overhaul/roles/verifier.md → claude/agents/overhaul-verifier.md} +15 -4
  173. package/pack/generated/claude/skills/devrites-audit/SKILL.md +2 -1
  174. package/pack/generated/claude/skills/devrites-browser-proof/SKILL.md +13 -2
  175. package/pack/generated/claude/skills/devrites-browser-proof/reference/browser-performance.md +7 -4
  176. package/pack/generated/claude/skills/devrites-browser-proof/reference/visual-verdict.md +14 -10
  177. package/pack/generated/claude/skills/devrites-frontend-craft/SKILL.md +4 -3
  178. package/pack/generated/claude/skills/devrites-frontend-craft/reference/quality-standards.md +22 -32
  179. package/pack/generated/claude/skills/devrites-lib/reference/intent-map.md +25 -5
  180. package/pack/generated/claude/skills/devrites-lib/reference/orchestration-profiles.md +1 -2
  181. package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +60 -8
  182. package/pack/generated/claude/skills/devrites-lib/reference/reply-contract.md +21 -6
  183. package/pack/generated/claude/skills/devrites-lib/reference/standards/README.md +0 -1
  184. package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +9 -16
  185. package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +34 -2
  186. package/pack/generated/claude/skills/devrites-lib/reference/standards/audit-coverage.md +5 -1
  187. package/pack/generated/claude/skills/devrites-lib/reference/standards/browser-proof-checklist.md +14 -3
  188. package/pack/generated/claude/skills/devrites-lib/reference/standards/code-navigation.md +8 -2
  189. package/pack/generated/claude/skills/devrites-lib/reference/standards/code-review.md +11 -4
  190. package/pack/generated/claude/skills/devrites-lib/reference/standards/context-hygiene.md +17 -6
  191. package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +16 -7
  192. package/pack/generated/claude/skills/devrites-lib/reference/standards/definition-of-done.md +1 -1
  193. package/pack/generated/claude/skills/devrites-lib/reference/standards/developer-experience.md +3 -1
  194. package/pack/generated/claude/skills/devrites-lib/reference/standards/duplicate-code.md +11 -0
  195. package/pack/generated/claude/skills/devrites-lib/reference/standards/gates.md +16 -1
  196. package/pack/generated/claude/skills/devrites-lib/reference/standards/performance.md +11 -0
  197. package/pack/generated/claude/skills/devrites-lib/reference/standards/prose-style.md +4 -3
  198. package/pack/generated/claude/skills/devrites-lib/reference/standards/review/README.md +6 -1
  199. package/pack/generated/claude/skills/devrites-lib/reference/standards/review/react.md +55 -0
  200. package/pack/generated/claude/skills/devrites-lib/reference/standards/review/stack-profile.md +155 -0
  201. package/pack/generated/claude/skills/devrites-lib/reference/standards/review/ts-js.md +22 -2
  202. package/pack/generated/claude/skills/devrites-lib/reference/standards/security-checklist.md +6 -3
  203. package/pack/generated/claude/skills/devrites-lib/reference/standards/security.md +35 -17
  204. package/pack/generated/claude/skills/devrites-lib/reference/standards/skill-authoring.md +8 -12
  205. package/pack/generated/claude/skills/devrites-lib/reference/standards/spec-grammar.md +4 -1
  206. package/pack/generated/claude/skills/devrites-lib/reference/standards/testing.md +36 -0
  207. package/pack/generated/claude/skills/devrites-lib/reference/standards/tooling.md +22 -2
  208. package/pack/generated/claude/skills/devrites-lib/reference/standards/verification-methods.md +33 -0
  209. package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +1 -1
  210. package/pack/generated/claude/skills/devrites-prose-craft/SKILL.md +9 -3
  211. package/pack/generated/claude/skills/devrites-prose-craft/reference/examples.md +11 -6
  212. package/pack/generated/claude/skills/overhaul/SKILL.md +53 -34
  213. package/pack/generated/claude/skills/overhaul/references/audit-domains.md +2 -2
  214. package/pack/generated/claude/skills/overhaul/references/lifecycle.md +6 -2
  215. package/pack/generated/claude/skills/overhaul/references/orchestration.md +37 -25
  216. package/pack/generated/claude/skills/overhaul/references/records.md +16 -3
  217. package/pack/generated/claude/skills/overhaul/references/review-and-report.md +3 -1
  218. package/pack/generated/claude/skills/overhaul/references/scope-and-safety.md +47 -20
  219. package/pack/generated/claude/skills/rite-adopt/SKILL.md +5 -2
  220. package/pack/generated/claude/skills/rite-adopt/reference/adoption.md +6 -0
  221. package/pack/generated/claude/skills/rite-adopt/reference/anti-patterns.md +1 -1
  222. package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +2 -1
  223. package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +3 -1
  224. package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +6 -0
  225. package/pack/generated/claude/skills/rite-build/reference/checkpoint-protocol.md +8 -16
  226. package/pack/generated/claude/skills/rite-build/reference/parallel-batch.md +9 -0
  227. package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +5 -1
  228. package/pack/generated/claude/skills/rite-clarify/SKILL.md +1 -1
  229. package/pack/generated/claude/skills/rite-converge/SKILL.md +9 -2
  230. package/pack/generated/claude/skills/rite-converge/reference/convergence-assessment.md +5 -0
  231. package/pack/generated/claude/skills/rite-define/SKILL.md +6 -1
  232. package/pack/generated/claude/skills/rite-define/reference/plan-template.md +4 -0
  233. package/pack/generated/claude/skills/rite-doctor/SKILL.md +6 -2
  234. package/pack/generated/claude/skills/rite-handoff/SKILL.md +14 -2
  235. package/pack/generated/claude/skills/rite-handoff/reference/handoff-template.md +16 -4
  236. package/pack/generated/claude/skills/rite-learn/SKILL.md +34 -4
  237. package/pack/generated/claude/skills/rite-plan/SKILL.md +2 -1
  238. package/pack/generated/claude/skills/rite-plan/reference/task-breakdown.md +6 -0
  239. package/pack/generated/claude/skills/rite-polish/SKILL.md +10 -4
  240. package/pack/generated/claude/skills/rite-polish/reference/anti-ai-slop.md +59 -36
  241. package/pack/generated/claude/skills/rite-polish/reference/harden-checklist.md +2 -1
  242. package/pack/generated/claude/skills/rite-polish/reference/ui.md +12 -3
  243. package/pack/generated/claude/skills/rite-pov/SKILL.md +14 -3
  244. package/pack/generated/claude/skills/rite-pr-feedback/SKILL.md +5 -1
  245. package/pack/generated/claude/skills/rite-pressure-test/SKILL.md +5 -3
  246. package/pack/generated/claude/skills/rite-prove/SKILL.md +12 -4
  247. package/pack/generated/claude/skills/rite-prove/reference/anti-patterns.md +1 -1
  248. package/pack/generated/claude/skills/rite-prove/reference/failure-triage.md +12 -3
  249. package/pack/generated/claude/skills/rite-quick/SKILL.md +2 -0
  250. package/pack/generated/claude/skills/rite-resolve/SKILL.md +7 -1
  251. package/pack/generated/claude/skills/rite-resolve/reference/answer-protocol.md +1 -1
  252. package/pack/generated/claude/skills/rite-review/SKILL.md +4 -1
  253. package/pack/generated/claude/skills/rite-review/reference/performance-checklist.md +9 -1
  254. package/pack/generated/claude/skills/rite-seal/SKILL.md +5 -3
  255. package/pack/generated/claude/skills/rite-seal/reference/anti-patterns.md +1 -1
  256. package/pack/generated/claude/skills/rite-seal/reference/phase-contract.md +1 -1
  257. package/pack/generated/claude/skills/rite-spec/SKILL.md +12 -4
  258. package/pack/generated/claude/skills/rite-spec/reference/spec-template.md +4 -2
  259. package/pack/generated/claude/skills/rite-spec/reference/state-workspace.md +3 -0
  260. package/pack/generated/claude/skills/rite-status/SKILL.md +11 -3
  261. package/pack/generated/claude/skills/rite-upgrade/SKILL.md +7 -1
  262. package/pack/generated/claude/skills/rite-vet/SKILL.md +4 -2
  263. package/pack/generated/claude/skills/rite-zoom-out/SKILL.md +5 -0
  264. package/pack/generated/codex/AGENTS.md +1 -0
  265. package/pack/generated/codex/agents/devrites-code-reviewer.toml +19 -5
  266. package/pack/generated/codex/agents/devrites-devex-reviewer.toml +7 -3
  267. package/pack/generated/codex/agents/devrites-doubt-reviewer.toml +8 -1
  268. package/pack/generated/codex/agents/devrites-evidence-scout.toml +14 -0
  269. package/pack/generated/codex/agents/devrites-frontend-reviewer.toml +36 -18
  270. package/pack/generated/codex/agents/devrites-performance-reviewer.toml +31 -9
  271. package/pack/generated/codex/agents/devrites-plan-reviewer.toml +10 -3
  272. package/pack/generated/codex/agents/devrites-proof-runner.toml +24 -4
  273. package/pack/generated/codex/agents/devrites-retrospector.toml +22 -3
  274. package/pack/generated/codex/agents/devrites-security-auditor.toml +34 -24
  275. package/pack/generated/codex/agents/devrites-simplifier-reviewer.toml +6 -2
  276. package/pack/generated/codex/agents/devrites-spec-reviewer.toml +8 -2
  277. package/pack/generated/codex/agents/devrites-strategy-reviewer.toml +13 -6
  278. package/pack/generated/codex/agents/devrites-test-analyst.toml +10 -3
  279. package/pack/generated/codex/agents/devrites-upgrade-planner.toml +7 -0
  280. package/pack/generated/{devin/skills/overhaul/roles/backend-engineer.md → codex/agents/overhaul-backend-engineer.toml} +15 -7
  281. package/pack/{.claude/skills/overhaul/roles/boundary.md → generated/codex/agents/overhaul-boundary.toml} +14 -6
  282. package/pack/generated/{devin/skills/overhaul/roles/craft.md → codex/agents/overhaul-craft.toml} +14 -6
  283. package/pack/generated/{claude/skills/overhaul/roles/frontend-engineer.md → codex/agents/overhaul-frontend-engineer.toml} +15 -7
  284. package/pack/generated/{devin/skills/overhaul/roles/implementer.md → codex/agents/overhaul-implementer.toml} +13 -5
  285. package/pack/generated/{devin/skills/overhaul/roles/recon.md → codex/agents/overhaul-recon.toml} +28 -12
  286. package/pack/generated/{devin/skills/overhaul/roles/specialist.md → codex/agents/overhaul-specialist.toml} +16 -8
  287. package/pack/{.claude/skills/overhaul/roles/verifier.md → generated/codex/agents/overhaul-verifier.toml} +17 -4
  288. package/pack/generated/codex/skills/devrites-audit/SKILL.md +2 -1
  289. package/pack/generated/codex/skills/devrites-browser-proof/SKILL.md +13 -2
  290. package/pack/generated/codex/skills/devrites-browser-proof/reference/browser-performance.md +7 -4
  291. package/pack/generated/codex/skills/devrites-browser-proof/reference/visual-verdict.md +14 -10
  292. package/pack/generated/codex/skills/devrites-frontend-craft/SKILL.md +4 -3
  293. package/pack/generated/codex/skills/devrites-frontend-craft/reference/quality-standards.md +22 -32
  294. package/pack/generated/codex/skills/devrites-lib/reference/intent-map.md +25 -5
  295. package/pack/generated/codex/skills/devrites-lib/reference/orchestration-profiles.md +1 -2
  296. package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +60 -8
  297. package/pack/generated/codex/skills/devrites-lib/reference/reply-contract.md +21 -6
  298. package/pack/generated/codex/skills/devrites-lib/reference/standards/README.md +0 -1
  299. package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +9 -16
  300. package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +34 -2
  301. package/pack/generated/codex/skills/devrites-lib/reference/standards/audit-coverage.md +5 -1
  302. package/pack/generated/codex/skills/devrites-lib/reference/standards/browser-proof-checklist.md +14 -3
  303. package/pack/generated/codex/skills/devrites-lib/reference/standards/code-navigation.md +8 -2
  304. package/pack/generated/codex/skills/devrites-lib/reference/standards/code-review.md +11 -4
  305. package/pack/generated/codex/skills/devrites-lib/reference/standards/context-hygiene.md +17 -6
  306. package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +16 -7
  307. package/pack/generated/codex/skills/devrites-lib/reference/standards/definition-of-done.md +1 -1
  308. package/pack/generated/codex/skills/devrites-lib/reference/standards/developer-experience.md +3 -1
  309. package/pack/generated/codex/skills/devrites-lib/reference/standards/duplicate-code.md +11 -0
  310. package/pack/generated/codex/skills/devrites-lib/reference/standards/gates.md +16 -1
  311. package/pack/generated/codex/skills/devrites-lib/reference/standards/performance.md +11 -0
  312. package/pack/generated/codex/skills/devrites-lib/reference/standards/prose-style.md +4 -3
  313. package/pack/generated/codex/skills/devrites-lib/reference/standards/review/README.md +6 -1
  314. package/pack/generated/codex/skills/devrites-lib/reference/standards/review/react.md +55 -0
  315. package/pack/generated/codex/skills/devrites-lib/reference/standards/review/stack-profile.md +155 -0
  316. package/pack/generated/codex/skills/devrites-lib/reference/standards/review/ts-js.md +22 -2
  317. package/pack/generated/codex/skills/devrites-lib/reference/standards/security-checklist.md +6 -3
  318. package/pack/generated/codex/skills/devrites-lib/reference/standards/security.md +35 -17
  319. package/pack/generated/codex/skills/devrites-lib/reference/standards/skill-authoring.md +8 -12
  320. package/pack/generated/codex/skills/devrites-lib/reference/standards/spec-grammar.md +4 -1
  321. package/pack/generated/codex/skills/devrites-lib/reference/standards/testing.md +36 -0
  322. package/pack/generated/codex/skills/devrites-lib/reference/standards/tooling.md +22 -2
  323. package/pack/generated/codex/skills/devrites-lib/reference/standards/verification-methods.md +33 -0
  324. package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +1 -1
  325. package/pack/generated/codex/skills/devrites-prose-craft/SKILL.md +9 -3
  326. package/pack/generated/codex/skills/devrites-prose-craft/reference/examples.md +11 -6
  327. package/pack/generated/codex/skills/overhaul/SKILL.md +53 -34
  328. package/pack/generated/codex/skills/overhaul/references/audit-domains.md +2 -2
  329. package/pack/generated/codex/skills/overhaul/references/lifecycle.md +6 -2
  330. package/pack/generated/codex/skills/overhaul/references/orchestration.md +37 -25
  331. package/pack/generated/codex/skills/overhaul/references/records.md +16 -3
  332. package/pack/generated/codex/skills/overhaul/references/review-and-report.md +3 -1
  333. package/pack/generated/codex/skills/overhaul/references/scope-and-safety.md +47 -20
  334. package/pack/generated/codex/skills/rite-adopt/SKILL.md +5 -2
  335. package/pack/generated/codex/skills/rite-adopt/reference/adoption.md +6 -0
  336. package/pack/generated/codex/skills/rite-adopt/reference/anti-patterns.md +1 -1
  337. package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +2 -1
  338. package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +3 -1
  339. package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +6 -0
  340. package/pack/generated/codex/skills/rite-build/reference/checkpoint-protocol.md +8 -16
  341. package/pack/generated/codex/skills/rite-build/reference/parallel-batch.md +9 -0
  342. package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +5 -1
  343. package/pack/generated/codex/skills/rite-clarify/SKILL.md +1 -1
  344. package/pack/generated/codex/skills/rite-converge/SKILL.md +9 -2
  345. package/pack/generated/codex/skills/rite-converge/reference/convergence-assessment.md +5 -0
  346. package/pack/generated/codex/skills/rite-define/SKILL.md +6 -1
  347. package/pack/generated/codex/skills/rite-define/reference/plan-template.md +4 -0
  348. package/pack/generated/codex/skills/rite-doctor/SKILL.md +6 -2
  349. package/pack/generated/codex/skills/rite-handoff/SKILL.md +14 -2
  350. package/pack/generated/codex/skills/rite-handoff/reference/handoff-template.md +16 -4
  351. package/pack/generated/codex/skills/rite-learn/SKILL.md +34 -4
  352. package/pack/generated/codex/skills/rite-plan/SKILL.md +2 -1
  353. package/pack/generated/codex/skills/rite-plan/reference/task-breakdown.md +6 -0
  354. package/pack/generated/codex/skills/rite-polish/SKILL.md +10 -4
  355. package/pack/generated/codex/skills/rite-polish/reference/anti-ai-slop.md +59 -36
  356. package/pack/generated/codex/skills/rite-polish/reference/harden-checklist.md +2 -1
  357. package/pack/generated/codex/skills/rite-polish/reference/ui.md +12 -3
  358. package/pack/generated/codex/skills/rite-pov/SKILL.md +14 -3
  359. package/pack/generated/codex/skills/rite-pr-feedback/SKILL.md +5 -1
  360. package/pack/generated/codex/skills/rite-pressure-test/SKILL.md +5 -3
  361. package/pack/generated/codex/skills/rite-prove/SKILL.md +12 -4
  362. package/pack/generated/codex/skills/rite-prove/reference/anti-patterns.md +1 -1
  363. package/pack/generated/codex/skills/rite-prove/reference/failure-triage.md +12 -3
  364. package/pack/generated/codex/skills/rite-quick/SKILL.md +2 -0
  365. package/pack/generated/codex/skills/rite-resolve/SKILL.md +7 -1
  366. package/pack/generated/codex/skills/rite-resolve/reference/answer-protocol.md +1 -1
  367. package/pack/generated/codex/skills/rite-review/SKILL.md +4 -1
  368. package/pack/generated/codex/skills/rite-review/reference/performance-checklist.md +9 -1
  369. package/pack/generated/codex/skills/rite-seal/SKILL.md +5 -3
  370. package/pack/generated/codex/skills/rite-seal/reference/anti-patterns.md +1 -1
  371. package/pack/generated/codex/skills/rite-seal/reference/phase-contract.md +1 -1
  372. package/pack/generated/codex/skills/rite-spec/SKILL.md +12 -4
  373. package/pack/generated/codex/skills/rite-spec/reference/spec-template.md +4 -2
  374. package/pack/generated/codex/skills/rite-spec/reference/state-workspace.md +3 -0
  375. package/pack/generated/codex/skills/rite-status/SKILL.md +11 -3
  376. package/pack/generated/codex/skills/rite-upgrade/SKILL.md +7 -1
  377. package/pack/generated/codex/skills/rite-vet/SKILL.md +4 -2
  378. package/pack/generated/codex/skills/rite-zoom-out/SKILL.md +5 -0
  379. package/pack/generated/devin/AGENTS.md +1 -0
  380. package/pack/generated/devin/agents/devrites-code-reviewer.md +19 -4
  381. package/pack/generated/devin/agents/devrites-devex-reviewer.md +7 -2
  382. package/pack/generated/devin/agents/devrites-doubt-reviewer.md +8 -0
  383. package/pack/generated/devin/agents/devrites-evidence-scout.md +14 -0
  384. package/pack/generated/devin/agents/devrites-frontend-reviewer.md +36 -17
  385. package/pack/generated/devin/agents/devrites-performance-reviewer.md +31 -8
  386. package/pack/generated/devin/agents/devrites-plan-reviewer.md +10 -2
  387. package/pack/generated/devin/agents/devrites-proof-runner.md +24 -4
  388. package/pack/generated/devin/agents/devrites-retrospector.md +22 -3
  389. package/pack/generated/devin/agents/devrites-security-auditor.md +34 -23
  390. package/pack/generated/devin/agents/devrites-simplifier-reviewer.md +6 -1
  391. package/pack/generated/devin/agents/devrites-spec-reviewer.md +8 -2
  392. package/pack/generated/devin/agents/devrites-strategy-reviewer.md +13 -5
  393. package/pack/generated/devin/agents/devrites-test-analyst.md +10 -2
  394. package/pack/generated/devin/agents/devrites-upgrade-planner.md +7 -0
  395. package/pack/generated/{claude/skills/overhaul/roles/backend-engineer.md → devin/agents/overhaul-backend-engineer.md} +21 -7
  396. package/pack/generated/devin/{skills/overhaul/roles/boundary.md → agents/overhaul-boundary.md} +20 -6
  397. package/pack/{.claude/skills/overhaul/roles/craft.md → generated/devin/agents/overhaul-craft.md} +20 -6
  398. package/pack/generated/devin/{skills/overhaul/roles/frontend-engineer.md → agents/overhaul-frontend-engineer.md} +21 -7
  399. package/pack/{.claude/skills/overhaul/roles/implementer.md → generated/devin/agents/overhaul-implementer.md} +19 -5
  400. package/pack/{.claude/skills/overhaul/roles/recon.md → generated/devin/agents/overhaul-recon.md} +34 -12
  401. package/pack/{.claude/skills/overhaul/roles/specialist.md → generated/devin/agents/overhaul-specialist.md} +22 -8
  402. package/pack/generated/devin/{skills/overhaul/roles/verifier.md → agents/overhaul-verifier.md} +23 -4
  403. package/pack/generated/devin/skills/devrites-audit/SKILL.md +2 -1
  404. package/pack/generated/devin/skills/devrites-browser-proof/SKILL.md +13 -2
  405. package/pack/generated/devin/skills/devrites-browser-proof/reference/browser-performance.md +7 -4
  406. package/pack/generated/devin/skills/devrites-browser-proof/reference/visual-verdict.md +14 -10
  407. package/pack/generated/devin/skills/devrites-frontend-craft/SKILL.md +4 -3
  408. package/pack/generated/devin/skills/devrites-frontend-craft/reference/quality-standards.md +22 -32
  409. package/pack/generated/devin/skills/devrites-lib/reference/intent-map.md +25 -5
  410. package/pack/generated/devin/skills/devrites-lib/reference/orchestration-profiles.md +1 -2
  411. package/pack/generated/devin/skills/devrites-lib/reference/parallel-dispatch.md +60 -8
  412. package/pack/generated/devin/skills/devrites-lib/reference/reply-contract.md +21 -6
  413. package/pack/generated/devin/skills/devrites-lib/reference/standards/README.md +0 -1
  414. package/pack/generated/devin/skills/devrites-lib/reference/standards/afk-hitl.md +9 -16
  415. package/pack/generated/devin/skills/devrites-lib/reference/standards/agents.md +34 -2
  416. package/pack/generated/devin/skills/devrites-lib/reference/standards/audit-coverage.md +5 -1
  417. package/pack/generated/devin/skills/devrites-lib/reference/standards/browser-proof-checklist.md +14 -3
  418. package/pack/generated/devin/skills/devrites-lib/reference/standards/code-navigation.md +8 -2
  419. package/pack/generated/devin/skills/devrites-lib/reference/standards/code-review.md +11 -4
  420. package/pack/generated/devin/skills/devrites-lib/reference/standards/context-hygiene.md +17 -6
  421. package/pack/generated/devin/skills/devrites-lib/reference/standards/core.md +16 -7
  422. package/pack/generated/devin/skills/devrites-lib/reference/standards/definition-of-done.md +1 -1
  423. package/pack/generated/devin/skills/devrites-lib/reference/standards/developer-experience.md +3 -1
  424. package/pack/generated/devin/skills/devrites-lib/reference/standards/duplicate-code.md +11 -0
  425. package/pack/generated/devin/skills/devrites-lib/reference/standards/gates.md +16 -1
  426. package/pack/generated/devin/skills/devrites-lib/reference/standards/performance.md +11 -0
  427. package/pack/generated/devin/skills/devrites-lib/reference/standards/prose-style.md +4 -3
  428. package/pack/generated/devin/skills/devrites-lib/reference/standards/review/README.md +6 -1
  429. package/pack/generated/devin/skills/devrites-lib/reference/standards/review/react.md +55 -0
  430. package/pack/generated/devin/skills/devrites-lib/reference/standards/review/stack-profile.md +155 -0
  431. package/pack/generated/devin/skills/devrites-lib/reference/standards/review/ts-js.md +22 -2
  432. package/pack/generated/devin/skills/devrites-lib/reference/standards/security-checklist.md +6 -3
  433. package/pack/generated/devin/skills/devrites-lib/reference/standards/security.md +35 -17
  434. package/pack/generated/devin/skills/devrites-lib/reference/standards/skill-authoring.md +8 -12
  435. package/pack/generated/devin/skills/devrites-lib/reference/standards/spec-grammar.md +4 -1
  436. package/pack/generated/devin/skills/devrites-lib/reference/standards/testing.md +36 -0
  437. package/pack/generated/devin/skills/devrites-lib/reference/standards/tooling.md +22 -2
  438. package/pack/generated/devin/skills/devrites-lib/reference/standards/verification-methods.md +33 -0
  439. package/pack/generated/devin/skills/devrites-lib/reference/workspace-artifact-schema.md +1 -1
  440. package/pack/generated/devin/skills/devrites-prose-craft/SKILL.md +9 -3
  441. package/pack/generated/devin/skills/devrites-prose-craft/reference/examples.md +11 -6
  442. package/pack/generated/devin/skills/overhaul/SKILL.md +53 -34
  443. package/pack/generated/devin/skills/overhaul/references/audit-domains.md +2 -2
  444. package/pack/generated/devin/skills/overhaul/references/lifecycle.md +6 -2
  445. package/pack/generated/devin/skills/overhaul/references/orchestration.md +37 -25
  446. package/pack/generated/devin/skills/overhaul/references/records.md +16 -3
  447. package/pack/generated/devin/skills/overhaul/references/review-and-report.md +3 -1
  448. package/pack/generated/devin/skills/overhaul/references/scope-and-safety.md +47 -20
  449. package/pack/generated/devin/skills/rite-adopt/SKILL.md +5 -2
  450. package/pack/generated/devin/skills/rite-adopt/reference/adoption.md +6 -0
  451. package/pack/generated/devin/skills/rite-adopt/reference/anti-patterns.md +1 -1
  452. package/pack/generated/devin/skills/rite-autocomplete/SKILL.md +2 -1
  453. package/pack/generated/devin/skills/rite-autocomplete/reference/loop.md +3 -1
  454. package/pack/generated/devin/skills/rite-autocomplete/reference/stop-conditions.md +6 -0
  455. package/pack/generated/devin/skills/rite-build/reference/checkpoint-protocol.md +8 -16
  456. package/pack/generated/devin/skills/rite-build/reference/parallel-batch.md +9 -0
  457. package/pack/generated/devin/skills/rite-build/reference/wright-dispatch.md +5 -1
  458. package/pack/generated/devin/skills/rite-clarify/SKILL.md +1 -1
  459. package/pack/generated/devin/skills/rite-converge/SKILL.md +9 -2
  460. package/pack/generated/devin/skills/rite-converge/reference/convergence-assessment.md +5 -0
  461. package/pack/generated/devin/skills/rite-define/SKILL.md +6 -1
  462. package/pack/generated/devin/skills/rite-define/reference/plan-template.md +4 -0
  463. package/pack/generated/devin/skills/rite-doctor/SKILL.md +6 -2
  464. package/pack/generated/devin/skills/rite-handoff/SKILL.md +14 -2
  465. package/pack/generated/devin/skills/rite-handoff/reference/handoff-template.md +16 -4
  466. package/pack/generated/devin/skills/rite-learn/SKILL.md +34 -4
  467. package/pack/generated/devin/skills/rite-plan/SKILL.md +2 -1
  468. package/pack/generated/devin/skills/rite-plan/reference/task-breakdown.md +6 -0
  469. package/pack/generated/devin/skills/rite-polish/SKILL.md +10 -4
  470. package/pack/generated/devin/skills/rite-polish/reference/anti-ai-slop.md +59 -36
  471. package/pack/generated/devin/skills/rite-polish/reference/harden-checklist.md +2 -1
  472. package/pack/generated/devin/skills/rite-polish/reference/ui.md +12 -3
  473. package/pack/generated/devin/skills/rite-pov/SKILL.md +14 -3
  474. package/pack/generated/devin/skills/rite-pr-feedback/SKILL.md +5 -1
  475. package/pack/generated/devin/skills/rite-pressure-test/SKILL.md +5 -3
  476. package/pack/generated/devin/skills/rite-prove/SKILL.md +12 -4
  477. package/pack/generated/devin/skills/rite-prove/reference/anti-patterns.md +1 -1
  478. package/pack/generated/devin/skills/rite-prove/reference/failure-triage.md +12 -3
  479. package/pack/generated/devin/skills/rite-quick/SKILL.md +2 -0
  480. package/pack/generated/devin/skills/rite-resolve/SKILL.md +7 -1
  481. package/pack/generated/devin/skills/rite-resolve/reference/answer-protocol.md +1 -1
  482. package/pack/generated/devin/skills/rite-review/SKILL.md +4 -1
  483. package/pack/generated/devin/skills/rite-review/reference/performance-checklist.md +9 -1
  484. package/pack/generated/devin/skills/rite-seal/SKILL.md +5 -3
  485. package/pack/generated/devin/skills/rite-seal/reference/anti-patterns.md +1 -1
  486. package/pack/generated/devin/skills/rite-seal/reference/phase-contract.md +1 -1
  487. package/pack/generated/devin/skills/rite-spec/SKILL.md +12 -4
  488. package/pack/generated/devin/skills/rite-spec/reference/spec-template.md +4 -2
  489. package/pack/generated/devin/skills/rite-spec/reference/state-workspace.md +3 -0
  490. package/pack/generated/devin/skills/rite-status/SKILL.md +11 -3
  491. package/pack/generated/devin/skills/rite-upgrade/SKILL.md +7 -1
  492. package/pack/generated/devin/skills/rite-vet/SKILL.md +4 -2
  493. package/pack/generated/devin/skills/rite-zoom-out/SKILL.md +5 -0
  494. package/pack/generated/omp/agents/devrites-code-reviewer.md +19 -4
  495. package/pack/generated/omp/agents/devrites-devex-reviewer.md +7 -2
  496. package/pack/generated/omp/agents/devrites-doubt-reviewer.md +8 -0
  497. package/pack/generated/omp/agents/devrites-evidence-scout.md +15 -1
  498. package/pack/generated/omp/agents/devrites-frontend-reviewer.md +37 -17
  499. package/pack/generated/omp/agents/devrites-performance-reviewer.md +31 -8
  500. package/pack/generated/omp/agents/devrites-plan-reviewer.md +10 -2
  501. package/pack/generated/omp/agents/devrites-proof-runner.md +24 -4
  502. package/pack/generated/omp/agents/devrites-retrospector.md +22 -3
  503. package/pack/generated/omp/agents/devrites-security-auditor.md +34 -23
  504. package/pack/generated/omp/agents/devrites-simplifier-reviewer.md +6 -1
  505. package/pack/generated/omp/agents/devrites-slice-wright.md +6 -6
  506. package/pack/generated/omp/agents/devrites-spec-reviewer.md +8 -2
  507. package/pack/generated/omp/agents/devrites-strategy-reviewer.md +13 -5
  508. package/pack/generated/omp/agents/devrites-test-analyst.md +10 -2
  509. package/pack/generated/omp/agents/devrites-upgrade-planner.md +7 -0
  510. package/pack/generated/omp/agents/overhaul-backend-engineer.md +68 -0
  511. package/pack/generated/omp/agents/overhaul-boundary.md +63 -0
  512. package/pack/generated/omp/agents/overhaul-craft.md +84 -0
  513. package/pack/generated/omp/agents/overhaul-frontend-engineer.md +70 -0
  514. package/pack/generated/omp/agents/overhaul-implementer.md +66 -0
  515. package/pack/generated/omp/agents/overhaul-recon.md +75 -0
  516. package/pack/generated/omp/agents/overhaul-specialist.md +63 -0
  517. package/pack/generated/omp/agents/overhaul-verifier.md +72 -0
  518. package/pack/generated/omp/commands/rite-adopt.md +5 -0
  519. package/pack/generated/omp/commands/rite-autocomplete.md +5 -0
  520. package/pack/generated/omp/commands/rite-build.md +5 -0
  521. package/pack/generated/omp/commands/rite-clarify.md +5 -0
  522. package/pack/generated/omp/commands/rite-converge.md +5 -0
  523. package/pack/generated/omp/commands/rite-customize.md +5 -0
  524. package/pack/generated/omp/commands/rite-define.md +5 -0
  525. package/pack/generated/omp/commands/rite-doctor.md +5 -0
  526. package/pack/generated/omp/commands/rite-dogfood.md +5 -0
  527. package/pack/generated/omp/commands/rite-explain.md +5 -0
  528. package/pack/generated/omp/commands/rite-frame.md +5 -0
  529. package/pack/generated/omp/commands/rite-handoff.md +5 -0
  530. package/pack/generated/omp/commands/rite-learn.md +5 -0
  531. package/pack/generated/omp/commands/rite-plan.md +5 -0
  532. package/pack/generated/omp/commands/rite-polish.md +5 -0
  533. package/pack/generated/omp/commands/rite-pov.md +5 -0
  534. package/pack/generated/omp/commands/rite-pr-feedback.md +5 -0
  535. package/pack/generated/omp/commands/rite-pressure-test.md +5 -0
  536. package/pack/generated/omp/commands/rite-prototype.md +5 -0
  537. package/pack/generated/omp/commands/rite-prove.md +5 -0
  538. package/pack/generated/omp/commands/rite-quick.md +5 -0
  539. package/pack/generated/omp/commands/rite-resolve.md +5 -0
  540. package/pack/generated/omp/commands/rite-review.md +5 -0
  541. package/pack/generated/omp/commands/rite-seal.md +5 -0
  542. package/pack/generated/omp/commands/rite-ship.md +5 -0
  543. package/pack/generated/omp/commands/rite-spec.md +5 -0
  544. package/pack/generated/omp/commands/rite-status.md +5 -0
  545. package/pack/generated/omp/commands/rite-temper.md +5 -0
  546. package/pack/generated/omp/commands/rite-upgrade.md +5 -0
  547. package/pack/generated/omp/commands/rite-vet.md +5 -0
  548. package/pack/generated/omp/commands/rite-watch-pr.md +5 -0
  549. package/pack/generated/omp/commands/rite-zoom-out.md +5 -0
  550. package/pack/generated/omp/commands/rite.md +5 -0
  551. package/pack/generated/omp/skills/devrites-audit/SKILL.md +2 -1
  552. package/pack/generated/omp/skills/devrites-browser-proof/SKILL.md +13 -2
  553. package/pack/generated/omp/skills/devrites-browser-proof/reference/browser-performance.md +7 -4
  554. package/pack/generated/omp/skills/devrites-browser-proof/reference/visual-verdict.md +14 -10
  555. package/pack/generated/omp/skills/devrites-frontend-craft/SKILL.md +4 -3
  556. package/pack/generated/omp/skills/devrites-frontend-craft/reference/quality-standards.md +22 -32
  557. package/pack/generated/omp/skills/devrites-interview/SKILL.md +1 -1
  558. package/pack/generated/omp/skills/devrites-lib/reference/intent-map.md +25 -5
  559. package/pack/generated/omp/skills/devrites-lib/reference/orchestration-profiles.md +1 -2
  560. package/pack/generated/omp/skills/devrites-lib/reference/parallel-dispatch.md +60 -8
  561. package/pack/generated/omp/skills/devrites-lib/reference/reply-contract.md +21 -6
  562. package/pack/generated/omp/skills/devrites-lib/reference/standards/README.md +0 -1
  563. package/pack/generated/omp/skills/devrites-lib/reference/standards/afk-hitl.md +11 -18
  564. package/pack/generated/omp/skills/devrites-lib/reference/standards/agents.md +35 -3
  565. package/pack/generated/omp/skills/devrites-lib/reference/standards/audit-coverage.md +5 -1
  566. package/pack/generated/omp/skills/devrites-lib/reference/standards/browser-proof-checklist.md +14 -3
  567. package/pack/generated/omp/skills/devrites-lib/reference/standards/code-navigation.md +8 -2
  568. package/pack/generated/omp/skills/devrites-lib/reference/standards/code-review.md +11 -4
  569. package/pack/generated/omp/skills/devrites-lib/reference/standards/context-hygiene.md +17 -6
  570. package/pack/generated/omp/skills/devrites-lib/reference/standards/core.md +16 -7
  571. package/pack/generated/omp/skills/devrites-lib/reference/standards/definition-of-done.md +1 -1
  572. package/pack/generated/omp/skills/devrites-lib/reference/standards/developer-experience.md +3 -1
  573. package/pack/generated/omp/skills/devrites-lib/reference/standards/duplicate-code.md +11 -0
  574. package/pack/generated/omp/skills/devrites-lib/reference/standards/gates.md +16 -1
  575. package/pack/generated/omp/skills/devrites-lib/reference/standards/performance.md +11 -0
  576. package/pack/generated/omp/skills/devrites-lib/reference/standards/prose-style.md +4 -3
  577. package/pack/generated/omp/skills/devrites-lib/reference/standards/review/README.md +6 -1
  578. package/pack/generated/omp/skills/devrites-lib/reference/standards/review/react.md +55 -0
  579. package/pack/generated/omp/skills/devrites-lib/reference/standards/review/stack-profile.md +155 -0
  580. package/pack/generated/omp/skills/devrites-lib/reference/standards/review/ts-js.md +22 -2
  581. package/pack/generated/omp/skills/devrites-lib/reference/standards/security-checklist.md +6 -3
  582. package/pack/generated/omp/skills/devrites-lib/reference/standards/security.md +35 -17
  583. package/pack/generated/omp/skills/devrites-lib/reference/standards/skill-authoring.md +8 -12
  584. package/pack/generated/omp/skills/devrites-lib/reference/standards/spec-grammar.md +4 -1
  585. package/pack/generated/omp/skills/devrites-lib/reference/standards/testing.md +36 -0
  586. package/pack/generated/omp/skills/devrites-lib/reference/standards/tooling.md +22 -2
  587. package/pack/generated/omp/skills/devrites-lib/reference/standards/verification-methods.md +33 -0
  588. package/pack/generated/omp/skills/devrites-lib/reference/workspace-artifact-schema.md +1 -1
  589. package/pack/generated/omp/skills/devrites-prose-craft/SKILL.md +9 -3
  590. package/pack/generated/omp/skills/devrites-prose-craft/reference/examples.md +11 -6
  591. package/pack/generated/omp/skills/overhaul/SKILL.md +53 -34
  592. package/pack/generated/omp/skills/overhaul/references/audit-domains.md +2 -2
  593. package/pack/generated/omp/skills/overhaul/references/lifecycle.md +6 -2
  594. package/pack/generated/omp/skills/overhaul/references/orchestration.md +37 -25
  595. package/pack/generated/omp/skills/overhaul/references/records.md +16 -3
  596. package/pack/generated/omp/skills/overhaul/references/review-and-report.md +3 -1
  597. package/pack/generated/omp/skills/overhaul/references/scope-and-safety.md +47 -20
  598. package/pack/generated/omp/skills/rite-adopt/SKILL.md +5 -2
  599. package/pack/generated/omp/skills/rite-adopt/reference/adoption.md +6 -0
  600. package/pack/generated/omp/skills/rite-adopt/reference/anti-patterns.md +1 -1
  601. package/pack/generated/omp/skills/rite-autocomplete/SKILL.md +2 -1
  602. package/pack/generated/omp/skills/rite-autocomplete/reference/loop.md +3 -1
  603. package/pack/generated/omp/skills/rite-autocomplete/reference/stop-conditions.md +6 -0
  604. package/pack/generated/omp/skills/rite-build/reference/checkpoint-protocol.md +10 -18
  605. package/pack/generated/omp/skills/rite-build/reference/parallel-batch.md +10 -1
  606. package/pack/generated/omp/skills/rite-build/reference/wright-dispatch.md +6 -2
  607. package/pack/generated/omp/skills/rite-clarify/SKILL.md +1 -1
  608. package/pack/generated/omp/skills/rite-converge/SKILL.md +9 -2
  609. package/pack/generated/omp/skills/rite-converge/reference/convergence-assessment.md +5 -0
  610. package/pack/generated/omp/skills/rite-define/SKILL.md +6 -1
  611. package/pack/generated/omp/skills/rite-define/reference/plan-template.md +4 -0
  612. package/pack/generated/omp/skills/rite-doctor/SKILL.md +6 -2
  613. package/pack/generated/omp/skills/rite-explain/SKILL.md +2 -2
  614. package/pack/generated/omp/skills/rite-explain/reference/intake.md +1 -1
  615. package/pack/generated/omp/skills/rite-handoff/SKILL.md +14 -2
  616. package/pack/generated/omp/skills/rite-handoff/reference/handoff-template.md +16 -4
  617. package/pack/generated/omp/skills/rite-learn/SKILL.md +34 -4
  618. package/pack/generated/omp/skills/rite-plan/SKILL.md +2 -1
  619. package/pack/generated/omp/skills/rite-plan/reference/task-breakdown.md +6 -0
  620. package/pack/generated/omp/skills/rite-polish/SKILL.md +10 -4
  621. package/pack/generated/omp/skills/rite-polish/reference/anti-ai-slop.md +59 -36
  622. package/pack/generated/omp/skills/rite-polish/reference/harden-checklist.md +2 -1
  623. package/pack/generated/omp/skills/rite-polish/reference/ui.md +12 -3
  624. package/pack/generated/omp/skills/rite-pov/SKILL.md +14 -3
  625. package/pack/generated/omp/skills/rite-pr-feedback/SKILL.md +5 -1
  626. package/pack/generated/omp/skills/rite-pressure-test/SKILL.md +5 -3
  627. package/pack/generated/omp/skills/rite-prove/SKILL.md +12 -4
  628. package/pack/generated/omp/skills/rite-prove/reference/anti-patterns.md +1 -1
  629. package/pack/generated/omp/skills/rite-prove/reference/failure-triage.md +12 -3
  630. package/pack/generated/omp/skills/rite-quick/SKILL.md +2 -0
  631. package/pack/generated/omp/skills/rite-resolve/SKILL.md +8 -2
  632. package/pack/generated/omp/skills/rite-resolve/reference/answer-protocol.md +1 -1
  633. package/pack/generated/omp/skills/rite-review/SKILL.md +4 -1
  634. package/pack/generated/omp/skills/rite-review/reference/performance-checklist.md +9 -1
  635. package/pack/generated/omp/skills/rite-seal/SKILL.md +5 -3
  636. package/pack/generated/omp/skills/rite-seal/reference/anti-patterns.md +1 -1
  637. package/pack/generated/omp/skills/rite-seal/reference/phase-contract.md +1 -1
  638. package/pack/generated/omp/skills/rite-spec/SKILL.md +12 -4
  639. package/pack/generated/omp/skills/rite-spec/reference/investigation.md +1 -1
  640. package/pack/generated/omp/skills/rite-spec/reference/spec-template.md +4 -2
  641. package/pack/generated/omp/skills/rite-spec/reference/state-workspace.md +3 -0
  642. package/pack/generated/omp/skills/rite-status/SKILL.md +11 -3
  643. package/pack/generated/omp/skills/rite-temper/SKILL.md +1 -1
  644. package/pack/generated/omp/skills/rite-upgrade/SKILL.md +7 -1
  645. package/pack/generated/omp/skills/rite-vet/SKILL.md +4 -2
  646. package/pack/generated/omp/skills/rite-vet/reference/review-axes.md +2 -2
  647. package/pack/generated/omp/skills/rite-zoom-out/SKILL.md +5 -0
  648. package/pack/generated/pi/AGENTS.md +1 -0
  649. package/pack/generated/pi/agents/devrites-code-reviewer.md +19 -4
  650. package/pack/generated/pi/agents/devrites-devex-reviewer.md +7 -2
  651. package/pack/generated/pi/agents/devrites-doubt-reviewer.md +8 -0
  652. package/pack/generated/pi/agents/devrites-evidence-scout.md +14 -0
  653. package/pack/generated/pi/agents/devrites-frontend-reviewer.md +36 -17
  654. package/pack/generated/pi/agents/devrites-performance-reviewer.md +31 -8
  655. package/pack/generated/pi/agents/devrites-plan-reviewer.md +10 -2
  656. package/pack/generated/pi/agents/devrites-proof-runner.md +24 -4
  657. package/pack/generated/pi/agents/devrites-retrospector.md +22 -3
  658. package/pack/generated/pi/agents/devrites-security-auditor.md +34 -23
  659. package/pack/generated/pi/agents/devrites-simplifier-reviewer.md +6 -1
  660. package/pack/generated/pi/agents/devrites-spec-reviewer.md +8 -2
  661. package/pack/generated/pi/agents/devrites-strategy-reviewer.md +13 -5
  662. package/pack/generated/pi/agents/devrites-test-analyst.md +10 -2
  663. package/pack/generated/pi/agents/devrites-upgrade-planner.md +7 -0
  664. package/pack/generated/pi/agents/overhaul-backend-engineer.md +69 -0
  665. package/pack/generated/pi/agents/overhaul-boundary.md +64 -0
  666. package/pack/generated/pi/agents/overhaul-craft.md +85 -0
  667. package/pack/generated/pi/agents/overhaul-frontend-engineer.md +71 -0
  668. package/pack/generated/pi/agents/overhaul-implementer.md +67 -0
  669. package/pack/generated/pi/agents/overhaul-recon.md +76 -0
  670. package/pack/generated/pi/agents/overhaul-specialist.md +64 -0
  671. package/pack/generated/pi/agents/overhaul-verifier.md +73 -0
  672. package/pack/generated/pi/prompts/rite-adopt.md +1 -1
  673. package/pack/generated/pi/prompts/rite-autocomplete.md +1 -1
  674. package/pack/generated/pi/prompts/rite-build.md +1 -1
  675. package/pack/generated/pi/prompts/rite-clarify.md +1 -1
  676. package/pack/generated/pi/prompts/rite-converge.md +2 -2
  677. package/pack/generated/pi/prompts/rite-customize.md +1 -1
  678. package/pack/generated/pi/prompts/rite-define.md +1 -1
  679. package/pack/generated/pi/prompts/rite-doctor.md +1 -1
  680. package/pack/generated/pi/prompts/rite-dogfood.md +1 -1
  681. package/pack/generated/pi/prompts/rite-explain.md +1 -1
  682. package/pack/generated/pi/prompts/rite-frame.md +1 -1
  683. package/pack/generated/pi/prompts/rite-handoff.md +1 -1
  684. package/pack/generated/pi/prompts/rite-learn.md +1 -1
  685. package/pack/generated/pi/prompts/rite-plan.md +1 -1
  686. package/pack/generated/pi/prompts/rite-polish.md +1 -1
  687. package/pack/generated/pi/prompts/rite-pov.md +1 -1
  688. package/pack/generated/pi/prompts/rite-pr-feedback.md +1 -1
  689. package/pack/generated/pi/prompts/rite-pressure-test.md +1 -1
  690. package/pack/generated/pi/prompts/rite-prototype.md +1 -1
  691. package/pack/generated/pi/prompts/rite-prove.md +1 -1
  692. package/pack/generated/pi/prompts/rite-quick.md +1 -1
  693. package/pack/generated/pi/prompts/rite-resolve.md +1 -1
  694. package/pack/generated/pi/prompts/rite-review.md +1 -1
  695. package/pack/generated/pi/prompts/rite-seal.md +1 -1
  696. package/pack/generated/pi/prompts/rite-ship.md +1 -1
  697. package/pack/generated/pi/prompts/rite-spec.md +1 -1
  698. package/pack/generated/pi/prompts/rite-status.md +1 -1
  699. package/pack/generated/pi/prompts/rite-temper.md +1 -1
  700. package/pack/generated/pi/prompts/rite-upgrade.md +1 -1
  701. package/pack/generated/pi/prompts/rite-vet.md +1 -1
  702. package/pack/generated/pi/prompts/rite-watch-pr.md +1 -1
  703. package/pack/generated/pi/prompts/rite-zoom-out.md +1 -1
  704. package/pack/generated/pi/prompts/rite.md +1 -1
  705. package/pack/generated/pi/skills/devrites-audit/SKILL.md +2 -1
  706. package/pack/generated/pi/skills/devrites-browser-proof/SKILL.md +13 -2
  707. package/pack/generated/pi/skills/devrites-browser-proof/reference/browser-performance.md +7 -4
  708. package/pack/generated/pi/skills/devrites-browser-proof/reference/visual-verdict.md +14 -10
  709. package/pack/generated/pi/skills/devrites-frontend-craft/SKILL.md +4 -3
  710. package/pack/generated/pi/skills/devrites-frontend-craft/reference/quality-standards.md +22 -32
  711. package/pack/generated/pi/skills/devrites-lib/reference/intent-map.md +25 -5
  712. package/pack/generated/pi/skills/devrites-lib/reference/orchestration-profiles.md +1 -2
  713. package/pack/generated/pi/skills/devrites-lib/reference/parallel-dispatch.md +60 -8
  714. package/pack/generated/pi/skills/devrites-lib/reference/reply-contract.md +21 -6
  715. package/pack/generated/pi/skills/devrites-lib/reference/standards/README.md +0 -1
  716. package/pack/generated/pi/skills/devrites-lib/reference/standards/afk-hitl.md +9 -16
  717. package/pack/generated/pi/skills/devrites-lib/reference/standards/agents.md +34 -2
  718. package/pack/generated/pi/skills/devrites-lib/reference/standards/audit-coverage.md +5 -1
  719. package/pack/generated/pi/skills/devrites-lib/reference/standards/browser-proof-checklist.md +14 -3
  720. package/pack/generated/pi/skills/devrites-lib/reference/standards/code-navigation.md +8 -2
  721. package/pack/generated/pi/skills/devrites-lib/reference/standards/code-review.md +11 -4
  722. package/pack/generated/pi/skills/devrites-lib/reference/standards/context-hygiene.md +17 -6
  723. package/pack/generated/pi/skills/devrites-lib/reference/standards/core.md +16 -7
  724. package/pack/generated/pi/skills/devrites-lib/reference/standards/definition-of-done.md +1 -1
  725. package/pack/generated/pi/skills/devrites-lib/reference/standards/developer-experience.md +3 -1
  726. package/pack/generated/pi/skills/devrites-lib/reference/standards/duplicate-code.md +11 -0
  727. package/pack/generated/pi/skills/devrites-lib/reference/standards/gates.md +16 -1
  728. package/pack/generated/pi/skills/devrites-lib/reference/standards/performance.md +11 -0
  729. package/pack/generated/pi/skills/devrites-lib/reference/standards/prose-style.md +4 -3
  730. package/pack/generated/pi/skills/devrites-lib/reference/standards/review/README.md +6 -1
  731. package/pack/generated/pi/skills/devrites-lib/reference/standards/review/react.md +55 -0
  732. package/pack/generated/pi/skills/devrites-lib/reference/standards/review/stack-profile.md +155 -0
  733. package/pack/generated/pi/skills/devrites-lib/reference/standards/review/ts-js.md +22 -2
  734. package/pack/generated/pi/skills/devrites-lib/reference/standards/security-checklist.md +6 -3
  735. package/pack/generated/pi/skills/devrites-lib/reference/standards/security.md +35 -17
  736. package/pack/generated/pi/skills/devrites-lib/reference/standards/skill-authoring.md +8 -12
  737. package/pack/generated/pi/skills/devrites-lib/reference/standards/spec-grammar.md +4 -1
  738. package/pack/generated/pi/skills/devrites-lib/reference/standards/testing.md +36 -0
  739. package/pack/generated/pi/skills/devrites-lib/reference/standards/tooling.md +22 -2
  740. package/pack/generated/pi/skills/devrites-lib/reference/standards/verification-methods.md +33 -0
  741. package/pack/generated/pi/skills/devrites-lib/reference/workspace-artifact-schema.md +1 -1
  742. package/pack/generated/pi/skills/devrites-prose-craft/SKILL.md +9 -3
  743. package/pack/generated/pi/skills/devrites-prose-craft/reference/examples.md +11 -6
  744. package/pack/generated/pi/skills/overhaul/SKILL.md +53 -34
  745. package/pack/generated/pi/skills/overhaul/references/audit-domains.md +2 -2
  746. package/pack/generated/pi/skills/overhaul/references/lifecycle.md +6 -2
  747. package/pack/generated/pi/skills/overhaul/references/orchestration.md +37 -25
  748. package/pack/generated/pi/skills/overhaul/references/records.md +16 -3
  749. package/pack/generated/pi/skills/overhaul/references/review-and-report.md +3 -1
  750. package/pack/generated/pi/skills/overhaul/references/scope-and-safety.md +47 -20
  751. package/pack/generated/pi/skills/rite-adopt/SKILL.md +5 -2
  752. package/pack/generated/pi/skills/rite-adopt/reference/adoption.md +6 -0
  753. package/pack/generated/pi/skills/rite-adopt/reference/anti-patterns.md +1 -1
  754. package/pack/generated/pi/skills/rite-autocomplete/SKILL.md +2 -1
  755. package/pack/generated/pi/skills/rite-autocomplete/reference/loop.md +3 -1
  756. package/pack/generated/pi/skills/rite-autocomplete/reference/stop-conditions.md +6 -0
  757. package/pack/generated/pi/skills/rite-build/reference/checkpoint-protocol.md +8 -16
  758. package/pack/generated/pi/skills/rite-build/reference/parallel-batch.md +9 -0
  759. package/pack/generated/pi/skills/rite-build/reference/wright-dispatch.md +5 -1
  760. package/pack/generated/pi/skills/rite-clarify/SKILL.md +1 -1
  761. package/pack/generated/pi/skills/rite-converge/SKILL.md +9 -2
  762. package/pack/generated/pi/skills/rite-converge/reference/convergence-assessment.md +5 -0
  763. package/pack/generated/pi/skills/rite-define/SKILL.md +6 -1
  764. package/pack/generated/pi/skills/rite-define/reference/plan-template.md +4 -0
  765. package/pack/generated/pi/skills/rite-doctor/SKILL.md +6 -2
  766. package/pack/generated/pi/skills/rite-handoff/SKILL.md +14 -2
  767. package/pack/generated/pi/skills/rite-handoff/reference/handoff-template.md +16 -4
  768. package/pack/generated/pi/skills/rite-learn/SKILL.md +34 -4
  769. package/pack/generated/pi/skills/rite-plan/SKILL.md +2 -1
  770. package/pack/generated/pi/skills/rite-plan/reference/task-breakdown.md +6 -0
  771. package/pack/generated/pi/skills/rite-polish/SKILL.md +10 -4
  772. package/pack/generated/pi/skills/rite-polish/reference/anti-ai-slop.md +59 -36
  773. package/pack/generated/pi/skills/rite-polish/reference/harden-checklist.md +2 -1
  774. package/pack/generated/pi/skills/rite-polish/reference/ui.md +12 -3
  775. package/pack/generated/pi/skills/rite-pov/SKILL.md +14 -3
  776. package/pack/generated/pi/skills/rite-pr-feedback/SKILL.md +5 -1
  777. package/pack/generated/pi/skills/rite-pressure-test/SKILL.md +5 -3
  778. package/pack/generated/pi/skills/rite-prove/SKILL.md +12 -4
  779. package/pack/generated/pi/skills/rite-prove/reference/anti-patterns.md +1 -1
  780. package/pack/generated/pi/skills/rite-prove/reference/failure-triage.md +12 -3
  781. package/pack/generated/pi/skills/rite-quick/SKILL.md +2 -0
  782. package/pack/generated/pi/skills/rite-resolve/SKILL.md +7 -1
  783. package/pack/generated/pi/skills/rite-resolve/reference/answer-protocol.md +1 -1
  784. package/pack/generated/pi/skills/rite-review/SKILL.md +4 -1
  785. package/pack/generated/pi/skills/rite-review/reference/performance-checklist.md +9 -1
  786. package/pack/generated/pi/skills/rite-seal/SKILL.md +5 -3
  787. package/pack/generated/pi/skills/rite-seal/reference/anti-patterns.md +1 -1
  788. package/pack/generated/pi/skills/rite-seal/reference/phase-contract.md +1 -1
  789. package/pack/generated/pi/skills/rite-spec/SKILL.md +12 -4
  790. package/pack/generated/pi/skills/rite-spec/reference/spec-template.md +4 -2
  791. package/pack/generated/pi/skills/rite-spec/reference/state-workspace.md +3 -0
  792. package/pack/generated/pi/skills/rite-status/SKILL.md +11 -3
  793. package/pack/generated/pi/skills/rite-upgrade/SKILL.md +7 -1
  794. package/pack/generated/pi/skills/rite-vet/SKILL.md +4 -2
  795. package/pack/generated/pi/skills/rite-zoom-out/SKILL.md +5 -0
  796. package/package.json +13 -10
  797. package/scripts/build-host-artifacts.sh +8 -3
  798. package/scripts/codex-generate.sh +2 -1
  799. package/scripts/devin-generate.sh +4 -3
  800. package/scripts/omp-generate.sh +39 -6
  801. package/scripts/pi-generate.sh +9 -4
  802. package/engine/.gosec.json +0 -5
  803. package/pack/generated/omp/skills/overhaul/roles/backend-engineer.md +0 -61
  804. package/pack/generated/omp/skills/overhaul/roles/boundary.md +0 -56
  805. package/pack/generated/omp/skills/overhaul/roles/craft.md +0 -77
  806. package/pack/generated/omp/skills/overhaul/roles/frontend-engineer.md +0 -63
  807. package/pack/generated/omp/skills/overhaul/roles/implementer.md +0 -59
  808. package/pack/generated/omp/skills/overhaul/roles/recon.md +0 -60
  809. package/pack/generated/omp/skills/overhaul/roles/specialist.md +0 -56
  810. package/pack/generated/omp/skills/overhaul/roles/verifier.md +0 -60
  811. package/pack/generated/pi/skills/overhaul/roles/backend-engineer.md +0 -61
  812. package/pack/generated/pi/skills/overhaul/roles/boundary.md +0 -56
  813. package/pack/generated/pi/skills/overhaul/roles/craft.md +0 -77
  814. package/pack/generated/pi/skills/overhaul/roles/frontend-engineer.md +0 -63
  815. package/pack/generated/pi/skills/overhaul/roles/implementer.md +0 -59
  816. package/pack/generated/pi/skills/overhaul/roles/recon.md +0 -60
  817. package/pack/generated/pi/skills/overhaul/roles/specialist.md +0 -56
  818. package/pack/generated/pi/skills/overhaul/roles/verifier.md +0 -60
@@ -0,0 +1,617 @@
1
+ package render
2
+
3
+ import (
4
+ "encoding/json"
5
+ "fmt"
6
+ "math/big"
7
+ "sort"
8
+ "strings"
9
+
10
+ "github.com/devrites/devrites/internal/overhaul/ovio"
11
+ )
12
+
13
+ // The HTML view leads with pictures of the gaps: a score answer, a domain ×
14
+ // lane gap map, where the control weight is lost, code hotspots and review
15
+ // coverage. Charts are inline SVG with <title> tooltips (no script); every
16
+ // value they draw is also printed beside them and kept in the records tables.
17
+
18
+ var (
19
+ gateText = map[string]string{
20
+ "G-THRESHOLDS": "Scores are below their minimums",
21
+ "G-MANDATORY": "Hard-gate controls fail",
22
+ "G-NO-CRITICAL-HIGH": "Critical or high findings are open",
23
+ "G-NO-OPEN-SERIOUS-LEAD": "Serious leads are not validated yet",
24
+ "G-COVERAGE": "Review coverage is incomplete",
25
+ "G-CATALOG-ADEQUACY": "The rubric has not passed its adequacy review",
26
+ "G-LANE-RECEIPTS": "A frontend or backend review is missing",
27
+ "G-CONCURRENCY": "Frontend and backend review did not overlap",
28
+ "G-FRESHNESS": "Some evidence is stale",
29
+ "G-REPORT-CONSISTENCY": "Records or views are inconsistent",
30
+ "G-APPROVAL": "No current approval of this plan",
31
+ "G-TASKS-COMPLETE": "Approved tasks are not complete",
32
+ "G-ORACLES": "Regression tests are not proven red then green",
33
+ "G-NO-REGRESSION": "A regression or skipped check remains",
34
+ "G-PERF-TARGETS": "Performance targets are not demonstrated",
35
+ "G-PRESERVATION": "Behavior preservation is not proven",
36
+ "G-FINGERPRINTS": "Source changed during proof",
37
+ "G-OWNERSHIP": "Changes left their approved paths",
38
+ "G-FINAL-CHALLENGE": "The final challenge has not passed",
39
+ }
40
+ verdictText = map[string]string{
41
+ "NOT_READY": "Not ready", "MEETS_TARGETS": "Meets targets", "NOT_ASSESSED": "Not assessed",
42
+ "NOT_ASSESSABLE": "Not assessable", "MEETS_TARGETS_WITH_APPROVED_DEGRADATION": "Meets targets (approved degradation)",
43
+ }
44
+ // gapSteps are the gap-map buckets: how far a score sits below its floor.
45
+ gapSteps = []struct {
46
+ cls, label string
47
+ upTo *big.Rat // largest gap in this bucket; nil = unbounded
48
+ }{
49
+ {"g0", "meets its floor", big.NewRat(0, 1)},
50
+ {"g4", "up to 2 below", big.NewRat(2, 1)},
51
+ {"g3", "2–5 below", big.NewRat(5, 1)},
52
+ {"g2", "5–8 below", big.NewRat(8, 1)},
53
+ {"g1", "more than 8 below", nil},
54
+ }
55
+ navName = map[string]string{"plan": "Repair plan", "findings": "Findings", "opportunities": "Opportunities", "leads": "Unvalidated leads",
56
+ "repairs": "Repairs", "performance": "Performance", "cycles": "Iterations"}
57
+ sevWeight = map[string]int{"critical": 8, "high": 4, "medium": 2, "low": 1}
58
+ ten = big.NewRat(10, 1)
59
+ )
60
+
61
+ // ratOf reads an exact score: {"exact":"n/d"}, "n/d", or a JSON number.
62
+ func ratOf(x any) *big.Rat {
63
+ switch t := x.(type) {
64
+ case map[string]any:
65
+ return ratOf(t["exact"])
66
+ case string:
67
+ if r, ok := new(big.Rat).SetString(t); ok {
68
+ return r
69
+ }
70
+ case json.Number:
71
+ if r, ok := new(big.Rat).SetString(t.String()); ok {
72
+ return r
73
+ }
74
+ }
75
+ return nil
76
+ }
77
+
78
+ // scoreFor returns a scope's score from the scorecard: "global", "lane X" or
79
+ // "domain X" (global domain), falling back to the thresholds table.
80
+ func scoreFor(sc map[string]any, scope string) *big.Rat {
81
+ var r *big.Rat
82
+ switch kind, name, _ := strings.Cut(scope, " "); kind {
83
+ case "global":
84
+ r = ratOf(ovio.Get(sc, "global.Q"))
85
+ case "lane":
86
+ r = ratOf(ovio.Obj(ovio.Obj(ovio.Obj(sc["lanes"])[name])["Q"]))
87
+ case "domain":
88
+ r = ratOf(ovio.Obj(ovio.Obj(ovio.Get(sc, "global.domains"))[name]))
89
+ }
90
+ if r == nil {
91
+ r, _, _ = threshold(sc, scope)
92
+ }
93
+ return r
94
+ }
95
+
96
+ func laneDomain(sc map[string]any, lane, domain string) *big.Rat {
97
+ return ratOf(ovio.Obj(ovio.Obj(ovio.Obj(ovio.Obj(sc["lanes"])[lane])["domains"])[domain]))
98
+ }
99
+
100
+ // floorFor is the scope's recorded minimum, else the skill's default.
101
+ func floorFor(sc map[string]any, scope string) *big.Rat {
102
+ if _, least, _ := threshold(sc, scope); least != nil {
103
+ return least
104
+ }
105
+ if strings.HasPrefix(scope, "domain ") {
106
+ return big.NewRat(9, 1)
107
+ }
108
+ return big.NewRat(97, 10)
109
+ }
110
+
111
+ func gapClass(val, floor *big.Rat) string {
112
+ if val == nil {
113
+ return "gx"
114
+ }
115
+ gap := new(big.Rat).Sub(floor, val)
116
+ for _, s := range gapSteps {
117
+ if s.upTo == nil || gap.Cmp(s.upTo) <= 0 {
118
+ return s.cls
119
+ }
120
+ }
121
+ return "g1"
122
+ }
123
+
124
+ func f2(r *big.Rat) string {
125
+ if r == nil {
126
+ return "–"
127
+ }
128
+ return floor2(r)
129
+ }
130
+
131
+ // frac maps r/of onto 0..100 for SVG geometry.
132
+ func frac(r, of *big.Rat) float64 {
133
+ if r == nil || of.Sign() == 0 {
134
+ return 0
135
+ }
136
+ f, _ := new(big.Rat).Quo(r, of).Float64()
137
+ return max(0, min(100, f*100))
138
+ }
139
+
140
+ // bullet draws a 0–10 score bar with the floor as a tick and, when given, the
141
+ // baseline as a hollow marker. Geometry is in a stretched 0–100 box.
142
+ func bullet(val, floor, base *big.Rat, cls, label string) string {
143
+ var w strings.Builder
144
+ fmt.Fprintf(&w, `<svg class="bar" viewBox="0 0 100 10" preserveAspectRatio="none" role="img" aria-label="%s"><title>%s</title>`, esc(label), esc(label))
145
+ w.WriteString(`<rect class="trk" x="0" y="2" width="100" height="6"/>`)
146
+ if val != nil {
147
+ fmt.Fprintf(&w, `<rect class="%s" x="0" y="2" width="%.2f" height="6"/>`, cls, frac(val, ten))
148
+ }
149
+ if base != nil && (val == nil || base.Cmp(val) != 0) {
150
+ fmt.Fprintf(&w, `<rect class="was" x="%.2f" y="0" width="0.8" height="10"/>`, max(0, frac(base, ten)-0.4))
151
+ }
152
+ fmt.Fprintf(&w, `<rect class="tgt" x="%.2f" y="0" width="0.6" height="10"/></svg>`, max(0, frac(floor, ten)-0.3))
153
+ return w.String()
154
+ }
155
+
156
+ // stack draws one horizontal stacked bar: segments are (class, value, label)
157
+ // scaled against total, separated by a small surface gap.
158
+ func stack(segs [][3]any, total float64, label string) string {
159
+ var w strings.Builder
160
+ fmt.Fprintf(&w, `<svg class="bar" viewBox="0 0 100 10" preserveAspectRatio="none" role="img" aria-label="%s"><title>%s</title>`, esc(label), esc(label))
161
+ x := 0.0
162
+ for _, s := range segs {
163
+ v := s[1].(float64)
164
+ if v <= 0 || total <= 0 {
165
+ continue
166
+ }
167
+ wd := v / total * 100
168
+ fmt.Fprintf(&w, `<rect class="%s" x="%.2f" y="1" width="%.2f" height="8"><title>%s</title></rect>`,
169
+ s[0].(string), x, max(0, wd-0.4), esc(s[2].(string)))
170
+ x += wd
171
+ }
172
+ return w.String() + "</svg>"
173
+ }
174
+
175
+ func legend(items ...[2]string) string {
176
+ var w strings.Builder
177
+ w.WriteString(`<ul class="legend">`)
178
+ for _, it := range items {
179
+ w.WriteString(`<li><span class="key ` + it[0] + `"></span>` + it[1] + `</li>`)
180
+ }
181
+ return w.String() + "</ul>"
182
+ }
183
+
184
+ func plural(n int, one, many string) string {
185
+ if n == 1 {
186
+ return "1 " + one
187
+ }
188
+ return fmt.Sprintf("%d %s", n, many)
189
+ }
190
+
191
+ // current is the scorecard the page scores against: the candidate scorecard
192
+ // when one exists, else the baseline. base is set only when both exist.
193
+ func (b *built) current() (cur, base map[string]any) {
194
+ if len(b.sc) > 0 && (b.sc["thresholds"] != nil || b.sc["global"] != nil) {
195
+ if len(b.base) > 0 {
196
+ return b.sc, b.base
197
+ }
198
+ return b.sc, nil
199
+ }
200
+ return b.base, nil
201
+ }
202
+
203
+ func (v view) summaryBlock(b *built, summary string, decide bool) string {
204
+ cur, base := b.current()
205
+ verdict := pyStr(b.rj["readiness_verdict"])
206
+ var w strings.Builder
207
+ w.WriteString(`<header id="summary" class="hero">`)
208
+ fmt.Fprintf(&w, `<p role="status"><strong>%s</strong></p>`, esc(summary))
209
+
210
+ q, qf := scoreFor(cur, "global"), floorFor(cur, "global")
211
+ text := verdictText[verdict]
212
+ if text == "" {
213
+ text = verdict
214
+ }
215
+ w.WriteString(`<div class="answer"><div class="score">`)
216
+ fmt.Fprintf(&w, `<h1 class="verdict %s">%s</h1>`, tone(verdict), esc(v.redact(text)))
217
+ if q != nil {
218
+ fmt.Fprintf(&w, `<p class="hero-num">%s<span> / 10</span></p>`, f2(q))
219
+ gap := new(big.Rat).Sub(qf, q)
220
+ if gap.Sign() > 0 {
221
+ fmt.Fprintf(&w, `<p class="muted">Target %s · %s to go</p>`, f2(qf), f2(gap))
222
+ } else {
223
+ fmt.Fprintf(&w, `<p class="muted">Target %s · met</p>`, f2(qf))
224
+ }
225
+ w.WriteString(bullet(q, qf, scoreFor(base, "global"), gapClass(q, qf), "Global score "+f2(q)+" of 10, target "+f2(qf)))
226
+ } else {
227
+ w.WriteString(`<p class="hero-num muted">No score yet</p>`)
228
+ }
229
+ lanes := b.scoreLanes(cur)
230
+ if len(lanes) > 0 {
231
+ w.WriteString(`<ul class="rows lanes">`)
232
+ for _, l := range lanes {
233
+ s, fl := scoreFor(cur, "lane "+l), floorFor(cur, "lane "+l)
234
+ fmt.Fprintf(&w, `<li><span class="lbl">%s</span>%s<span class="val">%s</span></li>`, esc(v.redact(l)),
235
+ bullet(s, fl, scoreFor(base, "lane "+l), gapClass(s, fl), l+" lane "+f2(s)+" of 10, target "+f2(fl)), f2(s))
236
+ }
237
+ w.WriteString(`</ul>`)
238
+ }
239
+ if base != nil {
240
+ w.WriteString(legend([2]string{"was", "before repairs"}, [2]string{"tgt", "target"}))
241
+ }
242
+ w.WriteString(`</div><div class="blockers">`)
243
+ gates := ovio.Obj(cur["gates"])
244
+ var open []string
245
+ passing := 0
246
+ for _, g := range sortedKeys(gates) {
247
+ switch pyStr(gates[g]) {
248
+ case "PASS", "NOT_APPLICABLE":
249
+ passing++
250
+ default:
251
+ open = append(open, g)
252
+ }
253
+ }
254
+ if len(open) == 0 && len(gates) > 0 {
255
+ w.WriteString(`<h2>Nothing blocks readiness</h2><p class="muted">All ` + plural(passing, "gate passes", "gates pass") + `.</p>`)
256
+ } else if len(open) > 0 {
257
+ w.WriteString(`<h2>What blocks readiness</h2><ul class="gates">`)
258
+ for _, g := range open {
259
+ name := gateText[g]
260
+ if name == "" {
261
+ name = g
262
+ }
263
+ if g == "G-MANDATORY" {
264
+ if n := len(ovio.List(cur["mandatory_failures"])); n > 0 {
265
+ name += fmt.Sprintf(" (%d)", n)
266
+ }
267
+ }
268
+ st := pyStr(gates[g])
269
+ fmt.Fprintf(&w, `<li class="%s"><span class="mark">%s</span><span>%s<br><code>%s · %s</code></span></li>`,
270
+ tone(st), gateMark(st), esc(v.redact(name)), esc(v.redact(g)), esc(v.redact(st)))
271
+ }
272
+ w.WriteString(`</ul>`)
273
+ if passing > 0 {
274
+ w.WriteString(`<p class="muted">` + plural(passing, "other gate passes", "other gates pass") + `.</p>`)
275
+ }
276
+ }
277
+ w.WriteString(`</div></div>`)
278
+
279
+ w.WriteString(v.severityStrip(b))
280
+ if decide {
281
+ fmt.Fprintf(&w, `<p class="next"><a href="#decide">Decide on the repair plan</a> <span class="muted">%s proposed</span></p>`,
282
+ plural(len(b.tasks), "task", "tasks"))
283
+ }
284
+ return w.String() + `</header>`
285
+ }
286
+
287
+ func gateMark(status string) string {
288
+ if status == "UNKNOWN" {
289
+ return "?"
290
+ }
291
+ return "✕"
292
+ }
293
+
294
+ // scoreLanes lists the lanes the scorecard scores, else the lanes seen in dispatch.
295
+ func (b *built) scoreLanes(sc map[string]any) []string {
296
+ if ls := sortedKeys(ovio.Obj(sc["lanes"])); len(ls) > 0 {
297
+ return ls
298
+ }
299
+ var out []string
300
+ for _, l := range b.lanes {
301
+ if _, least, _ := threshold(sc, "lane "+l); least != nil {
302
+ out = append(out, l)
303
+ }
304
+ }
305
+ return out
306
+ }
307
+
308
+ func (v view) severityStrip(b *built) string {
309
+ n := map[string]int{}
310
+ for _, f := range b.cards["findings"] {
311
+ n[sevKey(f)]++
312
+ }
313
+ total := len(b.cards["findings"])
314
+ var w strings.Builder
315
+ fmt.Fprintf(&w, `<div class="strip"><h2>%s</h2>`, plural(total, "confirmed finding", "confirmed findings"))
316
+ if total == 0 {
317
+ return w.String() + `<p class="muted">None recorded.</p></div>`
318
+ }
319
+ var segs [][3]any
320
+ var keys [][2]string
321
+ for _, s := range append(append([]string(nil), sevOrder...), "none") {
322
+ if n[s] == 0 {
323
+ continue
324
+ }
325
+ label := fmt.Sprintf("%s %d", sevLabel[s], n[s])
326
+ segs = append(segs, [3]any{"s-" + s, float64(n[s]), label})
327
+ keys = append(keys, [2]string{"s-" + s, fmt.Sprintf(`<a href="#findings">%s</a> <strong>%d</strong>`, sevLabel[s], n[s])})
328
+ }
329
+ w.WriteString(stack(segs, float64(total), "Confirmed findings by severity"))
330
+ return w.String() + legend(keys...) + `</div>`
331
+ }
332
+
333
+ // gapMap is the domain × lane grid, worst domain first.
334
+ func (v view) gapMap(b *built) string {
335
+ cur, _ := b.current()
336
+ doms := b.domains
337
+ if len(doms) == 0 {
338
+ doms = sortedKeys(ovio.Obj(ovio.Get(cur, "global.domains")))
339
+ }
340
+ if len(doms) == 0 {
341
+ return ""
342
+ }
343
+ sort.SliceStable(doms, func(i, j int) bool {
344
+ a, c := scoreFor(cur, "domain "+doms[i]), scoreFor(cur, "domain "+doms[j])
345
+ switch {
346
+ case a == nil:
347
+ return false
348
+ case c == nil:
349
+ return true
350
+ }
351
+ return a.Cmp(c) < 0
352
+ })
353
+ lanes := sortedKeys(ovio.Obj(cur["lanes"]))
354
+ var w strings.Builder
355
+ w.WriteString(`<section id="gaps"><h2>Where the gaps are</h2><p class="lede">Each bar is a domain score out of 10; the tick is the floor it must reach. Worst domains first.</p>`)
356
+ w.WriteString(`<div class="scroll" role="region" tabindex="0" aria-label="Gap map"><table><caption>Domain scores by lane against their floors</caption><thead><tr><th scope="col">Domain</th><th scope="col">All lanes</th>`)
357
+ for _, l := range lanes {
358
+ w.WriteString(`<th scope="col">` + esc(v.redact(l)) + `</th>`)
359
+ }
360
+ w.WriteString(`</tr></thead><tbody>`)
361
+ for _, d := range doms {
362
+ fl := floorFor(cur, "domain "+d)
363
+ cell := func(s *big.Rat, who string) string {
364
+ cls := gapClass(s, fl)
365
+ return fmt.Sprintf(`<td class="cell %s"><span class="val">%s</span>%s</td>`, cls, f2(s),
366
+ bullet(s, fl, nil, cls, d+" · "+who+": "+f2(s)+" of 10, floor "+f2(fl)))
367
+ }
368
+ w.WriteString(`<tr><th scope="row"><a href="#controls">` + esc(v.redact(d)) + `</a></th>` + cell(scoreFor(cur, "domain "+d), "all lanes"))
369
+ for _, l := range lanes {
370
+ w.WriteString(cell(laneDomain(cur, l, d), l))
371
+ }
372
+ w.WriteString(`</tr>`)
373
+ }
374
+ w.WriteString(`</tbody></table></div>`)
375
+ var keys [][2]string
376
+ for _, s := range gapSteps {
377
+ keys = append(keys, [2]string{s.cls, s.label})
378
+ }
379
+ keys = append(keys, [2]string{"tgt", "floor"})
380
+ return w.String() + legend(keys...) + `</section>`
381
+ }
382
+
383
+ // controlLoss shows, per domain, how its control weight splits into passing,
384
+ // failing and not-yet-evidenced controls — where the score is lost.
385
+ func (v view) controlLoss(b *built) string {
386
+ cur, _ := b.current()
387
+ status := ovio.Obj(cur["status_by_control"])
388
+ type agg struct {
389
+ pass, fail, unk float64
390
+ nPass, nFail, nUnk int
391
+ }
392
+ by := map[string]*agg{}
393
+ var order []string
394
+ for _, c := range objs(b.rubric["controls"]) {
395
+ d := pyStr(c["domain"])
396
+ st := pyStr(status[pyStr(c["id"])])
397
+ if st == "NOT_APPLICABLE" {
398
+ continue
399
+ }
400
+ wt := 1.0
401
+ if r := ratOf(c["weight"]); r != nil {
402
+ wt, _ = r.Float64()
403
+ }
404
+ a := by[d]
405
+ if a == nil {
406
+ a = &agg{}
407
+ by[d] = a
408
+ order = append(order, d)
409
+ }
410
+ switch st {
411
+ case "PASS":
412
+ a.pass += wt
413
+ a.nPass++
414
+ case "FAIL":
415
+ a.fail += wt
416
+ a.nFail++
417
+ default:
418
+ a.unk += wt
419
+ a.nUnk++
420
+ }
421
+ }
422
+ if len(order) == 0 {
423
+ return ""
424
+ }
425
+ lost := func(a *agg) float64 { return (a.fail + a.unk) / (a.pass + a.fail + a.unk) }
426
+ sort.SliceStable(order, func(i, j int) bool { return lost(by[order[i]]) > lost(by[order[j]]) })
427
+ var w strings.Builder
428
+ w.WriteString(`<section id="losses"><h2>Where the score is lost</h2><p class="lede">Each domain's control weight, split by result. Red and grey are the points still missing.</p><ul class="rows">`)
429
+ for _, d := range order {
430
+ a := by[d]
431
+ total := a.pass + a.fail + a.unk
432
+ note := fmt.Sprintf("%d of %d failing", a.nFail, a.nPass+a.nFail+a.nUnk)
433
+ if a.nUnk > 0 {
434
+ note += fmt.Sprintf(" · %d without evidence", a.nUnk)
435
+ }
436
+ fmt.Fprintf(&w, `<li><span class="lbl"><a href="#controls">%s</a></span>%s<span class="val wide">%s</span></li>`, esc(v.redact(d)),
437
+ stack([][3]any{{"c-pass", a.pass, fmt.Sprintf("passing %d", a.nPass)}, {"c-fail", a.fail, fmt.Sprintf("failing %d", a.nFail)},
438
+ {"c-unk", a.unk, fmt.Sprintf("no evidence %d", a.nUnk)}}, total, d+": "+note), esc(note))
439
+ }
440
+ w.WriteString(`</ul>`)
441
+ return w.String() + legend([2]string{"c-pass", "passing"}, [2]string{"c-fail", "failing"}, [2]string{"c-unk", "no evidence yet"}) + `</section>`
442
+ }
443
+
444
+ // area groups a path into a code area: its first two directories.
445
+ func area(p string) string {
446
+ parts := strings.Split(strings.Trim(p, "/"), "/")
447
+ switch {
448
+ case len(parts) >= 3:
449
+ return parts[0] + "/" + parts[1]
450
+ case len(parts) == 2:
451
+ return parts[0]
452
+ }
453
+ return "(repository root)"
454
+ }
455
+
456
+ func (v view) hotspots(b *built) string {
457
+ type spot struct {
458
+ name string
459
+ n map[string]int
460
+ total int
461
+ score int
462
+ }
463
+ by := map[string]*spot{}
464
+ for _, f := range b.cards["findings"] {
465
+ p := "(no location)"
466
+ if l := ovio.List(f["locations"]); len(l) > 0 {
467
+ if s := ovio.Str(ovio.Obj(l[0])["path"]); s != "" {
468
+ p = area(s)
469
+ }
470
+ }
471
+ s := by[p]
472
+ if s == nil {
473
+ s = &spot{name: p, n: map[string]int{}}
474
+ by[p] = s
475
+ }
476
+ k := sevKey(f)
477
+ s.n[k]++
478
+ s.total++
479
+ s.score += sevWeight[k]
480
+ }
481
+ if len(by) == 0 {
482
+ return ""
483
+ }
484
+ spots := make([]*spot, 0, len(by))
485
+ for _, s := range by {
486
+ spots = append(spots, s)
487
+ }
488
+ sort.Slice(spots, func(i, j int) bool {
489
+ if spots[i].score != spots[j].score {
490
+ return spots[i].score > spots[j].score
491
+ }
492
+ return spots[i].name < spots[j].name
493
+ })
494
+ const top = 10
495
+ if len(spots) > top {
496
+ other := &spot{name: fmt.Sprintf("%d other areas", len(spots)-top+1), n: map[string]int{}}
497
+ for _, s := range spots[top-1:] {
498
+ for k, c := range s.n {
499
+ other.n[k] += c
500
+ }
501
+ other.total += s.total
502
+ }
503
+ spots = append(spots[:top-1], other)
504
+ }
505
+ most := 0
506
+ for _, s := range spots {
507
+ most = max(most, s.total)
508
+ }
509
+ var w strings.Builder
510
+ w.WriteString(`<section id="hotspots"><h2>Where in the code</h2><p class="lede">Confirmed findings by code area, ranked by severity.</p><ul class="rows">`)
511
+ for _, s := range spots {
512
+ var segs [][3]any
513
+ var parts []string
514
+ for _, k := range append(append([]string(nil), sevOrder...), "none") {
515
+ if s.n[k] > 0 {
516
+ segs = append(segs, [3]any{"s-" + k, float64(s.n[k]), fmt.Sprintf("%s %d", sevLabel[k], s.n[k])})
517
+ parts = append(parts, fmt.Sprintf("%s %d", sevLabel[k], s.n[k]))
518
+ }
519
+ }
520
+ fmt.Fprintf(&w, `<li><span class="lbl"><code>%s</code></span>%s<span class="val">%d</span></li>`, esc(v.redact(s.name)),
521
+ stack(segs, float64(most), s.name+": "+strings.Join(parts, ", ")), s.total)
522
+ }
523
+ w.WriteString(`</ul>`)
524
+ var keys [][2]string
525
+ for _, k := range sevOrder {
526
+ keys = append(keys, [2]string{"s-" + k, sevLabel[k]})
527
+ }
528
+ return w.String() + legend(keys...) + `</section>`
529
+ }
530
+
531
+ func (v view) reach(b *built) string {
532
+ if len(b.laneCov) == 0 {
533
+ return ""
534
+ }
535
+ var w strings.Builder
536
+ w.WriteString(`<section id="reach"><h2>Review coverage</h2><p class="lede">Eligible code ranges each lane has reviewed with evidence.</p><ul class="rows">`)
537
+ for _, l := range b.lanes {
538
+ c, ok := b.laneCov[l]
539
+ if !ok || c[1] == 0 {
540
+ continue
541
+ }
542
+ note := "all reviewed"
543
+ cls := "c-pass"
544
+ if c[0] < c[1] {
545
+ note = fmt.Sprintf("%d of %d · %d open", c[0], c[1], c[1]-c[0])
546
+ cls = "c-part"
547
+ }
548
+ fmt.Fprintf(&w, `<li><span class="lbl">%s</span>%s<span class="val wide">%s</span></li>`, esc(v.redact(l)),
549
+ stack([][3]any{{cls, float64(c[0]), fmt.Sprintf("reviewed %d", c[0])}, {"c-unk", float64(c[1] - c[0]), fmt.Sprintf("open %d", c[1]-c[0])}},
550
+ float64(c[1]), l+": "+note), esc(note))
551
+ }
552
+ return w.String() + `</ul></section>`
553
+ }
554
+
555
+ // planView shows how much of the confirmed work the plan covers, per
556
+ // severity, then each task as an expandable row.
557
+ func (v view) planView(b *built, s section) string {
558
+ var w strings.Builder
559
+ w.WriteString(`<section id="plan"><h2>` + esc(s.heading) + count(s) + `</h2>`)
560
+ total, covered := map[string]int{}, map[string]int{}
561
+ for _, f := range b.cards["findings"] {
562
+ k := sevKey(f)
563
+ total[k]++
564
+ if len(b.byF[pyStr(f["id"])]) > 0 {
565
+ covered[k]++
566
+ }
567
+ }
568
+ if len(total) > 0 {
569
+ w.WriteString(`<p class="lede">Confirmed findings this plan repairs, by severity.</p><ul class="rows">`)
570
+ for _, k := range append(append([]string(nil), sevOrder...), "none") {
571
+ if total[k] == 0 {
572
+ continue
573
+ }
574
+ note := fmt.Sprintf("%d of %d", covered[k], total[k])
575
+ fmt.Fprintf(&w, `<li><span class="lbl"><span class="sev"><span class="key s-%s"></span>%s</span></span>%s<span class="val wide">%s</span></li>`,
576
+ k, sevLabel[k], stack([][3]any{{"c-pass", float64(covered[k]), fmt.Sprintf("in the plan %d", covered[k])},
577
+ {"c-unk", float64(total[k] - covered[k]), fmt.Sprintf("not in the plan %d", total[k]-covered[k])}},
578
+ float64(total[k]), sevLabel[k]+": "+note+" in the plan"), note)
579
+ }
580
+ w.WriteString(`</ul>` + legend([2]string{"c-pass", "in the plan"}, [2]string{"c-unk", "not in the plan"}))
581
+ }
582
+ w.WriteString(`<h3 class="sub">Tasks</h3><div class="cards">`)
583
+ for _, t := range b.tasks {
584
+ w.WriteString("\n<details")
585
+ if id := pyStr(t["id"]); rowID.MatchString(id) {
586
+ w.WriteString(` id="` + esc(id) + `"`)
587
+ }
588
+ w.WriteString(` class="task"><summary><code class="fid">` + v.e(t["id"]) + `</code><span class="pill">` + v.e(t["lane"]) + `</span>`)
589
+ title := t["title"]
590
+ if empty(title) {
591
+ title = t["minimum_change"]
592
+ }
593
+ w.WriteString(`<span class="ftitle">` + v.e(title) + `</span>`)
594
+ if r := pyStr(t["risk"]); r != "" {
595
+ w.WriteString(`<span class="pill">risk ` + esc(v.redact(r)) + `</span>`)
596
+ }
597
+ w.WriteString(`</summary><div class="fbody">`)
598
+ var fx strings.Builder
599
+ for i, f := range ovio.List(t["findings"]) {
600
+ if i > 0 {
601
+ fx.WriteString(", ")
602
+ }
603
+ if id := pyStr(f); rowID.MatchString(id) {
604
+ fx.WriteString(`<a href="#` + esc(id) + `">` + esc(id) + `</a>`)
605
+ } else {
606
+ fx.WriteString(v.e(f))
607
+ }
608
+ }
609
+ if fx.Len() > 0 {
610
+ w.WriteString(`<dl class="kv"><dt>repairs</dt><dd>` + fx.String() + `</dd></dl>`)
611
+ }
612
+ w.WriteString(v.kv(t, "change:minimum_change", "writes:allowed_paths", "proof:oracle", "after:deps", "rollback",
613
+ "done when:completion_checks", "stops when:stop_conditions", "benefit", "cost", "writer:writer_role", "verifier:verifier_role"))
614
+ w.WriteString("</div></details>")
615
+ }
616
+ return w.String() + "</div></section>"
617
+ }