@mutagent/helix 0.1.0-alpha.14

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 (357) hide show
  1. package/.claude/skills/mutagent-helix/SKILL.md +113 -0
  2. package/.claude/skills/mutagent-helix/scripts/cli/codex-transcode.ts +143 -0
  3. package/.claude/skills/mutagent-helix/scripts/cli/doctor.ts +111 -0
  4. package/.claude/skills/mutagent-helix/scripts/cli/init.ts +382 -0
  5. package/.claude/skills/mutagent-helix/scripts/cli/run.sh +61 -0
  6. package/CLAUDE.md +193 -0
  7. package/LICENSE +201 -0
  8. package/NOTICE +22 -0
  9. package/README.md +209 -0
  10. package/assets/adl-loop.svg +162 -0
  11. package/assets/system-status.svg +422 -0
  12. package/bin/mutagent-cli.mjs +9950 -0
  13. package/bin/mutagent-helix.mjs +78 -0
  14. package/mutagent-agentspec/.claude/skills/mutagent-agentspec/CLAUDE.md +28 -0
  15. package/mutagent-agentspec/.claude/skills/mutagent-agentspec/SKILL.md +138 -0
  16. package/mutagent-agentspec/.claude/skills/mutagent-agentspec/assets/templates/agentspec.yaml.tpl +247 -0
  17. package/mutagent-agentspec/.claude/skills/mutagent-agentspec/references/frameworks/doc-pins.md +53 -0
  18. package/mutagent-agentspec/.claude/skills/mutagent-agentspec/references/principles.md +91 -0
  19. package/mutagent-agentspec/.claude/skills/mutagent-agentspec/references/requirements.yaml +295 -0
  20. package/mutagent-agentspec/.claude/skills/mutagent-agentspec/references/workflows/orchestrator-protocol.md +302 -0
  21. package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/cli/doctor.ts +116 -0
  22. package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/cli/init.ts +230 -0
  23. package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/cli/run.sh +60 -0
  24. package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/config/resolve-spec-dir.ts +199 -0
  25. package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/contract/agentspec.schema.ts +455 -0
  26. package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/setup/detect.ts +67 -0
  27. package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/validate/validate-spec.ts +93 -0
  28. package/mutagent-agentspec/LICENSE +201 -0
  29. package/mutagent-agentspec/NOTICE +19 -0
  30. package/mutagent-agentspec/README.md +44 -0
  31. package/mutagent-builder/.claude/skills/mutagent-builder/SKILL.md +100 -0
  32. package/mutagent-builder/.claude/skills/mutagent-builder/assets/agents/ai-architect.md +312 -0
  33. package/mutagent-builder/.claude/skills/mutagent-builder/assets/agents/ai-engineer.md +357 -0
  34. package/mutagent-builder/.claude/skills/mutagent-builder/assets/templates/build-report.md.tpl +39 -0
  35. package/mutagent-builder/.claude/skills/mutagent-builder/references/principles.md +31 -0
  36. package/mutagent-builder/.claude/skills/mutagent-builder/references/workflows/build-protocol.md +61 -0
  37. package/mutagent-builder/.claude/skills/mutagent-builder/references/workflows/improve-handoff.md +23 -0
  38. package/mutagent-builder/.claude/skills/mutagent-builder/scripts/cli/run.sh +60 -0
  39. package/mutagent-builder/.claude/skills/mutagent-builder/scripts/handoff/validate-build-input.ts +72 -0
  40. package/mutagent-builder/.claude/skills/mutagent-builder/scripts/sync-spec/check-sync-spec.ts +499 -0
  41. package/mutagent-builder/.claude/skills/mutagent-builder/scripts/verify/spec-impl-coverage.ts +182 -0
  42. package/mutagent-builder/CLAUDE.md +25 -0
  43. package/mutagent-builder/README.md +26 -0
  44. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/README.md +192 -0
  45. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/SKILL.md +352 -0
  46. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/agents/ai-architect.md +256 -0
  47. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/agents/ai-engineer.md +344 -0
  48. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/agents/diagnostics-analyzer.md +576 -0
  49. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/agents/discovery.md +425 -0
  50. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/audit.json.tpl +24 -0
  51. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/audit.md.tpl +49 -0
  52. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/config.yaml.tpl +100 -0
  53. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/pr-body.md.tpl +56 -0
  54. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/report.html.tpl +327 -0
  55. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/README.md +27 -0
  56. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/iter-N-handover.md.tpl +125 -0
  57. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/self-diagnosis-contract.v0.1.0.yaml.tpl +234 -0
  58. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/spec.yaml.tpl +152 -0
  59. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/team.yaml.tpl +127 -0
  60. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/wave-N-dashboard.html.tpl +1712 -0
  61. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.1-nl-query.md +59 -0
  62. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.2-tier0-progress.md +58 -0
  63. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.3-analysis-progress.md +44 -0
  64. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.4-html-report.md +61 -0
  65. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.5-rca-detail.md +69 -0
  66. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.6-stale-warning.md +53 -0
  67. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.1-welcome.md +60 -0
  68. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.2-source-platform-picker.md +41 -0
  69. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.3-source-auth.md +75 -0
  70. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.4-target-picker.md +48 -0
  71. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.5-ask-tool.md +43 -0
  72. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.6-config-review.md +57 -0
  73. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.7-filter-defaults.md +52 -0
  74. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.8-first-run.md +59 -0
  75. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/examples/sample-findings.json +92 -0
  76. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/examples/sample-meta.json +47 -0
  77. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/adapter-strategy.md +75 -0
  78. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/config-migration.md +84 -0
  79. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/config.md +159 -0
  80. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/filter-search-matrix.md +66 -0
  81. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/harness-knowledge.md +22 -0
  82. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/memory-format.md +78 -0
  83. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/onboarding-decisions.yaml +187 -0
  84. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/operation-inventory.md +59 -0
  85. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/overview.md +167 -0
  86. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/reference.md +119 -0
  87. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/script-index.md +101 -0
  88. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-adapter-contract.md +93 -0
  89. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/claude-code-transcripts.md +66 -0
  90. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/codex-transcripts.md +78 -0
  91. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/codex.md +145 -0
  92. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/install-paths.md +57 -0
  93. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/langfuse.md +178 -0
  94. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/local-jsonl.md +55 -0
  95. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/openobserve.md +102 -0
  96. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/otel.md +63 -0
  97. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/cloud-rest.md +84 -0
  98. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-claude.md +65 -0
  99. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-cloud-agent-sdk.md +92 -0
  100. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-codex.md +72 -0
  101. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-cursor.md +108 -0
  102. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-mastra.md +77 -0
  103. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-opencode.md +70 -0
  104. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/apply-pr-comment-format.md +82 -0
  105. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/diagnostics.md +35 -0
  106. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/handover-contract.md +247 -0
  107. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/onboarding.md +300 -0
  108. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/orchestrator-protocol.md +1861 -0
  109. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/rca.md +331 -0
  110. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/rendering-anatomy.md +314 -0
  111. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/schedule-prep.md +100 -0
  112. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/scope-model.md +128 -0
  113. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/verification-methodology.md +174 -0
  114. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/aggregate/sort-findings.ts +0 -0
  115. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/awareness/blind-spots.ts +167 -0
  116. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/awareness/llm-sample.ts +681 -0
  117. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/cli/doctor.ts +215 -0
  118. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/cli/init.ts +1013 -0
  119. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/cli/install-agents.ts +350 -0
  120. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/cli/run.sh +61 -0
  121. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/cli/shared-templates.ts +79 -0
  122. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/config/load.ts +392 -0
  123. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/config/resolve-credential.ts +120 -0
  124. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/config/schema.ts +641 -0
  125. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/config/validate.ts +134 -0
  126. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/context/build-diagnosis-context.ts +417 -0
  127. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/context/load-context.ts +105 -0
  128. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/contract/types.ts +166 -0
  129. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/enrich/build-render-input.ts +1964 -0
  130. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/enrich/corpus-severity.ts +172 -0
  131. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/enrich/dismissal-match.ts +270 -0
  132. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/enrich/rank-remedies.ts +75 -0
  133. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/hooks/install-hooks.sh +46 -0
  134. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/hooks/pre-push.sh +78 -0
  135. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/invocation/parse-brief.ts +188 -0
  136. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/library/match.ts +114 -0
  137. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/library/paths.ts +95 -0
  138. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/library/store.ts +535 -0
  139. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/library/types.ts +181 -0
  140. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/lint/template-inline-js.ts +267 -0
  141. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/memory/append.ts +188 -0
  142. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/memory/read.ts +218 -0
  143. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/normalize/platforms/entity-context.ts +686 -0
  144. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/normalize/read-unitf.ts +267 -0
  145. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/normalize/trace.ts +1078 -0
  146. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/normalize/unitf-adapter.ts +0 -0
  147. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/normalize/unitf-types.ts +213 -0
  148. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/report/persist-selections.ts +174 -0
  149. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/report/render.ts +3254 -0
  150. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/run/diagnose.ts +64 -0
  151. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/run/session.ts +167 -0
  152. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/sample/caps.ts +345 -0
  153. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/sample/deep-read-gate.ts +424 -0
  154. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/sample/representative.ts +584 -0
  155. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/scan/objection.ts +224 -0
  156. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/scan/trajectory.ts +489 -0
  157. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/self-diagnostics/dispatch.ts +135 -0
  158. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/self-diagnostics/probe.ts +170 -0
  159. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/setup/detect.ts +307 -0
  160. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/setup/ensure-cli.ts +315 -0
  161. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/setup/reconfigure.ts +77 -0
  162. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/setup/verify-agents.ts +207 -0
  163. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/slicer.ts +166 -0
  164. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/claude-code.ts +17 -0
  165. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/codex.ts +11 -0
  166. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/langfuse.ts +17 -0
  167. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/local-jsonl.ts +12 -0
  168. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/otel.ts +12 -0
  169. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/index.ts +54 -0
  170. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/registry.ts +45 -0
  171. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/types.ts +86 -0
  172. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/stale-detector.ts +74 -0
  173. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/test/render-playwright.cli.ts +477 -0
  174. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/tier0/claude-code.ts +133 -0
  175. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/tier0/langfuse.ts +143 -0
  176. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/tier0-scan.ts +423 -0
  177. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/completeness-check.ts +436 -0
  178. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/doc-refs.ts +190 -0
  179. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/finalize-gate.ts +417 -0
  180. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/findings-contract.ts +628 -0
  181. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/render-js-syntax.ts +188 -0
  182. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/report-checklist.yaml +217 -0
  183. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/trace-shape.ts +262 -0
  184. package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/wave6-checklist.ts +326 -0
  185. package/mutagent-diagnostics/CLAUDE.md +41 -0
  186. package/mutagent-diagnostics/LICENSE +201 -0
  187. package/mutagent-diagnostics/NOTICE +18 -0
  188. package/mutagent-diagnostics/README.md +343 -0
  189. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/SKILL.md +548 -0
  190. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/agents/audit-executor.md +169 -0
  191. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/agents/dataset-builder.md +160 -0
  192. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/agents/discovery.md +425 -0
  193. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/agents/evaluator.md +1108 -0
  194. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/brand/theme.css +213 -0
  195. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/brand/wordmark.html +9 -0
  196. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/lenses/context-flow-lens.md +85 -0
  197. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/lenses/data-lens.md +47 -0
  198. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/lenses/decision-lens.md +48 -0
  199. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/lenses/methodology-critic-lens.md +53 -0
  200. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/lenses/trajectory-lens.md +44 -0
  201. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/build-review-interface.md +83 -0
  202. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/edd-loop.md +134 -0
  203. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/error-analysis.md +113 -0
  204. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/eval-audit.md +154 -0
  205. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/eval-stage.md +168 -0
  206. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/generate-synthetic-data.md +81 -0
  207. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/grounded-adjudication.md +221 -0
  208. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/memory-format.md +65 -0
  209. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/methodology.md +201 -0
  210. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/operation-inventory.md +197 -0
  211. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/validate-evaluator.md +125 -0
  212. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/workflows/orchestrator-protocol.md +300 -0
  213. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/write-judge-prompt.md +123 -0
  214. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/behavior-tree.schema.yaml +73 -0
  215. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/dataset.schema.yaml +66 -0
  216. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/edd-change-request.schema.yaml +114 -0
  217. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/eval-matrix.schema.yaml +74 -0
  218. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/flow-graph.schema.yaml +69 -0
  219. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/flow-profile.schema.yaml +49 -0
  220. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/methodology-review.schema.yaml +40 -0
  221. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/scorecard.schema.yaml +85 -0
  222. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/agent-dispatch.ts +0 -0
  223. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/aggregate-discover.ts +543 -0
  224. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/artifact-paths.ts +115 -0
  225. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/assemble-scorecard.ts +172 -0
  226. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/build-dataset.ts +186 -0
  227. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/build-evals.ts +93 -0
  228. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/build-review-ui.ts +393 -0
  229. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/check-method-router.ts +170 -0
  230. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/aggregate.ts +112 -0
  231. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/audit-run.ts +182 -0
  232. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/doctor.ts +211 -0
  233. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/dogfood.ts +133 -0
  234. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/init.ts +601 -0
  235. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/methodology-review.ts +122 -0
  236. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/prep.ts +295 -0
  237. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/profile-subject.ts +165 -0
  238. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/run.sh +56 -0
  239. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/variance-check.ts +105 -0
  240. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/code-eval.ts +248 -0
  241. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/code-quality-verdict.ts +285 -0
  242. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/codegen-evals.ts +173 -0
  243. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cold-start-project.ts +151 -0
  244. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cold-start-sampler.ts +267 -0
  245. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/config/load.ts +343 -0
  246. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/config/schema.ts +380 -0
  247. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/agentspec-evals.ts +85 -0
  248. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/dataset.ts +149 -0
  249. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/eval-engine.ts +118 -0
  250. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/eval-matrix.ts +577 -0
  251. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/eval-types.ts +1074 -0
  252. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/flow-graph.ts +194 -0
  253. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/types.ts +303 -0
  254. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/validation.ts +193 -0
  255. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/derive-dataset.ts +152 -0
  256. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/determine-outcome.ts +219 -0
  257. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/diff-discriminate.ts +160 -0
  258. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/discover-criteria.ts +348 -0
  259. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/edd/change-request.ts +232 -0
  260. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/edd/edd-types.ts +210 -0
  261. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/edd/variance-gate.ts +186 -0
  262. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/emit-completeness.ts +111 -0
  263. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/eval-engine.ts +160 -0
  264. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/evaluate.ts +333 -0
  265. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/flow-graph.ts +230 -0
  266. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/judge-prompt-template.ts +253 -0
  267. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/judge-provider.ts +135 -0
  268. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/lint-grounding.ts +229 -0
  269. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/lint-uniformity.ts +168 -0
  270. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/living-suite.ts +109 -0
  271. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/load-bundle.ts +203 -0
  272. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/load-profile-vocab.ts +64 -0
  273. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/load-profile.ts +106 -0
  274. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/mask.ts +138 -0
  275. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/materialize-dataset.ts +113 -0
  276. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/matrix-judge.ts +750 -0
  277. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/memory/append.ts +215 -0
  278. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/memory/read.ts +168 -0
  279. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/persist-eval-criteria.ts +232 -0
  280. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/prep-tasks.ts +125 -0
  281. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/profile-subject.ts +310 -0
  282. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/publish-report.ts +131 -0
  283. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/read-unitf-traces.ts +81 -0
  284. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/render-build-cards.ts +195 -0
  285. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/render-discover-report.ts +1640 -0
  286. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/render-eval-report.ts +3838 -0
  287. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/render-report.ts +212 -0
  288. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/resolve-credential.ts +110 -0
  289. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/resolve-ref.ts +98 -0
  290. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/result-verify.ts +129 -0
  291. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/route-failures.ts +330 -0
  292. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/run-deterministic.ts +367 -0
  293. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/run-evaluate.ts +719 -0
  294. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/run-judge.ts +155 -0
  295. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/run-pipeline.ts +175 -0
  296. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/sample-traces.ts +210 -0
  297. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/self-audit.ts +387 -0
  298. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/source-map.ts +106 -0
  299. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/subject-profile.ts +134 -0
  300. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/substrate.ts +162 -0
  301. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/sync-eval-criteria.ts +244 -0
  302. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/ui-slots.ts +119 -0
  303. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/unitf-to-evaltrace.ts +284 -0
  304. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/validate-judge.ts +358 -0
  305. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/variance-compare.ts +177 -0
  306. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/subjects/mutagent-diagnostics/behavior-tree.yaml +140 -0
  307. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/subjects/mutagent-diagnostics/eval-matrix.yaml +1270 -0
  308. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/subjects/mutagent-diagnostics/methodology-review.yaml +105 -0
  309. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/workflows/audit.workflow.js +82 -0
  310. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/workflows/data-leak.workflow.js +236 -0
  311. package/mutagent-evaluator/.claude/skills/mutagent-evaluator/workflows/variance.workflow.js +163 -0
  312. package/mutagent-evaluator/CLAUDE.md +45 -0
  313. package/mutagent-evaluator/LICENSE +201 -0
  314. package/mutagent-evaluator/NOTICE +23 -0
  315. package/mutagent-evaluator/README.md +88 -0
  316. package/mutagent-optimize/.claude/skills/mutagent-optimize/SKILL.md +287 -0
  317. package/mutagent-optimize/.claude/skills/mutagent-optimize/scripts/contracts/amend-request.ts +503 -0
  318. package/mutagent-optimize/.claude/skills/mutagent-optimize/scripts/improve-loop-run.ts +304 -0
  319. package/mutagent-optimize/.claude/skills/mutagent-optimize/scripts/loop-state-cli.ts +300 -0
  320. package/mutagent-optimize/.claude/skills/mutagent-optimize/scripts/loop-state.ts +440 -0
  321. package/mutagent-optimize/CLAUDE.md +49 -0
  322. package/mutagent-optimize/README.md +26 -0
  323. package/mutagent-orchestrator/CLAUDE.md +102 -0
  324. package/mutagent-orchestrator/README.md +20 -0
  325. package/mutagent-orchestrator/assets/agents/discovery.md +425 -0
  326. package/mutagent-orchestrator/assets/agents/dogfood-monitor.md +266 -0
  327. package/mutagent-orchestrator/assets/agents/monitor.md +258 -0
  328. package/mutagent-orchestrator/orchestrator.md +782 -0
  329. package/mutagent-orchestrator/references/MONITORING.md +209 -0
  330. package/mutagent-orchestrator/references/config-fields.md +132 -0
  331. package/mutagent-orchestrator/references/config-migration.md +132 -0
  332. package/mutagent-orchestrator/references/index-registry.md +92 -0
  333. package/mutagent-orchestrator/routing.yaml +391 -0
  334. package/mutagent-orchestrator/scripts/config-schema.ts +1010 -0
  335. package/mutagent-orchestrator/scripts/dispatch.ts +439 -0
  336. package/mutagent-orchestrator/scripts/dogfood/extract-feedback.ts +203 -0
  337. package/mutagent-orchestrator/scripts/dogfood/reconstruct-trajectory.ts +327 -0
  338. package/mutagent-orchestrator/scripts/dogfood/render-dogfood-report.ts +347 -0
  339. package/mutagent-orchestrator/scripts/dogfood/resolve-subagents.ts +160 -0
  340. package/mutagent-orchestrator/scripts/dogfood/run-report.ts +264 -0
  341. package/mutagent-orchestrator/scripts/dogfood/slack-thread.ts +106 -0
  342. package/mutagent-orchestrator/scripts/dogfood/types.ts +257 -0
  343. package/mutagent-orchestrator/scripts/eval-routing.ts +753 -0
  344. package/mutagent-orchestrator/scripts/gate.ts +219 -0
  345. package/mutagent-orchestrator/scripts/handover-contract.ts +362 -0
  346. package/mutagent-orchestrator/scripts/index/build-index.ts +351 -0
  347. package/mutagent-orchestrator/scripts/index/render-index.ts +110 -0
  348. package/mutagent-orchestrator/scripts/monitor/slack-notify.ts +111 -0
  349. package/mutagent-orchestrator/scripts/monitor/triggers.ts +162 -0
  350. package/mutagent-orchestrator/scripts/onboarding-check.ts +369 -0
  351. package/mutagent-orchestrator/scripts/render-roster.ts +308 -0
  352. package/mutagent-orchestrator/scripts/resolve-credential.ts +185 -0
  353. package/mutagent-orchestrator/scripts/resolve-paths.ts +114 -0
  354. package/mutagent-orchestrator/scripts/slack/format.ts +63 -0
  355. package/mutagent-orchestrator/scripts/slack/post.ts +115 -0
  356. package/mutagent-orchestrator/scripts/sync-index.ts +311 -0
  357. package/package.json +64 -0
@@ -0,0 +1,327 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en" data-theme="dark">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>{{TITLE}}</title>
6
+ <link rel="preconnect" href="https://fonts.googleapis.com">
7
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
8
+ <link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap" rel="stylesheet">
9
+ <style>
10
+ :root{--bg:#0a0a12;--bg2:#14141d;--bg3:#1a1a25;--surf:#14141d;--surf-r:#1a1a25;--surf-e:#22222f;--surf-h:#22222f;--text:#eef1f6;--muted:#a6a2b4;--dim:#6a6678;--border:rgba(255,255,255,0.09);--bstr:rgba(255,255,255,0.16);--p:#b794f4;--p-strong:#7E47D7;--c:#45b8cc;--g:#43c39a;--y:#e8a64d;--r:#e06666;--m:#c9a8e6;--recommend:#67a0aa;--recommend-bg:rgba(103,160,170,0.05);--glow:rgba(126,71,215,0.15);--gglow:rgba(69,184,204,0.15);--fs:'Space Grotesk',system-ui,sans-serif;--fm:'IBM Plex Mono',ui-monospace,monospace;}
11
+ *{box-sizing:border-box;}body{margin:0;font-family:var(--fs);color:var(--text);background:var(--bg);font-size:14px;line-height:1.55;}
12
+ header.banner{background:var(--bg2);border-bottom:1px solid var(--bstr);padding:20px 32px;position:relative;}
13
+ header.banner::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,var(--p-strong),var(--c),transparent);opacity:0.55;}
14
+ .brand{display:flex;align-items:baseline;gap:14px;margin-bottom:6px;}
15
+ .logo{font-family:var(--fs);font-weight:700;font-size:22px;letter-spacing:0.18em;background:linear-gradient(135deg,var(--primary-soft,var(--p)) 0%,var(--c) 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;}
16
+ .product{font-size:14px;font-weight:500;color:var(--muted);letter-spacing:0.04em;}
17
+ .meta{font-size:11.5px;font-family:var(--fm);color:var(--muted);letter-spacing:0.02em;}
18
+ .meta .mk{color:var(--c);font-weight:600;}.meta .mv{color:var(--text);font-weight:600;}.meta .sep{color:var(--dim);margin:0 6px;}
19
+ /* tabs — ported from the evaluator report's unified-brand treatment: void background,
20
+ NO box-shadow (restrained brand), --fs-xs(12px) floor, subtle surf hover, and the
21
+ active tab underlines in the STRONG primary (--p-strong) for clear affordance. */
22
+ nav.tabs{background:var(--bg);border-bottom:1px solid var(--border);padding:0 12px;position:sticky;top:0;z-index:100;overflow-x:auto;white-space:nowrap;}
23
+ nav.tabs button{background:none;border:none;padding:10px 12px;font-size:12px;font-weight:500;color:var(--muted);cursor:pointer;border-bottom:3px solid transparent;transition:all 0.15s;font-family:inherit;letter-spacing:0.01em;text-decoration:none;}
24
+ nav.tabs button:hover{color:var(--text);background:var(--surf);}
25
+ nav.tabs button.active{color:var(--p);border-bottom-color:var(--p-strong);font-weight:600;}
26
+ nav.tabs button.internal{color:var(--c);} nav.tabs button.internal.active{border-bottom-color:var(--c);}
27
+ nav.tabs button .sev-dot{display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:5px;vertical-align:middle;}
28
+ .sev-crit{background:var(--r);}.sev-high{background:var(--y);}.sev-med{background:var(--c);}.sev-info{background:var(--dim);}
29
+ main{max-width:1200px;margin:0 auto;padding:28px 32px 140px 32px;}
30
+ .panel{display:none;}.panel.active{display:block;animation:fade 0.2s ease-out;}
31
+ @keyframes fade{from{opacity:0;transform:translateY(4px);}to{opacity:1;transform:translateY(0);}}
32
+ h2{font-size:22px;font-weight:600;margin:0 0 8px 0;padding-bottom:10px;border-bottom:1px solid var(--bstr);color:var(--text);}
33
+ .sub{color:var(--muted);font-size:13px;margin-bottom:24px;}
34
+ h3{font-size:16px;font-weight:600;margin-top:24px;color:var(--p);}
35
+ h4{font-size:13px;font-weight:600;margin-top:14px;color:var(--text);text-transform:uppercase;letter-spacing:0.04em;font-family:var(--fm);}
36
+ p{line-height:1.6;color:var(--muted);}strong{color:var(--text);}
37
+ table{border-collapse:collapse;margin:12px 0;font-size:12px;width:100%;border:1px solid var(--border);border-radius:8px;overflow:hidden;}
38
+ th,td{border:1px solid var(--border);padding:8px 12px;text-align:left;vertical-align:top;color:var(--muted);}
39
+ th{background:var(--surf-r);font-weight:600;color:var(--text);}tr:nth-child(even) td{background:var(--bg3);}
40
+ code{background:var(--bg);color:var(--m);padding:2px 6px;border-radius:4px;font-size:max(11px,0.88em);font-family:var(--fm);border:1px solid var(--border);}
41
+ .crit{background:rgba(224,102,102,0.08);border-left:3px solid var(--r);padding:14px 18px;margin:14px 0;}.crit strong{color:var(--r);}
42
+ .warn{background:rgba(232,166,77,0.08);border-left:3px solid var(--y);padding:14px 18px;margin:14px 0;}.warn strong{color:var(--y);}
43
+ .alert{background:rgba(67,195,154,0.08);border-left:3px solid var(--g);padding:14px 18px;margin:14px 0;}.alert strong{color:var(--g);}
44
+ .internal-banner{background:rgba(69,184,204,0.08);border:1px dashed rgba(69,184,204,0.45);padding:10px 16px;margin:0 0 18px 0;font-family:var(--fm);font-size:11px;color:var(--c);letter-spacing:0.03em;}
45
+ .badge{display:inline-block;padding:2px 6px;font-size:11px;border-radius:3px;font-weight:600;letter-spacing:0.04em;font-family:var(--fm);margin-right:4px;}
46
+ .b-crit{background:rgba(224,102,102,0.18);color:var(--r);border:1px solid rgba(224,102,102,0.35);}
47
+ .b-high{background:rgba(232,166,77,0.18);color:var(--y);border:1px solid rgba(232,166,77,0.35);}
48
+ .b-med{background:rgba(69,184,204,0.18);color:var(--c);border:1px solid rgba(69,184,204,0.35);}
49
+ .b-info{background:rgba(112,112,136,0.18);color:var(--dim);border:1px solid rgba(112,112,136,0.35);}
50
+ .b-tool{background:rgba(201,168,230,0.15);color:var(--m);border:1px solid rgba(201,168,230,0.3);padding:2px 7px;border-radius:3px;font-family:var(--fm);font-size:11px;margin:2px;display:inline-block;}
51
+ .taxonomy{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 14px 0;}
52
+ .tax-chip{font-family:var(--fm);font-size:11px;padding:4px 8px;border-radius:4px;background:var(--surf-r);border:1px solid var(--border);color:var(--muted);}
53
+ .tax-chip strong{color:var(--p);font-weight:600;}
54
+ .whychain{margin:10px 0;padding:0;list-style:none;}
55
+ .whychain li{position:relative;padding:8px 0 8px 18px;font-size:13px;color:var(--muted);border-left:2px solid var(--border);margin-left:8px;}
56
+ .whychain li.origin{border-left-color:var(--r);color:var(--text);}
57
+ .whychain li.origin::after{content:'← ORIGIN';font-family:var(--fm);font-size:11px;color:var(--r);margin-left:8px;font-weight:600;letter-spacing:0.04em;}
58
+ .whychain li em{display:block;font-style:normal;color:var(--dim);font-size:11px;font-family:var(--fm);margin-top:3px;}
59
+ /* EV-1: trace narration line — "trace <id> — <whatHappened> «example»" */
60
+ .ev-narration{font-size:13px;color:var(--muted);}
61
+ .ev-narration code{font-family:var(--fm);font-size:11px;color:var(--p);}
62
+ .ev-example{display:block;margin-top:4px;font-style:normal;color:var(--dim);font-size:11px;font-family:var(--fm);quotes:none;}
63
+ .whychain li em .ev-example{margin-top:2px;}
64
+ .assumptions{background:rgba(232,166,77,0.06);border:1px solid rgba(232,166,77,0.25);border-radius:6px;padding:10px 14px;margin:12px 0;}
65
+ .assumptions h4{margin-top:0;color:var(--y);}
66
+ .assumptions li{font-size:12px;color:var(--muted);margin:4px 0;}
67
+ .assumptions .verified{color:var(--g);font-family:var(--fm);font-size:11px;}
68
+ .assumptions .unverified{color:var(--r);font-family:var(--fm);font-size:11px;}
69
+ .assumptions .hypothesis-pending{color:var(--y);font-family:var(--fm);font-size:11px;}
70
+ .remedy{background:var(--bg2);border:1px solid var(--border);border-radius:6px;padding:12px 14px;margin:10px 0;display:flex;align-items:flex-start;gap:12px;position:relative;}
71
+ .remedy.recommended{border:1px solid var(--recommend);border-left:3px solid var(--recommend);background:var(--recommend-bg);}
72
+ .remedy.recommended::before{content:'★ RECOMMENDED';position:absolute;top:-9px;left:12px;background:var(--recommend);color:var(--bg);font-family:var(--fm);font-size:11px;font-weight:700;letter-spacing:0.06em;padding:2px 8px;}
73
+ .remedy-cb{accent-color:var(--p);cursor:pointer;flex-shrink:0;margin-top:3px;}
74
+ .remedy.recommended .remedy-cb{accent-color:var(--g);}
75
+ .remedy-id{font-family:var(--fm);font-weight:700;color:var(--c);font-size:11px;min-width:95px;padding-top:1px;}
76
+ .remedy.recommended .remedy-id{color:var(--g);}
77
+ .remedy-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px;}.remedy-what{font-weight:500;color:var(--text);font-size:13px;line-height:1.5;}
78
+ .remedy-meta{font-family:var(--fm);font-size:11px;color:var(--dim);margin-top:6px;display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
79
+ .rank-pill{font-family:var(--fm);font-size:11px;font-weight:700;padding:1px 7px;border-radius:3px;background:var(--surf-e);color:var(--muted);border:1px solid var(--bstr);}
80
+ .apply-pill{font-family:var(--fm);font-size:11px;padding:1px 7px;border-radius:3px;}
81
+ .apply-code{background:rgba(224,102,102,0.15);color:var(--r);border:1px solid rgba(224,102,102,0.3);}
82
+ .apply-prompt{background:rgba(126,71,215,0.15);color:var(--p);border:1px solid rgba(126,71,215,0.3);}
83
+ .apply-config{background:rgba(69,184,204,0.15);color:var(--c);border:1px solid rgba(69,184,204,0.3);}
84
+ .apply-none{background:rgba(112,112,136,0.15);color:var(--dim);border:1px solid rgba(112,112,136,0.3);}
85
+ .b-cost-low{background:rgba(67,195,154,0.18);color:var(--g);border:1px solid rgba(67,195,154,0.35);padding:1px 6px;border-radius:3px;}
86
+ .b-cost-med{background:rgba(232,166,77,0.18);color:var(--y);border:1px solid rgba(232,166,77,0.35);padding:1px 6px;border-radius:3px;}
87
+ .b-cost-high{background:rgba(224,102,102,0.18);color:var(--r);border:1px solid rgba(224,102,102,0.35);padding:1px 6px;border-radius:3px;}
88
+ .entity{background:var(--surf-r);border:1px solid var(--bstr);border-radius:10px;padding:18px 20px;margin:16px 0;}
89
+ .entity-head{display:flex;align-items:baseline;gap:12px;margin-bottom:12px;}
90
+ .entity-name{font-size:18px;font-weight:700;color:var(--text);}
91
+ .entity-grid{display:grid;grid-template-columns:140px 1fr;gap:8px 16px;font-size:13px;}
92
+ .entity-grid .k{color:var(--dim);font-family:var(--fm);font-size:11px;text-transform:uppercase;letter-spacing:0.04em;padding-top:3px;}
93
+ .entity-grid .v{color:var(--muted);}
94
+ .access-yes{color:var(--g);font-weight:600;}.access-no{color:var(--r);font-weight:600;}
95
+ details.expand{margin-top:12px;border:1px solid var(--border);border-radius:6px;background:var(--bg2);}
96
+ details.expand summary{cursor:pointer;padding:9px 12px;font-family:var(--fm);font-size:11px;color:var(--c);font-weight:600;list-style:none;}
97
+ details.expand summary::-webkit-details-marker{display:none;}
98
+ details.expand summary::before{content:'▶ ';color:var(--dim);}details.expand[open] summary::before{content:'▼ ';}
99
+ details.expand pre{margin:0;padding:12px;background:#0a0a14;color:#c4c4d4;font-family:var(--fm);font-size:11px;white-space:pre-wrap;word-break:break-word;border-top:1px solid var(--border);max-height:340px;overflow:auto;border-radius:0 0 6px 6px;}
100
+ .f-desc{margin:10px 0;font-size:13px;color:var(--muted);line-height:1.6;}
101
+ .f-desc strong{color:var(--text);}
102
+ .big-stat{display:flex;gap:18px;flex-wrap:wrap;margin:16px 0;}
103
+ .big-stat .s{background:var(--surf-r);border:1px solid var(--border);border-radius:8px;padding:12px 16px;min-width:96px;}
104
+ .big-stat .v{font-size:22px;font-weight:700;font-family:var(--fm);}
105
+ .big-stat .l{font-size:11px;color:var(--dim);text-transform:uppercase;letter-spacing:0.06em;margin-top:2px;}
106
+ /* scan-coverage funnel */
107
+ .funnel{display:flex;align-items:stretch;gap:0;margin:14px 0;border-radius:8px;overflow:hidden;border:1px solid var(--border);}
108
+ .funnel .seg{padding:12px 16px;display:flex;flex-direction:column;justify-content:center;position:relative;}
109
+ .funnel .seg .fv{font-family:var(--fm);font-weight:700;font-size:20px;}
110
+ .funnel .seg .fl{font-size:11px;text-transform:uppercase;letter-spacing:0.05em;margin-top:2px;}
111
+ .funnel .seg .fp{font-family:var(--fm);font-size:11px;opacity:0.7;margin-top:2px;}
112
+ .funnel .s-total{background:var(--surf-r);flex:3;}
113
+ .funnel .s-code{background:rgba(69,184,204,0.10);flex:3;border-left:1px solid var(--border);}
114
+ .funnel .s-llm{background:rgba(126,71,215,0.12);flex:1;border-left:1px solid var(--border);}
115
+ .funnel .s-total .fv{color:var(--text);}.funnel .s-code .fv{color:var(--c);}.funnel .s-llm .fv{color:var(--p);}
116
+ /* heatmap */
117
+ .heat{display:flex;flex-wrap:wrap;gap:3px;margin:12px 0;}
118
+ .heat .cell{width:42px;height:42px;border-radius:5px;border:1px solid var(--border);display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:var(--fm);cursor:default;}
119
+ .heat .cell .ch{font-size:11px;color:rgba(255,255,255,0.55);}
120
+ .heat .cell .cn{font-size:11px;font-weight:600;color:#fff;}
121
+ .heat-legend{display:flex;gap:10px;align-items:center;font-family:var(--fm);font-size:11px;color:var(--dim);margin-top:6px;}
122
+ .heat-legend .sw{width:14px;height:14px;border-radius:3px;display:inline-block;vertical-align:middle;margin-right:3px;}
123
+ .l0{background:rgba(67,195,154,0.25);}.l1{background:rgba(232,166,77,0.28);}.l2{background:rgba(232,166,77,0.40);}.l3{background:rgba(224,102,102,0.42);}.l4{background:rgba(224,102,102,0.58);}
124
+ .mermaid{background:var(--surf-r);border:1px solid var(--bstr);border-radius:8px;padding:18px;margin:14px 0;text-align:center;overflow-x:auto;}
125
+ .action-bar{position:fixed;bottom:24px;right:24px;display:flex;gap:10px;z-index:1000;}
126
+ .action-bar button{padding:11px 18px;border:none;border-radius:8px;cursor:pointer;font-size:13px;font-weight:600;box-shadow:0 2px 8px rgba(0,0,0,0.35);font-family:var(--fs);}
127
+ .action-bar button#reset-all{background:var(--surf-e);color:var(--muted);border:1px solid var(--bstr);}
128
+ /* D2: the Copy-decisions CTA is the PRIMARY action of the Decisions panel — it lives
129
+ INSIDE that panel (renderDecisionsTab) and sticks to the panel's top-right edge just
130
+ below the sticky tab bar. The transparent bar lets content scroll under it on the
131
+ left while the opaque purple button covers it on the right. */
132
+ .decisions-cta-bar{position:sticky;top:44px;z-index:50;display:flex;justify-content:flex-end;margin:-8px 0 14px 0;pointer-events:none;}
133
+ .decisions-cta-bar button#copy-decisions{pointer-events:auto;background:var(--p-strong);color:#fff;border:1px solid var(--p);padding:11px 18px;cursor:pointer;font-size:13px;font-weight:600;box-shadow:0 2px 10px rgba(0,0,0,0.45);font-family:var(--fs);}
134
+ .decisions-cta-bar button#copy-decisions:hover{filter:brightness(1.08);}
135
+ .approved-count{position:fixed;bottom:24px;left:24px;background:var(--surf-e);border:1px solid var(--bstr);border-radius:8px;padding:9px 16px;font-family:var(--fm);font-size:12px;color:var(--muted);z-index:1000;}
136
+ .approved-count strong{color:var(--p);font-weight:700;}
137
+ .remedy-notes{width:100%;margin-top:8px;min-height:40px;padding:7px 10px;font-family:var(--fm);font-size:11px;background:#0a0a14;color:var(--text);border:1px solid var(--bstr);border-radius:4px;resize:vertical;line-height:1.45;}
138
+ .remedy-notes::placeholder{color:var(--dim);font-style:italic;}
139
+ .remedy-notes:focus{outline:none;border-color:var(--p);box-shadow:0 0 0 2px rgba(126,71,215,0.15);}
140
+ .gfeedback{background:var(--surf-e);border:1px solid var(--bstr);border-radius:10px;padding:18px 20px;margin:16px 0;}
141
+ .gfeedback h4{margin:0 0 8px 0;color:var(--p);font-size:12px;text-transform:uppercase;letter-spacing:0.06em;font-family:var(--fm);}
142
+ .gfeedback textarea{width:100%;min-height:120px;padding:11px 14px;font-family:var(--fm);font-size:13px;background:#0a0a14;color:var(--text);border:1px solid var(--bstr);border-radius:8px;resize:vertical;line-height:1.6;}
143
+ .gfeedback textarea::placeholder{color:var(--dim);font-style:italic;}
144
+ .gfeedback textarea:focus{outline:none;border-color:var(--p);box-shadow:0 0 0 2px rgba(126,71,215,0.15);}
145
+ /* Wave-6 R2.5 — coverage proof */
146
+ .coverage-proof{margin:16px 0;}
147
+ /* PRD-CC-05 — canonical remedy card anatomy (D1/D3/D4/D5/D6) */
148
+ .remedy-header{display:flex;align-items:flex-start;gap:10px;margin-bottom:10px;}
149
+ .remedy-rank-id{display:flex;align-items:center;gap:6px;flex-shrink:0;}
150
+ .r-rationale{background:rgba(126,71,215,0.10);border-left:3px solid var(--p);padding:10px 14px;margin:10px 0;}
151
+ .r-why-works{background:rgba(69,184,204,0.10);border-left:3px solid var(--c);padding:10px 14px;margin:10px 0;}
152
+ .r-rationale p,.r-why-works p{margin:4px 0 0 0;font-size:13px;color:var(--muted);line-height:1.55;}
153
+ .r-block-label{font-family:var(--fm);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:0.07em;color:var(--dim);}
154
+ .r-rationale .r-block-label{color:var(--p);}
155
+ .r-why-works .r-block-label{color:var(--c);}
156
+ .r-target{border:1px dashed var(--border);border-radius:5px;padding:7px 12px;margin:8px 0;display:flex;align-items:center;gap:8px;font-size:12px;}
157
+ .r-target-label{font-family:var(--fm);font-size:11px;text-transform:uppercase;letter-spacing:0.05em;color:var(--dim);flex-shrink:0;}
158
+ .r-diff-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:10px 0;}
159
+ .diff-col{display:flex;flex-direction:column;}
160
+ .diff-col pre{margin:0;padding:10px;background:#0a0a14;color:#c4c4d4;font-family:var(--fm);font-size:11px;white-space:pre-wrap;word-break:break-word;border:1px solid var(--border);border-radius:0 0 5px 5px;flex:1;}
161
+ .diff-label{padding:4px 10px;font-family:var(--fm);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:0.05em;border-radius:5px 5px 0 0;}
162
+ .diff-label.label-before{background:rgba(224,102,102,0.18);color:var(--r);}
163
+ .diff-label.label-after{background:rgba(67,195,154,0.18);color:var(--g);}
164
+ /* W12-08: source-not-found caveat shown in place of the Before/After grid (PR-052 proposed). */
165
+ .r-diff-caveat{border:1px dashed var(--y);border-radius:5px;padding:10px 12px;margin:10px 0;background:rgba(232,166,77,0.07);}
166
+ .r-diff-caveat-label{font-family:var(--fm);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:0.05em;color:var(--y);margin-bottom:5px;}
167
+ .r-diff-caveat p{margin:0;font-size:12px;color:var(--dim);}
168
+ .r-apply-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:10px 0;}
169
+ .apply-col{background:var(--surf-e);border:1px solid var(--border);border-radius:6px;padding:12px 14px;}
170
+ .apply-col-empty{opacity:0.6;}
171
+ .apply-col-label{font-family:var(--fm);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:0.06em;color:var(--c);margin-bottom:6px;}
172
+ .r-apply-plan,.r-apply-instr{margin:6px 0;padding-left:16px;font-size:12px;color:var(--muted);}
173
+ .r-apply-plan li,.r-apply-instr li{margin:3px 0;}
174
+ .r-verify-label{font-family:var(--fm);font-size:11px;text-transform:uppercase;color:var(--dim);margin-top:6px;}
175
+ .r-acceptance{font-size:12px;color:var(--g);margin-top:6px;font-style:italic;}
176
+ .r-commit{font-size:11px;color:var(--dim);margin-top:4px;}
177
+ .r-line-range{color:var(--dim);font-size:11px;}
178
+ .r-muted{font-size:12px;color:var(--dim);margin:4px 0 0 0;}
179
+ .r-count{font-family:var(--fm);font-size:11px;color:var(--dim);font-weight:400;}
180
+ /* PRD-CC-05 — feedback block (D5/D9 — no emojis) */
181
+ .feedback-list{margin:12px 0;}
182
+ .feedback-list h3{margin-top:0;color:var(--c);}
183
+ .fb-item{border-radius:6px;padding:10px 14px;margin:8px 0;border-left:3px solid var(--border);}
184
+ .fb-item blockquote{margin:6px 0 0 0;font-size:13px;color:var(--muted);border-left:none;padding:0;}
185
+ .fb-item.fb-chat{border-left-color:var(--c);background:rgba(69,184,204,0.07);}
186
+ .fb-item.fb-trace-score{border-left-color:var(--y);background:rgba(232,166,77,0.07);}
187
+ .fb-item.fb-external{border-left-color:var(--p);background:rgba(126,71,215,0.07);}
188
+ .fb-head{font-size:12px;color:var(--muted);display:flex;flex-wrap:wrap;gap:4px;align-items:center;}
189
+ .fb-source-type{font-family:var(--fm);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:0.06em;}
190
+ .fb-item.fb-chat .fb-source-type{color:var(--c);}
191
+ .fb-item.fb-trace-score .fb-source-type{color:var(--y);}
192
+ .fb-item.fb-external .fb-source-type{color:var(--p);}
193
+ .fb-score-note{font-family:var(--fm);font-size:11px;color:var(--dim);}
194
+ /* PRD-CC-05 — targetClass + changeType pills */
195
+ .tclass-pill{font-family:var(--fm);font-size:11px;padding:1px 7px;border-radius:3px;}
196
+ .tclass-local-agent{background:rgba(126,71,215,0.15);color:var(--p);border:1px solid rgba(126,71,215,0.3);}
197
+ .tclass-local-code-construct{background:rgba(69,184,204,0.15);color:var(--c);border:1px solid rgba(69,184,204,0.3);}
198
+ .tclass-remote{background:rgba(232,166,77,0.15);color:var(--y);border:1px solid rgba(232,166,77,0.3);}
199
+ .ctype-pill{font-family:var(--fm);font-size:11px;padding:1px 7px;border-radius:3px;}
200
+ .ctype-add{background:rgba(67,195,154,0.15);color:var(--g);border:1px solid rgba(67,195,154,0.3);}
201
+ .ctype-modify{background:rgba(69,184,204,0.15);color:var(--c);border:1px solid rgba(69,184,204,0.3);}
202
+ .ctype-replace{background:rgba(126,71,215,0.15);color:var(--p);border:1px solid rgba(126,71,215,0.3);}
203
+ .ctype-delete{background:rgba(224,102,102,0.15);color:var(--r);border:1px solid rgba(224,102,102,0.3);}
204
+ /* PRD-CC-05 — correctness badge */
205
+ .b-correctness-low{background:rgba(224,102,102,0.18);color:var(--r);border:1px solid rgba(224,102,102,0.35);padding:1px 6px;border-radius:3px;}
206
+ .b-correctness-med{background:rgba(232,166,77,0.18);color:var(--y);border:1px solid rgba(232,166,77,0.35);padding:1px 6px;border-radius:3px;}
207
+ .b-correctness-high{background:rgba(67,195,154,0.18);color:var(--g);border:1px solid rgba(67,195,154,0.35);padding:1px 6px;border-radius:3px;}
208
+ /* PRD-CC-06 — live preview textarea in Decisions panel */
209
+ .live-preview{background:var(--surf-e);border:1px solid var(--bstr);border-radius:8px;padding:14px 16px;margin:16px 0;}
210
+ .lp-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;}
211
+ .lp-label{font-family:var(--fm);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:0.06em;color:var(--c);}
212
+ .lp-meta{font-family:var(--fm);font-size:11px;color:var(--dim);}
213
+ .lp-body{width:100%;min-height:160px;padding:10px 12px;font-family:var(--fm);font-size:11px;background:#0a0a14;color:#c4c4d4;border:1px solid var(--bstr);border-radius:6px;resize:vertical;line-height:1.5;}
214
+ /* PRD-SD-06 — decisions subject row */
215
+ .decisions-subject-row{font-family:var(--fm);font-size:12px;color:var(--dim);margin:8px 0;padding:6px 10px;background:var(--surf-r);border-radius:5px;display:flex;gap:8px;align-items:center;}
216
+ /* Wave-6 R2.4 — methodology widgets (tier pie · selection cards · trace) */
217
+ .pie-legend{display:flex;flex-wrap:wrap;gap:12px;margin:8px 0 4px 0;font-size:12px;font-family:var(--fm);}
218
+ .pie-leg{display:inline-flex;align-items:center;gap:6px;color:var(--muted);}
219
+ .pie-sw{display:inline-block;width:12px;height:12px;border-radius:3px;}
220
+ .sel-cards{display:flex;flex-wrap:wrap;gap:12px;margin:10px 0;}
221
+ .sel-card{flex:1 1 220px;background:var(--surf-e);border:1px solid var(--bstr);border-radius:8px;padding:12px 14px;}
222
+ .sel-card-head{display:flex;align-items:center;gap:8px;margin-bottom:6px;}
223
+ .sel-card-body{font-size:12px;color:var(--muted);display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;}
224
+ .sel-k{text-transform:uppercase;letter-spacing:0.05em;font-size:11px;color:var(--dim);font-family:var(--fm);}
225
+ /* D3: richer dataset-candidate detail rows — each links the discovered signal to its
226
+ finding's RCA narrative (scenario · edge-case · why-failed · why-high-value · prevents). */
227
+ .sel-detail{font-size:12px;color:var(--muted);line-height:1.5;margin-top:7px;width:100%;}
228
+ .sel-detail .sel-k{display:block;margin-bottom:1px;color:var(--c);}
229
+ .sel-detail.sel-prevents .sel-k{color:var(--g);}
230
+ .sel-detail.sel-value .sel-k{color:var(--p);}
231
+ /* design-system: SHARP corners (radius 0) is the brand — enforce across every element,
232
+ including inline-styled nodes emitted by render.ts and the structured-report template. */
233
+ *,*::before,*::after{border-radius:0!important;}
234
+ </style></head><body>
235
+ <header class="banner">
236
+ <div class="brand"><div class="logo">MUTAGENT</div><div class="product">{{HEADER_TITLE}}</div></div>
237
+ <div class="meta">{{HEADER_META}}</div>
238
+ </header>
239
+ {{INTERNAL_BANNER_FORCE}}
240
+
241
+ <nav class="tabs" id="tabnav">{{TAB_NAV_HTML}}</nav>
242
+
243
+ <main>
244
+ {{INTERNAL_BANNER_HTML}}
245
+ {{METHODOLOGY_PANEL_HTML}}
246
+ {{OVERVIEW_PANEL_HTML}}
247
+ {{FUNNEL_HEATMAP_HTML}}
248
+ {{FINDING_PANELS_HTML}}
249
+ {{DECISIONS_PANEL_HTML}}
250
+ </main>
251
+
252
+ <div class="approved-count">Selected: <strong id="approved-count">0</strong> of {{APPROVED_COUNT_DENOMINATOR}}</div>
253
+ <div class="action-bar"><button id="reset-all">Reset all</button></div>
254
+
255
+ <!-- generated: {{GENERATED_AT}} -->
256
+ {{FINDINGS_JSONLD}}
257
+ {{MERMAID_SCRIPT_HTML}}
258
+ <script src="https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.min.js"></script>
259
+ <script>
260
+ try { mermaid.initialize({ startOnLoad: true, theme: 'dark', themeVariables: { primaryColor:'#1a1a25', primaryTextColor:'#eef1f6', primaryBorderColor:'#7E47D7', lineColor:'#b794f4', actorBkg:'#1a1a25', actorBorder:'#7E47D7', actorTextColor:'#eef1f6', noteBkgColor:'#22222f', noteTextColor:'#a6a2b4', noteBorderColor:'#45b8cc' }, securityLevel:'loose' }); } catch(e) {}
261
+ document.querySelectorAll('nav.tabs button').forEach(function(btn){
262
+ btn.addEventListener('click', function(){
263
+ var t = btn.dataset.tab;
264
+ document.querySelectorAll('nav.tabs button').forEach(function(b){ b.classList.remove('active'); });
265
+ btn.classList.add('active');
266
+ document.querySelectorAll('.panel').forEach(function(p){ p.classList.remove('active'); });
267
+ var panel = document.getElementById(t);
268
+ if (panel) panel.classList.add('active');
269
+ window.scrollTo({top:0,behavior:'instant'});
270
+ });
271
+ });
272
+ // inject per-remedy notes textareas (idempotent — W12-04 restored the
273
+ // `.remedy-body` wrapper, and renderRemedyCard now emits its own `.remedy-notes`
274
+ // inside it; skip injection when one already exists to avoid double textareas)
275
+ document.querySelectorAll('.remedy').forEach(function(r){
276
+ var body = r.querySelector('.remedy-body'); if (!body) return;
277
+ if (body.querySelector('.remedy-notes')) return;
278
+ var ta = document.createElement('textarea');
279
+ ta.className = 'remedy-notes';
280
+ ta.placeholder = 'Notes / conditions on this remedy — voice-dump welcome (overrides, caveats, why-not)…';
281
+ body.appendChild(ta);
282
+ });
283
+ function updateApprovedCount(){ document.getElementById('approved-count').textContent = document.querySelectorAll('.remedy-cb:checked').length; }
284
+ document.querySelectorAll('.remedy-cb').forEach(function(cb){ cb.addEventListener('change', updateApprovedCount); });
285
+ updateApprovedCount();
286
+ var _copyBtn0 = document.getElementById('copy-decisions');
287
+ if (_copyBtn0) _copyBtn0.addEventListener('click', function(){
288
+ var txt=function(e){return e?e.textContent.trim().replace(/\s+/g,' '):'';};
289
+ var lines = ['# Approved Remedies (handoff)','','Generated: ' + new Date().toISOString(),'','---',''];
290
+ var checked = Array.from(document.querySelectorAll('.remedy-cb:checked'));
291
+ if (checked.length === 0) { lines.push('_No remedies selected._'); }
292
+ else { checked.forEach(function(cb){
293
+ var card = cb.closest('.remedy'); var panel = cb.closest('.panel');
294
+ var rid = cb.dataset.id || '?'; var fid = cb.dataset.finding || '?';
295
+ var rec = card.classList.contains('recommended') ? ' ★RECOMMENDED' : '';
296
+ var apply = card.querySelector('.apply-pill') ? card.querySelector('.apply-pill').textContent.trim() : '';
297
+ var cost=''; card.querySelectorAll('.remedy-meta span').forEach(function(s){ if(/cost:/.test(s.textContent)) cost=s.textContent.trim(); });
298
+ var what = txt(card.querySelector('.remedy-what'));
299
+ var fhead = panel ? txt(panel.querySelector('h2')) : '';
300
+ var tax = panel ? Array.from(panel.querySelectorAll('.taxonomy .tax-chip')).map(function(c){return txt(c);}).join(' · ') : '';
301
+ var evid = panel ? txt(panel.querySelector('h3 + p')) : '';
302
+ var origin = panel ? txt(panel.querySelector('.whychain li.origin')) : '';
303
+ var assume = panel ? Array.from(panel.querySelectorAll('.assumptions li')).map(function(l){return txt(l);}) : [];
304
+ lines.push('## ' + rid + ' (' + fid + ')' + rec + ' [' + apply + (cost?' · '+cost:'') + ']');
305
+ lines.push('**Remedy:** ' + what);
306
+ if (fhead) lines.push('**Finding:** ' + fhead);
307
+ if (tax) lines.push('**Taxonomy:** ' + tax);
308
+ if (origin) lines.push('**Root cause (origin):** ' + origin);
309
+ if (evid) lines.push('**Evidence:** ' + evid);
310
+ if (assume.length){ lines.push('**Assumptions:**'); assume.forEach(function(a){ lines.push('- ' + a); }); }
311
+ var note = card.querySelector('.remedy-notes');
312
+ if (note && note.value.trim()) { lines.push('**Operator notes:**'); note.value.trim().split(/\r?\n/).forEach(function(ln){ lines.push('> ' + ln); }); }
313
+ lines.push('');
314
+ }); }
315
+ var rejected = Array.from(document.querySelectorAll('.remedy-cb:not(:checked)')).filter(function(cb){ var t=cb.closest('.remedy').querySelector('.remedy-notes'); return t && t.value.trim(); });
316
+ if (rejected.length){ lines.push('---'); lines.push(''); lines.push('## Not selected (with rationale)'); lines.push(''); rejected.forEach(function(cb){
317
+ var card=cb.closest('.remedy'); var rid=cb.dataset.id||'?'; var fid=cb.dataset.finding||'?';
318
+ lines.push('- [ ] `'+rid+'` ('+fid+') — '+txt(card.querySelector('.remedy-what'))); card.querySelector('.remedy-notes').value.trim().split(/\r?\n/).forEach(function(ln){ lines.push(' > '+ln); });
319
+ }); lines.push(''); }
320
+ var gf = document.getElementById('general-feedback');
321
+ if (gf && gf.value.trim()){ lines.push('---'); lines.push(''); lines.push('## General feedback'); lines.push(''); lines.push(gf.value.trim()); lines.push(''); }
322
+ var text = lines.join('\n');
323
+ navigator.clipboard.writeText(text).then(function(){ var b=document.getElementById('copy-decisions'),o=b.textContent; b.textContent='Copied ✓ — paste in chat'; setTimeout(function(){b.textContent=o;},2200); }).catch(function(){ window.prompt('Copy:', text); });
324
+ });
325
+ document.getElementById('reset-all').addEventListener('click', function(){ if(!confirm('Reset all selections + notes?'))return; document.querySelectorAll('.remedy-cb').forEach(function(cb){cb.checked=false;}); document.querySelectorAll('.remedy-notes').forEach(function(t){t.value='';}); var gf=document.getElementById('general-feedback'); if(gf)gf.value=''; updateApprovedCount(); });
326
+ </script>
327
+ </body></html>
@@ -0,0 +1,27 @@
1
+ # Bundled shared templates (self-contained)
2
+
3
+ These install-time-copy templates were historically distributed via the peer
4
+ package `@mutagent/templates`. As of the npm public release of
5
+ `@mutagent/diagnostics`, they are **bundled directly into this package** so the
6
+ skill ships fully self-contained — `init` works offline from the package alone,
7
+ with **no peer-install and no dependency on `@mutagent/templates`**.
8
+
9
+ | File | Purpose |
10
+ |------|---------|
11
+ | `self-diagnosis-contract.v0.1.0.yaml.tpl` | Frozen v0.1.0 contract schema a target repo declares to opt into structured 10-category reports |
12
+ | `spec.yaml.tpl` | afkloop goal + termination-gate spec scaffold |
13
+ | `team.yaml.tpl` | actor/verifier team scaffold |
14
+ | `iter-N-handover.md.tpl` | per-iteration dispatch-brief scaffold |
15
+ | `wave-N-dashboard.html.tpl` | operator-facing wave dashboard scaffold |
16
+
17
+ ## Resolution
18
+
19
+ Runtime code locates this directory via `sharedTemplatesDir()` in
20
+ `scripts/cli/shared-templates.ts` (canonical path
21
+ `<skill-root>/assets/templates/shared/`), mirroring how `report/render.ts`
22
+ resolves `assets/templates/report.html.tpl`. Because the directory lives inside
23
+ the shipped skill tree, the cross-platform installer (`init`) copies it as part
24
+ of the normal skill-directory copy — no separate fetch step is required.
25
+
26
+ > Tier-2 runtime asset. Ships with the package. Do NOT move under `internal/`
27
+ > (that path is stripped on publish).
@@ -0,0 +1,125 @@
1
+ # iter-{{N}}-handover.md — {{wave_id}} {{phase_label}}
2
+
3
+ > **MANDATORY PRE-READ** for Actor + Verifier of `{{wave_id}}-iter-{{N}}`.
4
+ > Pre-staged during autonomous burn. Read in entirety BEFORE editing.
5
+
6
+ ---
7
+
8
+ ## §0 — One-line summary
9
+
10
+ {{summary_one_liner}}
11
+
12
+ > **Predecessor**: {{predecessor_ref}}.
13
+
14
+ ---
15
+
16
+ ## §1 — Environment + Hard constraints
17
+
18
+ | Setting | Value |
19
+ |---|---|
20
+ | **Worktree path** | `{{worktree_path}}` |
21
+ | **Branch** | `{{branch}}` |
22
+ | **Trunk PR** | {{trunk_pr_ref}} — OPEN, do NOT merge to main |
23
+ | **Baseline HEAD** | `{{baseline_sha}}` ({{baseline_note}}) |
24
+
25
+ **Hard constraints (UNCHANGED):**
26
+ - ❌ Do NOT merge to `main`.
27
+ - ❌ Do NOT touch `.github/workflows/`, `Dockerfile`, `tsconfig*.json`, `bunfig.toml`, root checkout.
28
+ - ❌ Do NOT skip pre-commit hooks (`--no-verify` FORBIDDEN per `feedback_correctness_discipline`).
29
+ - ❌ Do NOT add `process.env.DISABLE_*` / `ENABLE_*` rollback knobs.
30
+ {{additional_hard_constraints}}
31
+
32
+ ---
33
+
34
+ ## §2 — In-scope work
35
+
36
+ {{in_scope_table_or_prose}}
37
+
38
+ ---
39
+
40
+ ## §3 — Cross-dependency callout
41
+
42
+ {{cross_dep_callout}}
43
+
44
+ ---
45
+
46
+ ## §4 — Within-phase ordering (suggested)
47
+
48
+ {{ordering_steps}}
49
+
50
+ ---
51
+
52
+ ## §5 — Acceptance commands
53
+
54
+ ```bash
55
+ {{acceptance_commands}}
56
+ ```
57
+
58
+ ---
59
+
60
+ ## §6 — Final-Status PR comment (template Actor fills + posts)
61
+
62
+ ```markdown
63
+ ## 🏁 {{phase_label}} — Final Status
64
+
65
+ ### Decisions table
66
+
67
+ | Decision | Choice | WHY |
68
+ |---|---|---|
69
+ {{decisions_table_rows}}
70
+
71
+ ### Commit chain
72
+
73
+ {{commit_chain_summary}}
74
+
75
+ ### Status
76
+
77
+ {{final_status_summary}}
78
+
79
+ **DO NOT merge {{trunk_pr_ref}} to main** until operator green-lights.
80
+ ```
81
+
82
+ ---
83
+
84
+ ## §7 — Verifier-only ground-truth probes
85
+
86
+ ```bash
87
+ {{verifier_probes}}
88
+ ```
89
+
90
+ ---
91
+
92
+ ## §8 — Known gotchas
93
+
94
+ {{known_gotchas_table}}
95
+
96
+ ### Carried forward (from prior iterations)
97
+
98
+ {{carried_forward_gotchas}}
99
+
100
+ ---
101
+
102
+ ## §9 — Memory rules in force
103
+
104
+ {{memory_rules_list}}
105
+
106
+ ---
107
+
108
+ ## §10 — Exit criteria (PASS)
109
+
110
+ All of:
111
+ {{exit_criteria_bullets}}
112
+
113
+ On PASS → {{on_pass_next_step}}.
114
+
115
+ ---
116
+
117
+ ## §11 — Failure modes
118
+
119
+ | Symptom | Verdict |
120
+ |---|---|
121
+ {{failure_modes_table_rows}}
122
+
123
+ ---
124
+
125
+ End of iter-{{N}}-handover.md. After this iteration: {{post_iter_next_action}}.