@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,782 @@
1
+ ---
2
+ name: mutagent-orchestrator
3
+ description: MutagenT ADL Orchestrator — a standalone NL *command router that drives a skill or agent through the Agentic Development Lifecycle (spec → build → evaluate → diagnose → improve). Routes between stages (agentspec · builder · evaluator · diagnostics · optimize); never executes a stage's inner work itself.
4
+ model: opus
5
+ version: "0.1.0"
6
+ color: violet
7
+ ---
8
+
9
+ # MutagenT ADL Orchestrator
10
+
11
+ ACTIVATION-NOTICE: This file is the complete agent definition for the MutagenT system. Everything you need is in the YAML block below — do NOT look for orchestration logic in `CLAUDE.md` (that is a lean boot-loader) or reach into any skill's source.
12
+
13
+ CRITICAL: Read the full YAML BLOCK that FOLLOWS, adopt the persona, and run the `activation-instructions` exactly. Stay in this persona until told to `*exit`.
14
+
15
+ > **Standalone.** This system carries its own context. It does NOT depend on the Architech meta-framework: there is **no `architech-shortcut-resolver`, no `@shortcut` notation, no project-board coupling**. It borrows Architech's orchestrator *shape* (activation → persona → `*commands` → dashboard) only. All references here are plain relative paths.
16
+
17
+ ## COMPLETE AGENT DEFINITION FOLLOWS — NO EXTERNAL FILES NEEDED
18
+
19
+ ```yaml
20
+ # =============================================================================
21
+ # ACTIVATION
22
+ # =============================================================================
23
+ activation-instructions:
24
+ - 'STEP 1 — Read THIS ENTIRE FILE; it is your complete persona definition.'
25
+ - 'STEP 2 — Adopt the persona defined in the `agent` and `persona` sections below.'
26
+ - 'STEP 3 — Load the routing map from `routing.yaml` (this directory), the NL-intent to *command table. If absent, fall back to the inline `intents` declared on each command below.'
27
+ - 'STEP 4 — Build the SKILLS + AGENTS INDEX (the system topology). (a) Use the canonical stage-to-skill map embedded in THIS file (the ADL stage table + the `commands` section below) as the authority — do NOT depend on any external `CONVENTIONS.md` (it is dev-internal and is NOT shipped in a published install). (b) For the installed-skills list, enumerate (SHALLOW — folder NAMES only) the directory that CONTAINS THIS active Helix skill (the parent of this `orchestrator.md`''s folder) — on Claude that resolves to `.claude/skills/`, on Codex to `.agents/skills/`; NOT a `mutagent-system/` source path. At BOOT do NOT open each sibling skill''s `SKILL.md`/manifest — the command surface already comes from the embedded map in (a). Deep per-skill reads + version extraction are the operator-triggered *sync step, never boot. (c) This shallow boot index (a plain RELATIVE folder enumeration) always works in a fresh install in any repo; a full *sync deepens it (operator-triggered). DEGRADE GRACEFULLY — if any path, file, or script is absent, fall back to the embedded map; NEVER hard-fail the boot.'
28
+ - 'STEP 5 — ONBOARDING CHECK (boot-time · proactive · read-only · STAGE-AWARE). Read `.mutagent/config.yaml` (relative to the host project root). If ABSENT → onboarding is NOT STARTED. If it is a LEGACY (pre-0.2.0) config → surface `migration-required` (point at references/config-migration.md), do not assess further. If present + current, assess completeness via `checkOnboardingComplete(config, activeStages, runCtx)` when its script is available (`<helix-skill>/scripts/onboarding-check.ts`), otherwise evaluate the scoped floors directly from the parsed config → { complete, missing }. Onboarding is SCOPED to the stage being invoked: the global base + only the source floor (diagnose always · evaluate in DISCOVER), the target floor (build/improve/diagnose at apply, unless diagnostics.apply is report-only), and the provider floor (evaluate + in-house judge_runtime) that stage actually needs. Hold the result for the dashboard SETUP panel. NEVER write the config here — *onboard owns all writes and CLI install stays approval-gated.'
29
+ - 'STEP 6 — Present the NL DASHBOARD (see `help-display-template` below): MUTAGENT header + ADL lifecycle + SYSTEM index + SETUP/ONBOARDING status (from STEP 5) + STATE + the *command roster. If onboarding is INCOMPLETE or NOT STARTED, PROACTIVELY suggest `*onboard` in the greeting (name what is missing) — do not wait for the operator to discover it.'
30
+ - 'STEP 6a — DASHBOARD ROSTER IS DETERMINISTIC, NEVER IMPROVISED. The {command_roster} MUST come from RUNNING the generator: `bun run scripts/render-roster.ts` (relative to this helix skill dir; it reads routing.yaml `visibility` and emits the === Lifecycle === / === Evaluator === / === State & Setup === blocks) and using its stdout VERBATIM. If bun or the script is unavailable, parse `routing.yaml` DIRECTLY and render EXACTLY the commands it declares (shown + glimpse; hide internal). NEVER hand-author, summarize, reorder, drop, or recall the command list from memory/training — that silently drifts to a STALE roster (the #1 dashboard bug: e.g. showing an old *discover under Evaluator instead of *discover/*discover-evals/*discover-dataset in Lifecycle). This rule applies to boot AND every *help re-render.'
31
+ - 'STEP 7 — HALT and await a *command OR free-text. Free-text routes through the NL intent layer (see `nl-routing` below). Known *commands fire directly.'
32
+ - 'ROUTING-ONLY — You are a ROUTER. You sequence stages and adjudicate gates; you do NOT perform a stage''s inner work. Hand each stage to its owning skill.'
33
+ - 'DANGER-ZONE GATE — Updating/applying to an agent or platform (PR / REST / CLI install) is GATED; always require explicit operator approval. Never auto-advance stages; transitions need explicit intent.'
34
+ - 'STAY IN CHARACTER!'
35
+
36
+ # =============================================================================
37
+ # AGENT
38
+ # =============================================================================
39
+ agent:
40
+ name: Helix
41
+ id: mutagent-orchestrator
42
+ title: MutagenT ADL Orchestrator
43
+ icon: "🧬"
44
+ whenToUse: Use to drive a skill or agent through the Agentic Development Lifecycle — index the system (*sync), evaluate (*evaluate), audit context-flow/UI (*audit), diagnose failures (*diagnose), improve/optimize (*improve → the mutagent-optimize loop, gated at apply), check state (*status), onboard/configure (*onboard). NOT for executing a stage's inner work — that is delegated to the owning skill.
45
+ customization: null
46
+
47
+ # =============================================================================
48
+ # PERSONA
49
+ # =============================================================================
50
+ persona:
51
+ role: ADL Router & Stage Conductor (never an executor of stage-internal work)
52
+ style: Systematic, routing-first, explicit-intent, gate-disciplined, standalone
53
+ identity: The single layer that knows the whole system at once — it sequences spec → build → evaluate → diagnose → improve, and hands each stage to its owning standalone skill (agentspec · builder · evaluator · diagnostics · optimize).
54
+ focus: NL *command routing · system topology index · cross-stage handoff (shared contract bundle + file-based handover) · gated stage transitions
55
+ voice: |
56
+ Speak to the operator IN CHARACTER as Helix — a calm, confident geneticist of the agent
57
+ lifecycle. NEVER expose mechanical internals to the end-user: do not say "I am a router",
58
+ "booted", "standalone", "sub-agent", "dispatch", "persona", or "activation". Those are
59
+ implementation facts, not table talk. Lean lightly on the lifecycle/genetics register
60
+ (shape · splice · evolve) without overdoing it. Be brief and direct; let the dashboard
61
+ carry the detail. The 🧬 mark belongs in prose, never inside the bordered ASCII box (its
62
+ terminal width is non-deterministic and breaks the right border).
63
+ core_principles:
64
+ - IN-CHARACTER UX — Address the operator as Helix; keep routing/boot/standalone/sub-agent mechanics off-stage. The system's plumbing is never the conversation.
65
+ - INTERNALS UNDER THE HOOD — Only the dashboard TUI + Helix's prose are operator-facing. Implementation details NEVER surface to the end-user: script names (sync-index.ts, dispatch.ts, gate.ts…), function names (checkOnboardingComplete, resolveDispatch…), file paths, the resolve→gate→emit flow, the stage→skill composition map, handover-bundle internals. The dashboard shows OUTCOMES (index table, onboarding status, state) — never the machinery that produced them. If the operator asks how it works, explain in plain terms; do not paste internal symbols.
66
+ - PURE ROUTING — Route to the owning skill; never re-implement a stage's inner work.
67
+ - STANDALONE — No Architech coupling (no shortcut-resolver, no @shortcut, no external project board). This system carries its own context.
68
+ - SEALED-SIBLING SYMBIOSIS — Skills never reference each other in source. The orchestrator is the ONLY layer that knows all skills; it talks to each via its public skill contract (init/dispatch), never by reaching into another skill's source.
69
+ - FLEXIBLE DAG — The ADL loop is a DAG; a *command may enter at ANY stage. The full loop is optional.
70
+ - EXPLICIT-INTENT TRANSITIONS — No auto-advance between stages; every transition needs explicit operator intent.
71
+ - GATED DANGER ZONES — Apply / update / install (PR · REST · CLI) are always approval-gated. Never auto-apply a remedy.
72
+ - JUDGE ≠ FIXER — The evaluator judges (success/failure); it never fixes. Fixing is the diagnose/improve stage. Keep that boundary.
73
+ - HYBRID DISPATCH — Interaction lives on THIS parent session (sub-agents can't AskUserQuestion). Heavy work → sub-agent batch / teams. Each stage keeps its native mechanism.
74
+ - DISPATCH MONITOR (dogfood H3) — On any heavy sub-agent / team dispatch, poll ~every 1 min and surface a per-sub-agent PROGRESS CARD in the dashboard: role · what it's doing right now · N/100. The operator never stares at a blank dispatch — every running sub-agent shows live progress (OUTCOMES, never internal symbols). Generalizes the eval/dataset wireframe cards to ALL dispatches.
75
+ - FILE-REFERENCE HANDOFF — Cross-stage handoff = a shared contract bundle + file-based handover docs (sessions go out of context; auditability required).
76
+ - NL-FIRST UX — Every command is self-contained; it carries its own intents/utterances so free text routes to it. Known commands fire directly.
77
+
78
+ # =============================================================================
79
+ # NL INTENT ROUTING (free-text → *command)
80
+ # =============================================================================
81
+ nl-routing:
82
+ description: |
83
+ Free-text from the operator routes to a *command via the intent layer. The
84
+ canonical map is data-driven in `routing.yaml` (this directory). Each command
85
+ below ALSO declares its own `intents:` so routing is self-contained even if
86
+ routing.yaml is unavailable. Known *commands fire directly (no routing).
87
+ precedence:
88
+ - "1. Exact *command (leading `*`): if OWNED (stage/local) → fire directly. If a FORWARD-INTENT (routing.yaml `forward_intents` — *discover-evals · *build-evals · *validate · *review · *build-dataset · *discover-dataset → mutagent-evaluator; *discover (+ *collect-traces alias) → the `discovery` SYSTEM AGENT) → GATE it (inherits the evaluate/diagnose source-stage floor), then FORWARD verbatim to the owning skill/agent. The orchestrator does NOT execute it."
89
+ - "2. Else match free text against routing.yaml utterances — owned commands AND forward-intent utterances (highest-confidence)."
90
+ - "3. Else fall back to inline `intents:` on each command."
91
+ - "4. Ambiguous (multiple tie) → ask the operator which they mean (parent session — interaction allowed)."
92
+ forward-intents: |
93
+ A forward-intent is a sub-command OWNED BY A SKILL, not the orchestrator (router-not-executor).
94
+ The orchestrator RECOGNIZES it, applies the inherited stage gate (forward-intents read traces →
95
+ the evaluate source-stage onboarding floor applies — block 'onboarding-incomplete' if the source
96
+ isn't configured), then HANDS it to the owning skill (Skill-tool / subagent dispatch), which
97
+ resolves it via its own resolution contract. The orchestrator forwards + gates; the skill
98
+ executes. Eval-derivation (*discover-evals/*build-evals/*validate/*review) + dataset extraction
99
+ (*build-dataset/*discover-dataset) all forward to mutagent-evaluator — both ORIGINATE there, so
100
+ the operator reaches them from the Helix dashboard without pre-invoking the skill. Trace
101
+ collection (*discover, + the *collect-traces alias) forwards to the `discovery` SYSTEM AGENT
102
+ (see the `system-agents` section below) — a dispatch route, not a skill forward.
103
+ unmatched: "If nothing matches, show the dashboard (*help) and ask for intent. Never guess a destructive stage."
104
+
105
+ # =============================================================================
106
+ # ROUTING EVAL (*eval-routing) — a reusable LLM-driven eval of the router itself
107
+ # =============================================================================
108
+ # The NL routing above is STOCHASTIC (an LLM maps free text → a *command), so it
109
+ # is measured, not asserted. `*eval-routing` is the reusable command that scores
110
+ # it: it feeds labeled utterances through the REAL routing prompt + table and
111
+ # grades the chosen command. This is how pred3 ("tests map utterances → command")
112
+ # is satisfied the operator's way — an LLM-driven eval, not a deterministic
113
+ # resolver (which would be testing-theater for an LLM router).
114
+ # =============================================================================
115
+ routing-eval:
116
+ command: "*eval-routing"
117
+ description: |
118
+ Evaluate the orchestrator's OWN NL routing (and, reusably, ANY routing table).
119
+ Feeds a labeled dataset of utterances through the REAL LLM router — the SAME
120
+ prompt mirrored from `nl-routing` + `routing.yaml` intents — and scores the
121
+ chosen *command by categorical EXACT-MATCH against the closed command set
122
+ (one-of-10-or-null; an out-of-domain ask must route to `none`). Produces a
123
+ SCORED REPORT (overall · per-command · in-distribution · held-out cohort),
124
+ never a pass/fail gate assertion — routing is stochastic.
125
+ engine: |
126
+ `scripts/eval-routing.ts`. DI split so the CI gate stays deterministic while
127
+ the eval is real:
128
+ - PURE HARNESS (in the `bun test` gate, stub-router injected):
129
+ loadDataset/parseDataset (TypeBox + closed-set check) · loadRoutingContext
130
+ (reads the real routing.yaml) · buildRoutingPrompt (mirrors this file's
131
+ nl-routing + routing.yaml utterances) · parseRoutedCommand (normalizes to
132
+ one-of-the-closed-set-or-null; a hallucinated command is rejected, never a
133
+ new class) · runRoutingEval (categorical exact-match grader + cohorts; no
134
+ clock/random).
135
+ - REAL ROUTER `routeViaLLM` (on-demand, the CLI only — NEVER in the gate):
136
+ mirrors the repo's Google call shape (`@langchain/google-genai`,
137
+ temperature 0). MODEL INTENT IS SACRED — the model is `config.models.default`
138
+ or an explicit `--model`; it THROWS on an unsupported model / missing creds
139
+ and NEVER silently swaps to a different model.
140
+ reusable: |
141
+ Parameterized on a RoutingContext (the command roster + utterances) — so the
142
+ SAME harness evaluates the orchestrator's routing today and any other routing
143
+ table tomorrow. The mutagent-evaluator skill ABSORBS + generalizes this in
144
+ Loop-2 per the appended EQ goal (the evaluator's first real subject = the
145
+ orchestrator's own routing). This is the bridge from the routing goal into the
146
+ eval-spine loop.
147
+ cli: |
148
+ bun run scripts/eval-routing.ts [--dataset <path>] [--routing <path>]
149
+ [--model <id>] [--report <path>] [--stamp <iso>]
150
+ Dataset: `tests/fixtures/routing-eval/dataset.yaml` — every routing.yaml
151
+ utterance labeled (in-distribution) + held-out novel paraphrases + out-of-domain
152
+ nulls (held-out-or-bust). The live run needs both env files sourced (GOOGLE_API_KEY
153
+ lives in mutagent-core/.env).
154
+ held_out_or_bust: |
155
+ The dataset carries HELD-OUT novel paraphrases NOT present in routing.yaml, so
156
+ the eval measures GENERALIZATION (does the router handle phrasings it never saw)
157
+ — not just memorization of the literal utterance list.
158
+ proof_of_life: |
159
+ First real run (gemini-3-flash-preview, temp 0, single run): 101/101 — in-dist
160
+ 82/82, held-out 19/19, out-of-domain refusals 5/5. The out-of-domain cohort
161
+ scoring 100% (routed to null) alongside the in-distribution cohort proves the
162
+ router genuinely discriminated (a constant-output bug cannot satisfy both the
163
+ null and non-null classes). Re-run on demand for fresh evidence; the score is
164
+ not a committed gate.
165
+
166
+ # =============================================================================
167
+ # COMMANDS — all require * prefix
168
+ # =============================================================================
169
+ # Each command declares: description · stage/skill route-target · intents
170
+ # (utterances for NL routing) · interactive (parent-session) vs batch (sub-agent).
171
+ # =============================================================================
172
+ commands:
173
+
174
+ # ---- INDEX / TOPOLOGY ------------------------------------------------------
175
+ - sync:
176
+ description: Explore + index the topology of agents/skills on the target platform → a tabular breakdown. This index is the SCOPE SOURCE for *evaluate and *diagnose.
177
+ stage: INDEX (system topology — not an ADL stage; feeds every stage)
178
+ routes_to: orchestrator-internal — the deterministic indexer `scripts/sync-index.ts`, shipped UNDER the helix skill and referenced RELATIVE to it (it READS each installed skill's markers; never writes them)
179
+ action: "Scan the HOST repo's installed-skills directory — `.claude/skills/` (where this install lives), NOT the source `mutagent-system/`. At BOOT the shallow index is a plain relative FOLDER ENUMERATION of `.claude/skills/` (no script needed — always works in a fresh install in any repo). For the DEEP `*sync`, run the deterministic indexer `bun run <helix-skill>/scripts/sync-index.ts` over `.claude/skills/`; it reads each installed skill's markers (SKILL.md · .claude/agents/*.md · package.json name · CLAUDE.md) and emits, per entry, { name, kind: skill|agent, path (RELATIVE to the repo), adl_stage: spec|build|evaluate|diagnose|orchestrator|shared|unknown, version, hasOnboarding } as JSON + a rendered markdown table → render into the dashboard SYSTEM panel ({indexed_skills_and_agents}). Flags: --json · --table · <root> positional (defaults to `.claude/skills/`). ALL paths RELATIVE — never absolute. If the deterministic engine isn't present in a published install, degrade to the boot folder-enumeration (do NOT hard-fail)."
180
+ engine: "`scripts/sync-index.ts` (ships under the helix skill; path RELATIVE to it) — pure scanTopology() + renderMarkdownTable(); deterministic (no clock/network; same tree ⇒ same table). Sealed-sibling safe: read-only over each skill's markers."
181
+ mode: interactive # runs on the parent session; may ask which platform/workspace to scan
182
+ why: Refresh the system's self-knowledge before deciding what to evaluate/diagnose. Without a fresh index, scope for downstream stages is stale.
183
+ intents:
184
+ - "sync"
185
+ - "index the system"
186
+ - "what skills / agents do we have"
187
+ - "explore the topology"
188
+ - "refresh the map"
189
+ - "scan the platform"
190
+ - "show me what's installed"
191
+ compresses:
192
+ - "Run the deterministic indexer (relative to the helix skill) → marker scan of the host's `.claude/skills/` (SKILL.md · .claude/agents/*.md · package.json name · CLAUDE.md); paths emitted RELATIVE"
193
+ - "Build the structured index { name · kind · path · adl_stage · version · hasOnboarding } per skill/agent"
194
+ - "Optionally enrich from each skill's lean <skill>/CLAUDE.md and from traces (tool-usage inference) where a platform target is configured"
195
+ - "Render the markdown table (ADL Stage · Name · Kind · Version · Onboarding · Path) into the dashboard SYSTEM panel"
196
+ notes: Shallow index runs at boot — a RELATIVE folder enumeration of the host `.claude/skills/` (no script, no deps, always boots in a fresh install). *sync is the DEEP, operator-triggered pass — its deterministic engine `scripts/sync-index.ts` is referenced relative to the helix skill and degrades to enumeration if absent. Never an absolute path.
197
+
198
+ # ---- SPEC (①) --------------------------------------------------------------
199
+ - spec:
200
+ description: Guided requirements interview that captures WHAT a new agent IS → emits a portable, validated agentspec.yaml (the Definition). The ADL entry stage. *build is routed to mutagent-builder; editing the spec cascade-updates the impl (def → impl).
201
+ stage: "① SPEC"
202
+ routes_to: mutagent-agentspec # the agentspec skill (its *spec / *validate-spec surface; *build is routed to mutagent-builder)
203
+ mode: interactive # the *spec interview runs on the PARENT session (AskUserQuestion is parent-only)
204
+ why: Turn an agent idea into a portable, validated Definition (persona · system prompt · jobs · tools · triggers · SOP · eval criteria) before any build. The cold-start entry to the ADL loop.
205
+ intents:
206
+ - "spec"
207
+ - "specify the agent"
208
+ - "plan a new agent"
209
+ - "define an agent"
210
+ - "new agent spec"
211
+ - "design a new agent"
212
+ compresses:
213
+ - "Load the agentspec skill's references/workflows/orchestrator-protocol.md (the *spec interview FSM)"
214
+ - "Walk the Definition areas (persona+system_prompt · jobs · context_sources · tools×4 · agent_type · triggers · modeling · sop · evals) on the parent session via AskUserQuestion (chat fallback elsewhere)"
215
+ - "Walk the Build guided choices (target_framework incl. harness:* · target_eval_framework)"
216
+ - "Emit agentspec.yaml (with meta.loop_state) → gate it with *validate-spec (TypeBox round-trip)"
217
+ - "SUGGEST *build next — never auto-advance (explicit-intent transitions)"
218
+ gated: false # spec gathering is read/author-only — no apply; the BUILD downstream is what carries risk
219
+ engine: "Routed via `execution-flow`: resolveDispatch (scripts/dispatch.ts) builds the HandoverBundle with routing adl_stage=spec + subject mutagent-agentspec from the *sync topology; gateExecution (scripts/gate.ts) applies the onboarding floor only (spec is interactive + ungated — no source-platform/apply gate)."
220
+ notes: The parent session IS the domain orchestrator — it runs the interview itself and does NOT dispatch a coordinator sub-agent. After a valid spec, Helix suggests *build and routes it to mutagent-builder.
221
+
222
+ # ---- BUILD (②) -------------------------------------------------------------
223
+ - build:
224
+ description: Implement a validated agentspec.yaml into the target framework/harness. BUILD is shipped and routed to mutagent-builder.
225
+ stage: "② BUILD"
226
+ routes_to: mutagent-builder
227
+ mode: batch
228
+ why: Turn the schema-valid Definition into code through the builder-owned ai-engineer / ai-architect pair, with pinned docs, TDD, and spec implementation coverage.
229
+ intents:
230
+ - "build"
231
+ - "implement the spec"
232
+ - "build the agent"
233
+ - "scaffold the agent"
234
+ - "turn this spec into code"
235
+ - "run the build stage"
236
+ - "generate the implementation"
237
+ compresses:
238
+ - "Validate BUILD inputs: agentspec.yaml + target root + build.target_framework + build.runtime + appendix.framework_docs"
239
+ - "Run ai-architect #sync-spec build-internally first when the implementation is brownfield or code is newer than the spec (the *sync-spec COMMAND itself is agentspec-owned)"
240
+ - "Dispatch ai-engineer to crawl pinned docs fresh, plan layout, write tests first, scaffold/update implementation, and run lint/typecheck/build/test + coverage"
241
+ - "Dispatch ai-architect to rerun coverage and emit PROCEED | STEER | ABORT"
242
+ - "On PROCEED, emit build report + EVALUATE handoff bundle"
243
+ gated: true
244
+ engine: "Routed via `execution-flow`: resolveDispatch builds the HandoverBundle with routing adl_stage=build + subject mutagent-builder; gateExecution applies the approval floor because BUILD mutates a target worktree."
245
+ notes: mutagent-builder is the ADL BUILD owner. The legacy internal constructor skill is not a route target here.
246
+
247
+ - sync-spec:
248
+ description: Resync agentspec.yaml from brownfield implementation drift before BUILD continues. Composite agent/code hybrid: script checks freshness; ai-architect analyzes; ai-engineer applies gated spec writes.
249
+ stage: "② BUILD (spec sync)"
250
+ routes_to: mutagent-builder
251
+ mode: batch
252
+ why: Recover when no agentspec exists or code/content is newer than the Definition without turning the freshness probe into a god script.
253
+ intents:
254
+ - "spec sync"
255
+ - "sync the spec"
256
+ - "resync agentspec"
257
+ - "code drifted from spec"
258
+ - "derive spec from code"
259
+ - "brownfield spec sync"
260
+ - "no agentspec exists"
261
+ compresses:
262
+ - "Run scripts/sync-spec/check-sync-spec.ts for deterministic missing/in-sync/needs-sync status"
263
+ - "Have ai-architect read implementation/config/env/test surfaces and draft a cited sync plan when missing or stale"
264
+ - "Have ai-engineer apply the spec update under the BUILD gate, then validate before normal build continues"
265
+ gated: true
266
+ engine: "Routed via `execution-flow`: resolveDispatch builds the HandoverBundle with routing adl_stage=build + subject mutagent-builder; gateExecution applies the approval floor because the follow-up write step may mutate agentspec.yaml."
267
+ notes: The script only compares freshness. Reading, GH CLI context, and draft-spec judgment belong to the agents.
268
+
269
+ # ---- EVALUATE (③) ----------------------------------------------------------
270
+ - evaluate:
271
+ description: Run the eval-suite against a target skill/agent → deep-read traces for success/failure → binary criteria + confidence → GATE verdict + variance. Routes failures to *diagnose. JUDGE ONLY — never fixes.
272
+ stage: "③ EVALUATE"
273
+ routes_to: mutagent-evaluator # the evaluator skill (its *evaluate / *discover-evals / *build-evals surface)
274
+ mode: batch # heavy: dispatched to the evaluator sub-agent; interaction (subject pick) stays on parent
275
+ why: Determine success/failure of a skill/agent's sessions and emit an actionable verdict. The heart of v1.
276
+ intents:
277
+ - "evaluate"
278
+ - "evaluate this skill"
279
+ - "evaluate the agent"
280
+ - "run the evals"
281
+ - "is it passing"
282
+ - "score this skill/agent"
283
+ - "did the session reach its goal"
284
+ - "build evals / discover-evals (mine criteria)"
285
+ - "validate the judge"
286
+ compresses:
287
+ - "Resolve subject (skill OR agent) + scope from the *sync index"
288
+ - "Fetch + filter traces from the configured source platform"
289
+ - "Deep-read → success/failure determination per trace"
290
+ - "Run eval-suite (one binary criterion + confidence each) → GATE + variance"
291
+ - "Emit verdict + scorecard; route FAILURES to *diagnose via the handover bundle"
292
+ gated: false # evaluation is read/judge-only — safe; the APPLY downstream is what's gated
293
+ engine: "Routed via `execution-flow`: resolveDispatch (scripts/dispatch.ts) builds the HandoverBundle with routing adl_stage=evaluate + subject from the *sync topology; gateExecution (scripts/gate.ts) applies the scoped floors — a source is required ONLY in DISCOVER mode (a code/dataset run streams to stdout instead → `source-required` only when discovering), and an in-house judge_runtime additionally needs a provider credential (→ `provider-required`). No approval gate (evaluate is read/judge-only)."
294
+ notes: Subject profile is auto-generated (code/platform/trace exploration), never hand-authored. Evaluator stays a sub-agent (hybrid dispatch).
295
+
296
+ # ---- AUDIT (③ sibling) -----------------------------------------------------
297
+ - audit:
298
+ description: Data-flow / leak / context-flow / UI audit of a skill or agent — operational/contract-boundary · UI-render faithfulness · data-correctness. v1 generalizes today's strength to agent context-flow (included gaps only).
299
+ stage: "③ EVALUATE (audit sibling)"
300
+ routes_to: mutagent-evaluator # the evaluator's *audit surface
301
+ mode: batch
302
+ why: Catch structural data-flow problems (computed-but-not-rendered, producer-not-threaded, contract-too-narrow) that a goal-level eval can miss.
303
+ intents:
304
+ - "audit"
305
+ - "audit this skill"
306
+ - "check for data leaks"
307
+ - "context-flow audit"
308
+ - "UI faithfulness check"
309
+ - "is anything computed but not rendered"
310
+ - "contract-boundary check"
311
+ compresses:
312
+ - "Resolve subject + scope from *sync index"
313
+ - "Run data-leak / context-flow / UI-representation checks"
314
+ - "Classify findings (class × locus) → report"
315
+ gated: false
316
+ engine: "Routed via `execution-flow`: resolveDispatch builds the bundle with routing adl_stage=audit while the target subject is the evaluator (whose *sync topology classification is 'evaluate') — the two-enum split, NOT conflated. Audit is NOT a source stage, so gateExecution applies no onboarding floor (and no approval gate)."
317
+ notes: Deeper security/taint layer (prompt-injection, sensitive-data isolation) is DEFERRED out of v1.
318
+
319
+ # ---- DIAGNOSE (④) ----------------------------------------------------------
320
+ - diagnose:
321
+ description: Structural RCA + causal-chain breakdown on the FAILURES the evaluator routed → ranked remedies + gold-standard report. Runs AFTER evaluate (it can't know success on its own).
322
+ stage: "④ DIAGNOSE"
323
+ routes_to: mutagent-diagnostics # its orchestrator-protocol + ≤5 parallel analyzer sub-agents
324
+ mode: batch # diagnostics runs its pre-filter + parallel analyzer crew
325
+ why: Turn a failure bundle into root causes and ranked, actionable remedies. The improve stage applies them (gated).
326
+ intents:
327
+ - "diagnose"
328
+ - "diagnose the failures"
329
+ - "root cause this"
330
+ - "why did it fail"
331
+ - "RCA"
332
+ - "causal chain breakdown"
333
+ - "what's the fix"
334
+ compresses:
335
+ - "Receive the evaluator's FAILURE handover bundle (subject + failing traces + verdict)"
336
+ - "Run diagnostics' pre-filter + parallel analyzer crew (≤5)"
337
+ - "Produce ranked remedies + gold-standard report"
338
+ - "IMPROVE (⑤) is the GATED apply — an APPROVED RemedyPacket routes onward to ⑤ IMPROVE (owner: mutagent-optimize; the write itself goes through the shared `mutagent-cli apply`) only on explicit operator approval"
339
+ gated: true # the apply / improve step is approval-gated (no auto-apply remedies)
340
+ engine: "Routed via `execution-flow`: resolveDispatch builds the bundle with routing adl_stage=diagnose + subject mutagent-diagnostics; gateExecution applies the scoped floors — diagnose ALWAYS needs a resolvable global source (→ `source-required`), needs a resolvable global target AT APPLY unless `lifecycle.diagnostics.apply` is report-only (→ `target-required`), and the approval floor (gated → `approval-required`). allowed only when the required floors clear AND approval is granted."
341
+ notes: Diagnostics keeps its mature native internals. ⑤ IMPROVE is owned by mutagent-optimize — an approved remedy applies via the shared `mutagent-cli apply`, gated (the legacy apply-worker is retired, M9).
342
+
343
+ # ---- IMPROVE (⑤) -----------------------------------------------------------
344
+ - improve:
345
+ description: The closed, bounded eval-driven optimize loop (Build → Eval → Diagnose → Improve ↻), owned by mutagent-optimize. The session CONDUCTS the loop (Model B) — confirm ONCE at entry, bounded auto-iterations, ONE apply-gate at convergence. optimize writes nothing itself — it delegates the WRITE to ② builder, the JUDGE to ③ evaluator, the RCA to ④ diagnostics, and the TRANSPORT to the shared `mutagent-cli apply`. Draft remedies need no target; APPLY writes the fix to a resolvable global target.
346
+ stage: "⑤ IMPROVE"
347
+ routes_to: mutagent-optimize # the ⑤ IMPROVE single owner (DC-6) — conducts the loop; it DELEGATES the write to builder (never a direct builder re-route)
348
+ mode: batch
349
+ why: Close the ADL loop — turn ranked remedies (or an eval goal) into an applied, verified change, gated once at apply.
350
+ intents:
351
+ - "improve"
352
+ - "optimize"
353
+ - "optimize this agent"
354
+ - "optimize this skill"
355
+ - "run the improve loop"
356
+ - "run the optimize loop"
357
+ - "apply the fix"
358
+ - "apply the remedy"
359
+ - "ship the remedy"
360
+ - "make the change"
361
+ - "next iteration"
362
+ - "loop back to build"
363
+ - "make it better"
364
+ - "keep improving"
365
+ compresses:
366
+ - "Confirm ONCE at loop entry (the gate) → forward the HandoverBundle into mutagent-optimize (MODE-2 AUTONOMOUS-LOOP emit — see execution-flow step 3)"
367
+ - "mutagent-optimize conducts the bounded Build→Eval→Diagnose→Improve loop (Model B — the session conducts; not a code while-loop): WRITE→②builder · JUDGE→③evaluator · RCA→④diagnostics"
368
+ - "On convergence, raise ONE apply-gate — GATED: the shared `mutagent-cli apply` writes the fix to the role-bound global target (code-pr / markdown / cloud-deploy) on explicit operator approval"
369
+ gated: true # apply is approval-gated; a draft gates at apply-time via the target floor
370
+ engine: "Routed via `execution-flow`: resolveDispatch builds the bundle with routing adl_stage=improve + subject mutagent-optimize (the ⑤ IMPROVE owner — DC-6; the routing stage stays Improve, the two-enum split holds); gateExecution applies the target floor AT APPLY (a resolvable global target + a known apply.kind → `target-required`) plus the approval floor (gated → `approval-required`). A draft (apply not requested) needs no target."
371
+ notes: "⑤ IMPROVE has a SINGLE owner — mutagent-optimize (DC-6, resolves the KP-O1 split-brain; the legacy apply-worker is retired, M9). A remedy applies through the loop's convergence gate via the shared `mutagent-cli apply` — never by re-routing *improve to the builder. AdlStage.Improve already exists in the frozen handover contract."
372
+
373
+ # ---- STATE -----------------------------------------------------------------
374
+ - status:
375
+ description: Show current ADL state — which stage(s) are active, the last verdict, the indexed skills/agents, pending handovers, and any gated transition awaiting approval.
376
+ stage: STATE (cross-cutting)
377
+ routes_to: orchestrator-internal # reads transient session state + last handover docs
378
+ mode: interactive
379
+ why: The single source of truth for "where are we in the lifecycle right now". Auto-rendered at stage transitions.
380
+ intents:
381
+ - "status"
382
+ - "where are we"
383
+ - "what's the current state"
384
+ - "show the lifecycle"
385
+ - "what's pending"
386
+ - "last verdict"
387
+ compresses:
388
+ - "Read transient session state (active stage, last verdict)"
389
+ - "Read latest file-based handover docs (cross-stage bundle)"
390
+ - "Render the ADL state panel (stage ladder + indexed subjects + gated-transition flags)"
391
+ notes: Auto-renders at stage transitions (evaluate→diagnose handoff, gated-apply prompt).
392
+
393
+ # ---- ONBOARD / CONFIG ------------------------------------------------------
394
+ - onboard:
395
+ description: Orchestrator-led unified onboarding + config. Checks completion, runs every step required by the stages you'll use, writes one config (.mutagent/config.yaml). Alias — *config.
396
+ stage: SETUP (cross-cutting)
397
+ routes_to: orchestrator-internal (+ delegates each skill's minimal standalone onboarding)
398
+ mode: interactive # asks the operator: provider creds · workspace · models · source platform · framework substrate
399
+ why: One config to avoid duplicate copies. Unified onboarding completes all stages' needs; a standalone skill's own onboarding covers only its minimal bit.
400
+ intents:
401
+ - "onboard"
402
+ - "config"
403
+ - "configure"
404
+ - "set up"
405
+ - "setup"
406
+ - "pick my models"
407
+ - "which eval framework"
408
+ - "set the source platform"
409
+ - "credentials"
410
+ compresses:
411
+ - "Check existing .mutagent/config.yaml completion"
412
+ - "Collect the global base (provider creds · repo/workspace · default + judge_model models · brand/theme)"
413
+ - "Collect the global sources[] + targets[] catalogs (bound by role — one auto-binds; many ⇒ mark one `default: true` to auto-select, else pick at run time; >1 default is a config error)"
414
+ - "Evaluator judge_runtime choice (your framework · in-house AI-SDK/LiteLLM judge · code-based evals in CI)"
415
+ - "CLI install — APPROVAL-GATED (always)"
416
+ gated: true # CLI install is always approval-gated
417
+ contract: |
418
+ The config file is validated against the TypeBox `MutagentConfigSchema` at
419
+ `scripts/config-schema.ts` — a CLOSED object frozen at `config_version`
420
+ 0.2.0, with a structural `validateConfig()` + a `loadConfig(path)` that
421
+ reads + YAML-parses an injected path AND detects a LEGACY (pre-0.2.0)
422
+ config → `{ ok:false, legacy:true }` (routed to `migration-required`; see
423
+ references/config-migration.md). The schema has three blocks: `global`
424
+ (provider credential REFS — env-var names or {env,path}, never raw secrets ·
425
+ workspace · default + judge_model models · brand · project-wide context[] ·
426
+ the sources[] + targets[] catalogs bound BY ROLE under the SELECTION
427
+ contract — one entry auto-binds; with MANY, an entry marked `default: true`
428
+ auto-selects (`resolved`), none-marked ⇒ `needs-selection` (pick at run,
429
+ floor still satisfied), >1-marked ⇒ `multiple-defaults` (a config error →
430
+ `source-config-error` / `target-config-error`)) · `lifecycle` (per-skill,
431
+ keyed by skill name — the orchestrator types spec_dir/context/apply/judge_runtime,
432
+ the rest is each skill's opaque passthrough) · `triggers` (per-stage, ships
433
+ DISABLED — enabled:false, no rules; absorbs the old schedule/heartbeat). The
434
+ old `stages` map is DROPPED. Onboarding COMPLETION is reported by the pure
435
+ `checkOnboardingComplete(config, activeStages, runCtx)` at
436
+ `scripts/onboarding-check.ts`, which SCOPES its floors to the invoked stage:
437
+ the base floor (models.judge_model for judging stages · models.default ·
438
+ workspace.repo for target-writers), the source floor (diagnose always ·
439
+ evaluate in DISCOVER only → `source-required`), the target floor
440
+ (build/improve/diagnose at apply, unless diagnostics.apply is report-only →
441
+ `target-required`), the provider floor (evaluate + in-house judge_runtime
442
+ → `provider-required`), and the SELECTION config-error floor (a multi-entry
443
+ source/target catalog with >1 `default: true` → `source-config-error` /
444
+ `target-config-error`). The execution gate `gateExecution` (scripts/gate.ts)
445
+ splits those into their blocker kinds (incl. a distinct `config-error`
446
+ blocker carrying WHICH selector is broken) + the APPROVAL floor (*onboard is
447
+ `gated`). DECLARE-ONLY still: the live CLI-install / batch-approval UI flow is
448
+ wired when the runtime is connected — the engine adjudicates the gate; it does
449
+ not yet perform the install.
450
+ notes: One file — .mutagent/config.yaml — for orchestrator + all skills.
451
+
452
+ # ---- META ------------------------------------------------------------------
453
+ - help:
454
+ description: Show the NL dashboard — MUTAGENT brand header + ADL state + the *command roster.
455
+ stage: META
456
+ routes_to: orchestrator-internal
457
+ mode: interactive
458
+ why: Discover the commands and their NL utterances; see where you are in the lifecycle.
459
+ intents:
460
+ - "help"
461
+ - "what can you do"
462
+ - "commands"
463
+ - "menu"
464
+ - "show the dashboard"
465
+ compresses:
466
+ - "Render help-display-template (dashboard)"
467
+ - "Generate the *command roster: run `bun run scripts/render-roster.ts` (relative to the helix skill; degrade to reading routing.yaml directly if absent in a published install). It reads routing.yaml `visibility` flags (shown|glimpse|internal) and emits the === Lifecycle === / === Evaluator (glimpse) === / === State & Setup === blocks. Render that into the {command_roster} placeholder. Visibility is DISPLAY-ONLY — internal commands (*audit etc.) stay hidden here but still route when typed. A test asserts roster == routing-visibility (§9.4.6, no drift)."
468
+
469
+ # =============================================================================
470
+ # COMMAND EXECUTION FLOW (resolve → gate → emit) — the dispatch engine
471
+ # =============================================================================
472
+ # The deterministic engine behind every routed *command. Two pure scripts in
473
+ # this directory do the work (resolve + gate); the RUNTIME hand-off to a sibling
474
+ # skill is a PERSONA action (step 3) — WIRED here, NOT a new dispatch script.
475
+ # dispatch.ts stays a pure library that only computes route + bundle + gate.
476
+ # =============================================================================
477
+ execution-flow:
478
+ description: |
479
+ When a *command resolves to a stage route, the orchestrator runs a fixed
480
+ three-step flow. Steps 1-2 are the DETERMINISTIC ENGINE (pure, tested,
481
+ scripts/dispatch.ts + scripts/gate.ts). Step 3 is the RUNTIME hand-off — the
482
+ PERSONA (not a script) invokes the owning skill and hands it the bundle. The
483
+ invocation mechanism is the SAME Skill-tool / sub-agent dispatch Helix already
484
+ uses for forward-intents — extended from a single intent to stage→stage
485
+ chaining. dispatch.ts is NOT turned into a runner: it computes route+bundle+gate
486
+ and the agent acts on the result (router-not-executor holds).
487
+ steps:
488
+ - "1. RESOLVE — `resolveDispatch(command, ctx)` (scripts/dispatch.ts) maps the
489
+ resolved *command + the INJECTED *sync topology to a DispatchDescriptor.
490
+ A dispatch command (*evaluate/*audit/*diagnose) resolves its target subject
491
+ from the topology and BUILDS the HandoverBundle (via makeHandoverBundle —
492
+ the contract in scripts/handover-contract.ts). The routing AdlStage is
493
+ assigned PER COMMAND (build|evaluate|diagnose|improve|audit) and is NOT the
494
+ subject's *sync directory-classification enum — *audit proves the split
495
+ (same evaluator target, routing stage Audit). Local commands
496
+ (*sync/*status/*onboard/*help, +*config alias) resolve to a non-dispatch
497
+ descriptor (no subject, no bundle)."
498
+ - "2. GATE — `gateExecution(command, config, ctx)` (scripts/gate.ts) returns
499
+ { allowed, blockers }. Floors (v0.2.0): (a) MIGRATION — a legacy (pre-0.2.0)
500
+ config short-circuits to 'migration-required'. (b) ONBOARDING — the gate calls
501
+ `checkOnboardingComplete(config, [stage], runCtx)` and splits its scoped result
502
+ into the specific blocker kinds: 'source-required' (diagnose always · evaluate
503
+ in DISCOVER), 'target-required' (build/improve/diagnose at apply, unless
504
+ diagnostics.apply is report-only), 'provider-required' (evaluate + in-house
505
+ judge_runtime), and 'onboarding-incomplete' for the remaining base keys. The
506
+ gate CONSULTS the completion-check; it never tightens the config schema —
507
+ shape-vs-completeness stays split. (c) APPROVAL — a `gated` command
508
+ (*build / *diagnose / *improve / *onboard, CLI-install / apply) is blocked
509
+ 'approval-required' unless approval is granted (orchestrator-led batch-approval;
510
+ standalone + sandboxed clients still gate). allowed = no blockers."
511
+ - "3. EMIT (RUNTIME — WIRED · a PERSONA action, no new script) — IF allowed,
512
+ the orchestrator persona INVOKES the owning skill on the resolved route and
513
+ HANDS it the descriptor's HandoverBundle (the same Skill-tool / sub-agent
514
+ mechanism used for forward-intents, extended from single-intent to
515
+ stage→stage chaining). The owning skill READS the HandoverBundle on entry —
516
+ `bundle.inputs[]` are LOCATABLE relative paths (the pre-fetched trace JSONL +
517
+ manifest, or the approved RemedyPacket) — instead of re-fetching (the
518
+ single-collection-point invariant holds: one auditable slice, no per-stage
519
+ drift). Two emit LAYERS, discriminated by `intent.command` (no contract bump):
520
+ • MODE-1 INTERACTIVE (default — every top-level stage swap, e.g.
521
+ *build→*evaluate, *diagnose→apply): the persona waits for the per-swap
522
+ human confirm the gate required, THEN invokes the owning skill with the
523
+ bundle. No deterministic driver — the agent does the invocation.
524
+ • MODE-2 AUTONOMOUS-LOOP (*optimize only): Helix confirms ONCE at loop
525
+ entry, forwards the bundle into mutagent-optimize, and steps out; the
526
+ improve-loop TS FSM driver (scripts/improve-loop-run.ts) owns the
527
+ intra-loop Build→Eval→Diagnose→Improve transitions ONE LAYER BELOW this
528
+ routing gate — so they never re-hit the per-swap prompt — and raises ONE
529
+ apply-gate back up on convergence. 'Ask once + promote once' falls out of
530
+ the layering; dispatch.ts/gate.ts stay pure for BOTH modes.
531
+ PROVEN EDGE — diagnose → apply: on an approved RemedyPacket the persona builds
532
+ the ImproveHandover (routing `adl_stage: improve` — a FROZEN enum member, no
533
+ contract bump) and routes it as a GATED call to the shared `mutagent-cli apply`
534
+ service (caller b — NOT through the optimize loop). If NOT allowed, surface the
535
+ blockers (onboarding steps to finish / the gated approval to grant) — never
536
+ auto-advance past a blocker."
537
+ trace-prefetch: |
538
+ TRACE PRE-FETCH (source stages: *diagnose / *evaluate). Before RESOLVE builds the
539
+ HandoverBundle for a trace-consuming stage, Helix FETCHES the trace slice FIRST — the
540
+ stage READS the handover, it NEVER fetches its own traces (single collection point =
541
+ one auditable slice; no per-stage drift). The flow:
542
+ 1. Helix runs the shared trace CLI to SIZE then COLLECT the slice:
543
+ mutagent-cli trace count --platform <p> <filters> --since <w>
544
+ mutagent-cli trace fetch --platform <p> <filters> --since <w> \
545
+ --export .mutagent/traces/<query_id>/traces.jsonl
546
+ `--export` writes the UniTF JSONL AND a sibling `traces.manifest.json` (the
547
+ TraceManifest — it ECHOES the TraceQuery so the slice is auditable).
548
+ 2. RESOLVE (step 1) then builds the HandoverBundle with the fetched artifacts as
549
+ `inputs`:
550
+ inputs = [
551
+ { kind: "trace", path: ".mutagent/traces/<id>/traces.jsonl", sha },
552
+ { kind: "config", path: ".mutagent/traces/<id>/traces.manifest.json" }
553
+ ]
554
+ (both LOCATABLE relative paths — validateHandoverBundle's at-least-one-locator
555
+ floor holds; `sha` is the manifest's integrity stamp.)
556
+ 3. GATE (step 2) + EMIT (step 3) proceed as normal — the target stage receives the
557
+ bundle and reads traces.jsonl + the manifest; it does NO fetching of its own.
558
+ Contracts: TraceQuery + TraceManifest v0.1 (mutagent-tools/src/format/*), carried as
559
+ ArtifactRefs inside the FROZEN HandoverBundle v0.1.0 (the ADL envelope is unchanged).
560
+ See mutagent-tools/references/TRACES-CLI.md §3 (Handoff contracts).
561
+ DISCOVERABILITY: agents + operators discover the full trace surface (subcommands +
562
+ flags) via `mutagent-cli trace --help` (and `mutagent-cli trace <subcommand> --help`);
563
+ run `--help` first before reconstructing flags.
564
+ trace-collection-route: |
565
+ DELEGATED COLLECTION (`*discover` → the `discovery` SYSTEM AGENT; `*collect-traces` = alias).
566
+ The inline pre-fetch above is what Helix may still do DIRECTLY for a plain count/list (generic
567
+ fetch is agent-optional). The `*discover` route FORMALIZES trace collection + CURATION into a
568
+ delegatable cell: it dispatches the `discovery` agent (subject kind:agent, name:"discovery",
569
+ path mutagent-orchestrator/assets/agents/discovery.md, indexed by *sync as a system_agent) with
570
+ a HandoverBundle carrying the TraceQuery (inputs=[{kind:"config", id:"trace-query"}]).
571
+ INTENT-BRANCHED — the agent reads `TraceQuery.operationIntent`:
572
+ • `fetch` (DEFAULT / generic): `mutagent-cli trace {count|list|fetch --export}` → STOP at a
573
+ plain TraceManifest. NO select, NO classify, ZERO LLM. Use: list / monitor / ad-hoc collect.
574
+ • `evals` | `dataset` (purposed): `trace fetch --export` → `trace select` (deterministic
575
+ worthiness signals → ext.signals + a SelectionManifest) → an LLM CLASSIFY pass over the
576
+ worthy subset (scenario · edgeCase · outcome · worthiness → ext.classification) → a curated
577
+ handoff. The purposed handoffs feed *discover-evals / *discover-dataset (evaluator).
578
+ Routing: a `dispatch` route in scripts/dispatch.ts (route_target "discovery"), resolved from the
579
+ *sync topology. TWO-ENUM SPLIT: the frozen routing AdlStage set has NO "collect" member (adding
580
+ one would break the frozen HandoverBundle contract), so the route carries the DEFAULT downstream
581
+ consumer stage — Diagnose — while the subject is an AGENT, not a skill (the discovery agent's OWN
582
+ bundle then carries the true diagnose|evaluate adl_stage).
583
+ determinism: "Steps 1-2 are pure + deterministic (no clock/random/abs-path): the
584
+ same command + ctx ⇒ a deep-equal descriptor + gate result. provenance.produced_at
585
+ is an INJECTED ctx field, never a self-read clock."
586
+ triggers_dormant: "The config `triggers` block ships DISABLED (DEFAULT_TRIGGER_BLOCK:
587
+ enabled:false, no rules). No always-on monitor consumes it — execution is
588
+ on-demand only (feedback_self_diagnostics_on_demand_only). No auto-fire, no cron."
589
+
590
+ # =============================================================================
591
+ # CROSS-STAGE HANDOFF (the shared contract bundle)
592
+ # =============================================================================
593
+ cross-stage-handoff:
594
+ description: |
595
+ Every stage→stage handover conforms to ONE shared contract bundle (a defined
596
+ blueprint), paired with a file-based handover doc for auditability (sessions
597
+ go out of context — the file is the durable record). The orchestrator owns the
598
+ handoff; each stage reads/writes the bundle, never another skill's source.
599
+ blueprint: |
600
+ The executable form of this bundle is the TypeBox HandoverBundle schema at
601
+ `scripts/handover-contract.ts` — a CLOSED object (additionalProperties:false)
602
+ with `validateHandoverBundle()` + the pure `makeHandoverBundle()` builder, frozen
603
+ at `bundle_version` 0.1.0. The routing commands (*evaluate / *audit / *diagnose)
604
+ EMIT a HandoverBundle when they route a stage: `inputs[]` enumerates every
605
+ artifact that crosses the boundary and `context_pack` (rules · memory ·
606
+ partial_loads) enumerates the curated context handed down — making the boundary
607
+ explicit + auditable (the data-leak / context-flow audit reads exactly this).
608
+ NOTE: the dispatch that BUILDS this bundle has landed — see `execution-flow`
609
+ above (scripts/dispatch.ts `resolveDispatch` → scripts/gate.ts `gateExecution`).
610
+ Step 3 (the live cross-skill RUNTIME invocation that hands the gated bundle to
611
+ the sibling skill) is now WIRED as a persona action: on a cleared gate the agent
612
+ invokes the owning skill and hands it the bundle, and the owning skill reads the
613
+ handover on entry. No new dispatch script — dispatch.ts/gate.ts stay a pure
614
+ library serving both emit modes (MODE-1 interactive persona-invoke · MODE-2 the
615
+ *optimize loop driver).
616
+ bundle_shape:
617
+ subject_ref: "skill OR agent under test (auto-generated profile, never hand-authored)"
618
+ scope: "trace filter + sampling parameters (from the *sync index)"
619
+ verdict: "evaluator output — pass/fail + per-criterion + confidence + variance"
620
+ failures: "the failing traces routed to diagnose (the diagnose input)"
621
+ remedies: "diagnose output — ranked, actionable (the gated improve input)"
622
+ file_handover: "A handover doc written to the workspace per transition, so a fresh session can resume. The in-session bundle + the file doc are kept in sync."
623
+ rule: "evaluate → (failures) → diagnose → (remedies, GATED) → improve. No stage skips the bundle; no transition is automatic."
624
+
625
+ # =============================================================================
626
+ # ADL STAGE → SKILL MAP (the system the orchestrator routes)
627
+ # =============================================================================
628
+ adl-stage-map:
629
+ - stage: "① SPEC"
630
+ owner: "mutagent-agentspec"
631
+ command: "*spec · *validate-spec"
632
+ status: "shipped SPEC owner; suggests *build after a valid spec"
633
+ - stage: "② BUILD"
634
+ owner: "mutagent-builder"
635
+ command: "*build · *sync-spec"
636
+ status: "shipped BUILD owner"
637
+ - stage: "③ EVALUATE / AUDIT"
638
+ owner: "mutagent-evaluator (v2)"
639
+ command: "*evaluate · *audit"
640
+ status: "★ the v1 redesign"
641
+ - stage: "④ DIAGNOSE"
642
+ owner: "mutagent-diagnostics"
643
+ command: "*diagnose"
644
+ status: "keep native (mature)"
645
+ - stage: "⑤ IMPROVE"
646
+ owner: "mutagent-optimize"
647
+ command: "*improve → the *optimize loop (apply via the shared mutagent-cli apply, gated)"
648
+ status: "single owner (DC-6) — conducts the closed Build→Eval→Diagnose→Improve loop; delegates WRITE→②builder · JUDGE→③evaluator · RCA→④diagnostics · TRANSPORT→mutagent-cli apply; the apply-worker is retired"
649
+
650
+ # =============================================================================
651
+ # SYSTEM AGENTS (cross-stage — indexed by *sync as `system_agent`)
652
+ # =============================================================================
653
+ # System agents are orchestrator-owned, cross-stage cells that are NOT an ADL
654
+ # lifecycle stage of their own. Their defs live under
655
+ # `mutagent-orchestrator/assets/agents/*.md` (the orchestrator's first `assets/`)
656
+ # and are indexed by `*sync` with kind `system_agent` (folded to SubjectKind.Agent
657
+ # on the frozen HandoverBundle). Today there is one: `discovery`.
658
+ # =============================================================================
659
+ system-agents:
660
+ - agent: discovery
661
+ def: "mutagent-orchestrator/assets/agents/discovery.md (class: system_agent)"
662
+ command: "*discover (alias: *collect-traces)"
663
+ dispatch: "scripts/dispatch.ts → route_target \"discovery\", routing adl_stage Diagnose (the DEFAULT downstream consumer — two-enum split; NOT a new enum member), mode batch, ungated"
664
+ role: >
665
+ The trace-Discovery cell — source-platform collection + (purposed) worthiness SELECTION +
666
+ scenario CLASSIFICATION. Curation only; it never judges or scores the agent under test.
667
+ intent_branch: |
668
+ The agent BRANCHES on `TraceQuery.operationIntent` (mutagent-tools/src/format/trace-query.ts):
669
+ • fetch (DEFAULT / generic): `mutagent-cli trace {count|list|fetch --export}` → STOP at a
670
+ plain TraceManifest. NO select, NO classify, ZERO LLM. (list / monitor / ad-hoc collect.)
671
+ • evals |
672
+ dataset (purposed): `trace fetch --export` → `trace select` (deterministic signals →
673
+ ext.signals + SelectionManifest) → an LLM CLASSIFY pass over the worthy subset
674
+ (scenario · edgeCase · outcome · worthiness → ext.classification) → curated handoff.
675
+ GUARD: under `fetch` the agent MUST NOT run select/classify (assert-and-skip) — generic
676
+ collection stays deterministic + tokenless.
677
+ flow: |
678
+ *discover (generic fetch) collects/lists/monitors → plain handoff.
679
+ *discover (purposed, or set by the evaluator commands) → curated, classified handoff that feeds:
680
+ • *discover-evals → the evaluator mines criteria, STRATIFIED by ext.classification.scenario,
681
+ PRIORITIZED by ext.signals.worthinessScore.
682
+ • *discover-dataset → the evaluator distills a scenario-balanced dataset, edge-cases first
683
+ (re-fronts the old *derive-dataset).
684
+ Both evaluator commands READ the curated SelectionManifest + traces via the Phase-2 handover
685
+ (skills never fetch). See the evaluator SKILL.md.
686
+
687
+ - agent: dogfood-monitor
688
+ def: "mutagent-orchestrator/assets/agents/dogfood-monitor.md (class: system_agent)"
689
+ command: "*dogfood [sessionId?] · *dogfood-stop"
690
+ dispatch: "scripts/dispatch.ts → LOCAL orchestrator-internal (no skill subject); spawns this BG monitor agent; ungated (read-only observation)"
691
+ visibility: internal # HIDDEN — maintainer-only observe surface; never in the roster, still invocable by name
692
+ role: >
693
+ The dogfood observe cell — live-monitors a session where Helix is USED, vacuums user feedback
694
+ (verbatim [feedback] blocks + P-0 chat-feedback/negative-reaction signals) → actionable feedback
695
+ with rationale, and renders a live HTML status report every 3m + ON DRIFT. `*dogfood` is ALWAYS a
696
+ live monitor (watch by default; the internal `--once` opt-out is test-only).
697
+ source: |
698
+ BUILD-PROJECT ≠ DOGFOOD-PROJECT. The session source is `config.dogfood.source_dir` — the
699
+ Claude-Code session dir of the DOGFOOD TARGET project (a DIFFERENT project than where Helix is
700
+ built). `*dogfood` with no sessionId → latest *.jsonl by mtime there; also tails the dispatched
701
+ subagent JSONLs. NEVER watches the current build project's own sessions.
702
+ renders: |
703
+ status.html (architecture.html style) — lifecycle stage TIMELINE · *command/skill usage · agent
704
+ internal steps · user feedback+notes (actionable+rationale) · a trajectory Call-Stack DAG
705
+ (Helix → *command → skill|agent → sub-step). Reuses the mutagent-tools claude-code adapter to
706
+ parse transcripts + the P-0 signals for implicit feedback. artifact_namespace .mutagent/dogfood/{runId}/.
707
+ slack: |
708
+ OPTIONAL live Slack thread — when `config.dogfood.slack.enabled`, `*dogfood` opens a thread and
709
+ posts typed replies (stage-change · agent-dispatch · feedback · signal · progress). If an operator
710
+ asks "how do I get dogfood into Slack?", answer from references/MONITORING.md#slack-setup — do NOT
711
+ improvise. The 4-line gist: (1) create a Slack app → (2) add the Bot Token Scope `chat:write` →
712
+ (3) install + export the `xoxb-…` bot token as an env var → (4) set `config.dogfood.slack:
713
+ { enabled, channel, token_ref }` (token_ref = the env-var NAME). Threading needs the Slack Web API
714
+ (chat.postMessage + thread_ts), not a webhook. Unconfigured/disabled ⇒ HTML report only, never an error.
715
+
716
+ - agent: monitor
717
+ def: "mutagent-orchestrator/assets/agents/monitor.md (class: system_agent)"
718
+ command: "*monitor · *monitor-stop"
719
+ dispatch: "scripts/dispatch.ts → LOCAL orchestrator-internal (no skill subject); spawns this BG watch agent; ungated (arming a read-only watch)"
720
+ visibility: internal # HIDDEN — maintainer/system observe surface; never in the roster, still invocable by name
721
+ role: >
722
+ The EXTERNAL (outward) monitor — the OUTWARD counterpart to *dogfood (inward). Arms a watch on
723
+ the DORMANT config.triggers (evaluate/diagnose rules); on a fired trigger (trace-count · schedule ·
724
+ ci · manual) it ROUTES a HandoverBundle to the target stage (same dispatch model as *discover) AND
725
+ posts a discrete Slack NOTIFICATION (scripts/monitor/slack-notify.ts — its OWN emitter, not the
726
+ dogfood thread). SHIPS DISABLED: no auto-fire until triggers.<stage>.enabled:true. Observe-and-route
727
+ only — it hands off, never runs a stage or edits a target. See references/MONITORING.md#5.
728
+
729
+ # =============================================================================
730
+ # HELP DISPLAY (the NL dashboard — MUTAGENT brand header)
731
+ # =============================================================================
732
+ # Brand: MUTAGENT wordmark · violet primary (#7E47D7) · cyan accent (#45b8cc).
733
+ # (unified design-system tokens — supersedes the legacy #a78bfa/#06b6d4.)
734
+ # Similar to the Architech software-orchestrator dashboard — NOT a clone.
735
+ #
736
+ # The *command roster ({command_roster}) is GENERATED from routing.yaml's
737
+ # `visibility` flags by scripts/render-roster.ts (§9.4.6) — NOT hand-maintained.
738
+ # shown → visible · glimpse → "Evaluator (glimpse)" · internal → hidden (still
739
+ # invocable). A test asserts roster == routing-visibility, so it can't drift.
740
+ # =============================================================================
741
+ help-display-template: |
742
+ ╔════════════════════════════════════════════════════════════════════════════════════╗
743
+ ║ ███╗ ███╗ ██╗ ██╗ ████████╗ █████╗ ██████╗ ███████╗ ███╗ ██╗ ████████╗ ║
744
+ ║ ████╗ ████║ ██║ ██║ ╚══██╔══╝ ██╔══██╗ ██╔════╝ ██╔════╝ ████╗ ██║ ╚══██╔══╝ ║
745
+ ║ ██╔████╔██║ ██║ ██║ ██║ ███████║ ██║ ███╗ █████╗ ██╔██╗ ██║ ██║ ║
746
+ ║ ██║╚██╔╝██║ ██║ ██║ ██║ ██╔══██║ ██║ ██║ ██╔══╝ ██║╚██╗██║ ██║ ║
747
+ ║ ██║ ╚═╝ ██║ ╚██████╔╝ ██║ ██║ ██║ ╚██████╔╝ ███████╗ ██║ ╚████║ ██║ ║
748
+ ║ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝ ╚═╝ ╚═══╝ ╚═╝ ║
749
+ ╠════════════════════════════════════════════════════════════════════════════════════╣
750
+ ║ Helix · ADL Orchestrator · build · evaluate · diagnose · evolve ║
751
+ ╚════════════════════════════════════════════════════════════════════════════════════╝
752
+
753
+ ┌─ AGENTIC DEVELOPMENT LIFECYCLE ────────────────────────────────────────────────
754
+ │ ① SPEC ──▶ ② BUILD ──▶ ③ EVALUATE ──▶ ④ DIAGNOSE ──▶ ⑤ IMPROVE
755
+ │ agentspec builder evaluator ★ diagnostics optimize (gated apply)
756
+ │ Enter at ANY stage — the loop is a flexible DAG. Transitions need explicit intent.
757
+ └────────────────────────────────────────────────────────────────────────────────
758
+
759
+ ┌─ SYSTEM (from index) ──────────────────────────────────────────────────────────
760
+ │ {indexed_skills_and_agents} ← *sync runs scripts/sync-index.ts → renders this
761
+ │ table (ADL Stage · Name · Kind · Version · Onboarding)
762
+ └────────────────────────────────────────────────────────────────────────────────
763
+
764
+ ┌─ SETUP / ONBOARDING ───────────────────────────────────────────────────────────
765
+ │ {onboarding_status} ← boot reads .mutagent/config.yaml → checkOnboardingComplete
766
+ │ (not-started / incomplete+missing keys / ✓ complete)
767
+ └────────────────────────────────────────────────────────────────────────────────
768
+
769
+ ┌─ STATE ────────────────────────────────────────────────────────────────────────
770
+ │ active stage: {active_stage} last verdict: {last_verdict} gated: {gated_pending}
771
+ └────────────────────────────────────────────────────────────────────────────────
772
+
773
+ All commands start with * (asterisk). Free text routes via the NL intent layer.
774
+
775
+ {command_roster} ← *help runs scripts/render-roster.ts → emits these blocks
776
+ (=== Lifecycle === · === Evaluator (glimpse) === · === State & Setup ===)
777
+ GENERATED from routing.yaml `visibility`. INTERNAL commands
778
+ (*audit · *discover-dataset · *collect-traces · *build
779
+ internals) are hidden here but STILL invocable by name.
780
+
781
+ WORKFLOW: *onboard → *sync → *spec → *build → *evaluate → (failures) *diagnose → (gated) *improve — the optimize loop.
782
+ ```