@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,91 @@
1
+ # Design Principles — mutagent-agentspec
2
+
3
+ > Operator-locked rule set. Every change to `mutagent-agentspec` is judged against these.
4
+ > 🔒 = operator-LOCKED. Each entry: **Rule** (the law) · `Applies:` (the surfaces it governs) ·
5
+ > **Audit** (the yes/no question a reviewer asks). PR-001..PR-019 were authored from the design
6
+ > session captured in `mutagent-system/.memory/features/mutagent-agentspec/PRD.md`. PR-020..PR-023
7
+ > were added from the **lab-overseer dogfood** (2026-06; the schema 0.1.0→0.2.0 migration). Append new
8
+ > principles to this file as waves land — this surface expands over time.
9
+ >
10
+ > The skill IS the **ADL ① SPEC** stage: a guided interview that captures *what an agent IS*
11
+ > (the Definition / interface) and emits a portable, validated `agentspec.yaml`. A later `*build`
12
+ > implements it into a target (the implementation). The spec is the single source of truth; the
13
+ > implementation cascades one direction (def → impl).
14
+
15
+ ---
16
+
17
+ #### PR-001 — Definition / Implementation separation 🔒
18
+ **Rule:** The `agentspec.yaml` is the **Definition** (the interface — WHAT the agent is, framework-independent). It is the single source of truth. Implementations cascade ONE direction (def → impl): editing the spec and re-running `*build` updates the implementation; the implementation never silently mutates the spec (the only backwards path is the explicit, audited auto-spec-correction in `*improve`, a later wave). Applies: scripts/contract/agentspec.schema.ts (definition vs build vs appendix split), references/workflows/orchestrator-protocol.md. **Audit:** is the spec the SSoT, with impl cascading one-way def→impl?
19
+
20
+ #### PR-002 — Framework docs fetched-at-build, never copied 🔒
21
+ **Rule:** `*build` crawls the pinned framework documentation FRESH (WebFetch) at build time from the roots listed in `references/frameworks/doc-pins.md` + the spec's `appendix.framework_docs`. SDKs churn; a stale local copy of a framework's API would scaffold against an outdated surface. PIN the doc ROOTS; never vendor the doc BODIES into the skill. Applies: references/frameworks/doc-pins.md, mutagent-builder/.claude/skills/mutagent-builder/assets/agents/ai-engineer.md, agentspec.schema.ts (appendix.framework_docs). **Audit:** does the build crawl pinned docs fresh rather than read a vendored copy?
22
+
23
+ #### PR-003 — Model intent is sacred 🔒
24
+ **Rule:** A `model` named in the spec (or a `subagents[].model`) is honored verbatim — no silent swap, no context-optimized routing, no retry-on-failure alternate-model fallback. `thinkingBudget`-style inference intent is operative, not cosmetic. If a target cannot satisfy a model constraint, THROW — never silently re-target. Applies: agentspec.schema.ts (tools.subagents[].model), assets/agents/*.md (inference pin blocks). **Audit:** is every declared model honored verbatim, with a THROW (not a swap) when unsatisfiable?
25
+
26
+ #### PR-004 — Target-conditional tool binding (revised — was "MCP-first") 🔒 *(dogfood-directed revision)*
27
+ **Rule:** The tool-binding preference is resolved **AFTER the framework is known** (`build.target_framework`, asked early per F3), not as a blanket MCP-first rule. Bias the binding to the chosen target's ecosystem:
28
+ - **harness targets** (`harness:claude-code` / `harness:codex`) → **CLI-first**: prefer the harness's native CLI tools (`gh` / `git` / framework `cli`) — these runtimes bind CLIs directly and idiomatically.
29
+ - **code-frameworks** (langgraph / mastra / pydantic-ai / deepagents) → **MCP / Composio / SDK-first**: prefer an MCP `ref` (the converging portable tool layer), a Composio binding, or the framework's native SDK integration.
30
+
31
+ `tools.integration[].kind` still spans `cli|saas|mcp`; the interview picks the binding the chosen target favors rather than always reaching for MCP. **Revision note:** PR-004 was originally "blanket MCP-first" and is operator-LOCKED; the operator DIRECTED this change (ADL ① SPEC dogfood F5) — a blanket MCP-first rule mis-bound harness/CLI agents. The minimal, audited revision replaces the blanket rule with a target-conditional preference; no other locked principle is touched. Applies: agentspec.schema.ts (tools.integration), references/workflows/orchestrator-protocol.md (D4 tools interview step). **Audit:** does the interview resolve the tool-binding preference from the chosen target (CLI-first for harnesses, MCP/Composio/SDK for code-frameworks), rather than blanket MCP-first?
32
+
33
+ #### PR-005 — The target may be a harness 🔒
34
+ **Rule:** `build.target_framework` accepts framework targets (mastra · deepagents · pydantic-ai · langgraph) AND HARNESS targets of the form `harness:claude-code` / `harness:codex` / `harness:<other>`. It is therefore typed as a String (with a documented example set), not a closed Union, so harness:* and future targets are expressible without a schema bump. Applies: agentspec.schema.ts (build.target_framework). **Audit:** can `build.target_framework` express a `harness:*` value and a not-yet-enumerated framework?
35
+
36
+ #### PR-006 — AskUserQuestion is a parent-only interview 🔒
37
+ **Rule:** The `*spec` interview runs on the PARENT session (AskUserQuestion on Claude Code; chat-fallback multi-choice elsewhere). Sub-agents cannot ask the operator questions, so the interview is never delegated to one. The parent session IS the domain orchestrator. Applies: references/workflows/orchestrator-protocol.md (FSM), SKILL.md §0. **Audit:** does the interview run on the parent session, never inside a dispatched sub-agent?
38
+
39
+ #### PR-007 — Lean by design (ship `*spec` before `*build`) 🔒
40
+ **Rule:** Ship the SPEC stage fully before the BUILD stage. `*spec` + `*validate-spec` are complete this wave; `*build` + `*eval` are OUTLINED (protocol prose + the two shipped agent contracts) and wired in a later wave. Do not pad the build loop before the spec is solid. Applies: SKILL.md §0.1, references/workflows/orchestrator-protocol.md (`*build`/`*eval` outline sections). **Audit:** is `*spec` fully shipped while `*build`/`*eval` remain outlined-only?
41
+
42
+ #### PR-008 — All dispatched sub-agents are skill-shipped 🔒
43
+ **Rule:** `mutagent-agentspec` dispatches ONLY its OWN sub-agent contracts, shipped in `assets/agents/*.md` and carried in the npm tarball. There is NO dependency on a host/monorepo `architect`, `developer`, `general-purpose`, or `llm-whisperer` agent — those may not exist in a standalone `pnpx @mutagent/agentspec init` environment. Applies: mutagent-builder/.claude/skills/mutagent-builder/assets/agents/ai-engineer.md, mutagent-builder/.claude/skills/mutagent-builder/assets/agents/ai-architect.md, references/workflows/orchestrator-protocol.md. **Audit:** does every dispatched agent resolve to a shipped `assets/agents/*.md`, with zero host-agent references?
44
+
45
+ #### PR-009 — Explicit-intent transitions (no auto-advance) 🔒
46
+ **Rule:** The ADL loop never auto-advances. Helix (the orchestrator) KNOWS the next stage and proactively SUGGESTS it + renders loop position, but every transition (spec→build, build→eval, …) requires explicit operator confirmation. "Auto-orchestrate" means suggest, never auto-run. Applies: references/workflows/orchestrator-protocol.md, meta.loop_state in agentspec.schema.ts. **Audit:** does a stage transition require explicit operator intent rather than firing automatically?
47
+
48
+ #### PR-010 — Loop-state lives inside the spec 🔒
49
+ **Rule:** `meta.loop_state` (`stage`, `last_verdict?`, `updated_at`) lives INSIDE `agentspec.yaml` — the spec IS the subject record. There is no separate registry; a planned (not-yet-built) agent is a first-class trackable subject from spec-time. Helix reads `meta.loop_state.stage` for loop position. Applies: agentspec.schema.ts (meta.loop_state), references/workflows/orchestrator-protocol.md. **Audit:** is loop position read from `meta.loop_state` in the spec, with no external registry?
50
+
51
+ #### PR-011 — Spec ↔ impl ↔ eval sync triad 🔒
52
+ **Rule:** When a spec exists, the Definition, the built implementation, and the eval suite stay in lockstep. An IMPL defect → patch code AND auto-correct the spec (backwards impl→spec patch is a first-class, audited path); a DEFINITION gap → re-spec → `*build`. (Standalone diagnostics with NO spec just patches impl — the triad only applies when a spec exists.) This is OUTLINED this wave; the mechanism lands with `*build`/`*improve`. Applies: references/workflows/orchestrator-protocol.md (`*build`/`*eval` outlines), PRD §H.3. **Audit:** is the triad's auto-spec-correction described as the closure mechanism (not yet built, but specified)?
53
+
54
+ #### PR-012 — 1-spec ↔ N-versioned-subjects identity anchor 🔒
55
+ **Rule:** `meta.spec_id` is the canonical agent identity that survives every version. One active AgentSpec can have N versioned subjects (built impls / evaluator SubjectProfiles / diagnostics EntityContexts); they resolve to the spec by `spec_id` and reconcile against it. Applies: agentspec.schema.ts (meta.spec_id, meta.spec_version), references/principles.md PR-013. **Audit:** is `meta.spec_id` a stable identity anchor independent of version?
56
+
57
+ #### PR-013 — Backwards-only linking 🔒
58
+ **Rule:** The link points BACKWARDS: subjects → spec. The spec is implementation-AGNOSTIC — it does NOT enumerate its impls/subjects. Each downstream artifact (built impl · SubjectProfile · EntityContext) carries `spec_id` and points UP. The schema therefore has NO downstream `links`/`subjects` field by construction. Applies: agentspec.schema.ts (meta has spec_id but no downstream links), scripts/contract/agentspec.schema.test.ts (closed-object rejects a `links` field). **Audit:** does the spec carry NO downstream enumeration of its subjects/impls?
59
+
60
+ #### PR-014 — System-prompt + persona are first-class spec fields 🔒
61
+ **Rule:** `definition.system_prompt` is the ACTUAL operative system prompt the runtime sends (the full text, not a summary), and `definition.persona` (role + verbose persona) is a first-class operative field. They are required, not optional commentary. Applies: agentspec.schema.ts (definition.system_prompt: String required; definition.persona), assets/templates/agentspec.yaml.tpl (a real multi-paragraph prompt). **Audit:** are `system_prompt` + `persona` required, primary operative fields (not summaries)?
62
+
63
+ #### PR-015 — Verbose descriptions everywhere 🔒
64
+ **Rule:** Every tool, context source, job, sub-agent, skill, and trigger in the spec carries a VERBOSE `description` — it is the primary field the implementing LLM reads to understand intent. A terse/empty description defeats the spec. The worked template models verbose descriptions on every entry. Applies: agentspec.schema.ts (description: String on tools/context_sources/jobs/subagents/skills/triggers), assets/templates/agentspec.yaml.tpl. **Audit:** does every tool/source/job/subagent/skill/trigger carry a verbose description?
65
+
66
+ #### PR-016 — Standardized SOP block 🔒
67
+ **Rule:** `definition.sop[]` is a STANDARDIZED operating-procedure block: each entry = `when` (trigger condition) + `context` (what is loaded/required) + `procedure` (the verbose step-by-step) + optional `on_outcome.{success,failure}`. This is how the agent OPERATES, by condition + context — distinct from `modeling` (the decision graph). Applies: agentspec.schema.ts (definition.sop), assets/templates/agentspec.yaml.tpl. **Audit:** does each SOP entry carry when + context + procedure?
68
+
69
+ #### PR-017 — Agent activation triggers are first-class 🔒
70
+ **Rule:** `definition.triggers[]` describes how the DESIGNED agent is ACTIVATED — its inbound event sources (a2a · webhook · schedule · queue · event · mcp · manual). This is a first-class spec field and is DISTINCT from the in-system `*monitor` agent (which re-enters the ADL loop on a SYSTEM event). The designed agent's own inbound events live here, never in `*monitor`. Applies: agentspec.schema.ts (definition.triggers), references/workflows/orchestrator-protocol.md (triggers interview step), PRD §H connection-point CP9. **Audit:** are the designed agent's inbound activation events captured in `definition.triggers`, distinct from `*monitor`?
71
+
72
+ #### PR-018 — Standalone + symbiosis (zero sibling-skill source refs) 🔒
73
+ **Rule:** Every shipped artifact under `.claude/skills/mutagent-agentspec/` is a sealed unit with ZERO source reference to any sibling skill — and in particular NONE to the internal skill-construction skill (internal, not for release; the verifier greps for its registry name and expects empty). The `*eval` handoff to an evaluator is a designed FEATURE mentioned at the doc/protocol level only; it is never a code import. Applies: ALL of `.claude/skills/mutagent-agentspec/**`. **Audit:** does the sibling-skill registry-name grep over the skill tree return empty, and are there zero cross-skill code imports?
74
+
75
+ #### PR-019 — Eval criteria are append-extensible 🔒
76
+ **Rule:** `definition.evals.success_criteria[]` is binary-actionable AND append-extensible across loop iterations. You cannot pre-know every criterion at spec-time; diagnose/discover findings ADD criteria back into the spec, which re-seed the eval suite. The schema therefore models success_criteria as an open, growable array (never a fixed-length tuple). Applies: agentspec.schema.ts (definition.evals.success_criteria: Array), references/workflows/orchestrator-protocol.md (`*eval` outline). **Audit:** can `success_criteria` grow across iterations (modeled as an extensible array)?
77
+
78
+ #### PR-020 — Scenarios are a first-class eval field 🔒 *(dogfood F1)*
79
+ **Rule:** `definition.evals.scenarios[]` captures the SITUATIONS the agent must handle — each `{id, description (the situation), expected_behavior, category?, edge_case?}`. The interview probes explicitly for the HARD / adversarial edge-cases a naive spec forgets; scenarios are the seed material an evaluator turns into eval items. Required key (schema 0.2.0). Origin: lab-overseer's emitted spec carried zero scenarios. Applies: agentspec.schema.ts (ScenarioSchema, definition.evals.scenarios), references/workflows/orchestrator-protocol.md (interview D10), assets/templates/agentspec.yaml.tpl. **Audit:** does the spec enumerate the situations the agent handles, including edge-cases?
80
+
81
+ #### PR-021 — Dataset categories define the golden eval-suite 🔒 *(dogfood F2)*
82
+ **Rule:** `definition.evals.dataset_categories[]` is the dataset DEFINITION the `*eval` stage consumes — each `{id, description (the use-case slice), edge_cases[]}`. The spec SEEDs the evaluator's dataset (seed, don't duplicate — PR-018); it is the by-use-case + edge-case coverage map the golden suite is built from. Required key (0.2.0). Origin: lab-overseer's spec had no dataset definition, so `*eval` had nothing to build from. Applies: agentspec.schema.ts (DatasetCategorySchema, definition.evals.dataset_categories), references/workflows/orchestrator-protocol.md (interview D11). **Audit:** does the spec define the golden eval-suite slices + edge-cases the dataset must cover?
83
+
84
+ #### PR-022 — Runtime is pinned at spec-time 🔒 *(dogfood F4)*
85
+ **Rule:** `build.runtime` (bun · node · deno · python · shell · …) is PINNED at spec-time so `*build` implements ONCE — never pick-a-runtime-then-rebuild. Required key (0.2.0). The Actor builds for that runtime only; the Verifier flags a runtime-rebuild as STEER. Origin: lab-overseer was built in bash then rebuilt in Bun because the runtime was never specified. Applies: agentspec.schema.ts (build.runtime), references/workflows/orchestrator-protocol.md (interview B1), mutagent-builder/.claude/skills/mutagent-builder/assets/agents/ai-engineer.md (Step 2), mutagent-builder/.claude/skills/mutagent-builder/assets/agents/ai-architect.md (pre-flight). **Audit:** is the implementation runtime fixed in the spec before `*build` runs?
86
+
87
+ #### PR-023 — Build applies provider best-practices, crawled fresh 🔒 *(dogfood F3)*
88
+ **Rule:** `*build` applies the model provider's best-practices — chiefly PROMPT-CACHING (static `system_prompt` + tool/skill defs + few-shot in cache-eligible prefixes) — read FRESH from the provider's caching docs (pinned in `references/frameworks/doc-pins.md`), never guessed. Extends PR-002 (fetched-at-build) from framework docs to PROVIDER docs. The Verifier confirms caching was applied; a skipped documented best-practice is a STEER. Origin: lab-overseer's build applied no caching / provider hygiene. Applies: references/frameworks/doc-pins.md (provider caching roots), mutagent-builder/.claude/skills/mutagent-builder/assets/agents/ai-engineer.md (Step 2.5), mutagent-builder/.claude/skills/mutagent-builder/assets/agents/ai-architect.md (pre-flight). **Audit:** does the build crawl + apply provider prompt-caching, verified by the architect?
89
+
90
+ #### PR-024 — Build-faithfulness gate: TDD-green is not enough 🔒 *(dogfood — sim F-gap)*
91
+ **Rule:** A `*build` is GREEN only when the TDD loop passes AND a deterministic **spec→impl coverage gate** passes. TDD proves the code that EXISTS is correct; it is SILENT on whether all the code the spec REQUIRES exists (a dropped tool has no test to fail). Every `definition.tools.code[].id` MUST map to an implementing module carrying `// @implements <tool-id>` AND a referencing test; any `jobs_to_be_done[].backed_by` ref MUST resolve to a declared code tool. The Actor runs the gate as Step 3.5; the Verifier RE-RUNS it independently (Context-Inversion — faithfulness is scripted, never prose-judged). A miss is a STEER naming the tool. Origin: the dogfood sim shipped a scaffold missing the `collect-range` tool with 27 green tests — a green TDD loop did not catch a dropped spec tool. Applies: mutagent-builder/.claude/skills/mutagent-builder/scripts/verify/spec-impl-coverage.ts (+test), mutagent-builder/.claude/skills/mutagent-builder/assets/agents/ai-engineer.md (Step 3.5 + termination), mutagent-builder/.claude/skills/mutagent-builder/assets/agents/ai-architect.md (scripted pre-flight), references/workflows/orchestrator-protocol.md (`*build` two-gate green), scripts/contract/agentspec.schema.ts (jobs_to_be_done[].backed_by?). **Audit:** is every spec-declared code tool asserted (by a deterministic gate the Verifier re-runs) to have an `@implements` module + a test before a build is green?
@@ -0,0 +1,295 @@
1
+ # Requirements registry — mutagent-agentspec
2
+ #
3
+ # Machine-readable requirements hub. Ships with the skill (a sibling of principles.md).
4
+ # Requirements are the HUB:
5
+ # OUTBOUND — `features` (the wave work that implements the REQ; empty ⇒ UNMET),
6
+ # `evalCriteria` (what audits it; empty ⇒ UN-AUDITED — an honest gap),
7
+ # `principles` (the design rule it honors — PR-NNN in references/principles.md).
8
+ # INBOUND — `feedbackSources` (the operator design note that motivated it).
9
+ #
10
+ # Source-of-truth chain: this file (HUB) → principles.md GOVERNS → the in-repo PRD is the
11
+ # narrative. NDA: no client identity, synthetic only.
12
+
13
+ meta:
14
+ subject: mutagent-agentspec
15
+ version: "0.1.0-alpha.0"
16
+ description: >
17
+ Product requirements for the ADL ① SPEC skill — the guided requirements interview that
18
+ emits a portable, validated agentspec.yaml. Derived from the operator design session, the
19
+ SKILL.md surface, principles.md (PR-001..PR-019), and the agentspec.v0.2.0 contract.
20
+ path: mutagent-system/mutagent-agentspec/.claude/skills/mutagent-agentspec/references/requirements.yaml
21
+ generatedFrom:
22
+ - "mutagent-system/.memory/features/mutagent-agentspec/PRD.md (the in-repo design source of truth)"
23
+ - "references/principles.md (PR-001..PR-019)"
24
+ - "references/workflows/orchestrator-protocol.md (the *spec interview FSM)"
25
+ - "scripts/contract/agentspec.schema.ts (the agentspec.v0.2.0 contract)"
26
+ feedbackSources:
27
+ - "operator design session 2026-06 — mutagent-agentspec plan (PRD.md)"
28
+
29
+ requirements:
30
+ # ───────────────────────── DEFINITION — persona + prompt ─────────────────────────
31
+ - id: REQ-001
32
+ title: Capture persona (role + verbose persona) and the actual system prompt as first-class fields
33
+ status: done
34
+ priority: P0
35
+ features: [wave-1]
36
+ evalCriteria: ["schema:definition.persona required", "schema:definition.system_prompt required-string", "template: real multi-paragraph system_prompt validates"]
37
+ principles: [PR-014, PR-015]
38
+ feedbackSources: ["PRD §B: persona + system_prompt are primary operative text, not a summary"]
39
+
40
+ - id: REQ-002
41
+ title: Capture jobs-to-be-done with verbose what+why and expected output
42
+ status: done
43
+ priority: P0
44
+ features: [wave-1]
45
+ evalCriteria: ["schema:definition.jobs_to_be_done[] {id,description,expected_output}"]
46
+ principles: [PR-015]
47
+ feedbackSources: ["PRD §B: jobs_to_be_done = the 'Requirements' (CrewAI-task-aligned)"]
48
+
49
+ # ───────────────────────── DEFINITION — context + tools ─────────────────────────
50
+ - id: REQ-003
51
+ title: Capture context sources (kind + where_from + verbose description + optional auth_ref)
52
+ status: done
53
+ priority: P0
54
+ features: [wave-1]
55
+ evalCriteria: ["schema:definition.context_sources[] kind∈{api,saas,internal-service,mcp,cli}"]
56
+ principles: [PR-015]
57
+ feedbackSources: ["PRD §B: context_sources = what context + where it comes from"]
58
+
59
+ - id: REQ-004
60
+ title: Capture tools across four buckets (integration / code / skills / subagents), each with a verbose description
61
+ status: done
62
+ priority: P0
63
+ features: [wave-1]
64
+ evalCriteria: ["schema:definition.tools.{integration,code,skills,subagents}", "schema:every tool entry carries a description"]
65
+ principles: [PR-004, PR-015]
66
+ feedbackSources: ["PRD §B: tools nested formal fields, ALWAYS a verbose description; MCP-first binding"]
67
+
68
+ # ───────────────────────── DEFINITION — type / triggers / modeling / sop / evals ─────────
69
+ - id: REQ-005
70
+ title: Capture agent_type (conversational / automation / orchestrator)
71
+ status: done
72
+ priority: P1
73
+ features: [wave-1]
74
+ evalCriteria: ["schema:definition.agent_type closed enum"]
75
+ principles: [PR-013]
76
+ feedbackSources: ["PRD §B: agent_type is a first-class definition field"]
77
+
78
+ - id: REQ-006
79
+ title: Capture activation triggers (a2a/webhook/schedule/queue/event/mcp/manual) as a first-class field distinct from *monitor
80
+ status: done
81
+ priority: P0
82
+ features: [wave-1]
83
+ evalCriteria: ["schema:definition.triggers[] kind enum", "principles: PR-017 *monitor distinction documented"]
84
+ principles: [PR-017]
85
+ feedbackSources: ["PRD §H CP9: the designed agent's inbound activation events live in definition.triggers, NOT *monitor"]
86
+
87
+ - id: REQ-007
88
+ title: Capture modeling (LangGraph-aligned decision_graph + workflows)
89
+ status: done
90
+ priority: P1
91
+ features: [wave-1]
92
+ evalCriteria: ["schema:definition.modeling.decision_graph {state,nodes,edges}"]
93
+ principles: [PR-013]
94
+ feedbackSources: ["PRD §B: modeling.decision_graph LangGraph-aligned"]
95
+
96
+ - id: REQ-008
97
+ title: Capture a standardized SOP block (when + context + procedure + optional on_outcome)
98
+ status: done
99
+ priority: P0
100
+ features: [wave-1]
101
+ evalCriteria: ["schema:definition.sop[] {when,context,procedure}"]
102
+ principles: [PR-016]
103
+ feedbackSources: ["PRD §F principles added: standardized SOP block (condition + context + procedure)"]
104
+
105
+ - id: REQ-009
106
+ title: Capture binary-actionable, append-extensible eval success_criteria
107
+ status: done
108
+ priority: P0
109
+ features: [wave-1]
110
+ evalCriteria: ["schema:definition.evals.success_criteria[] {id,criterion,type,goal}", "criteria modeled as growable array"]
111
+ principles: [PR-019]
112
+ feedbackSources: ["PRD §H.3: eval criteria FLEX/grow across loop iterations"]
113
+
114
+ # ───────────────────────── BUILD ─────────────────────────
115
+ - id: REQ-010
116
+ title: Capture build target_framework (incl. harness:*) and target_eval_framework as guided choices inside the spec
117
+ status: done
118
+ priority: P0
119
+ features: [wave-1]
120
+ evalCriteria: ["schema:build.target_framework String accepts harness:* + future frameworks", "schema:build.target_eval_framework"]
121
+ principles: [PR-005, PR-001]
122
+ feedbackSources: ["PRD §B: build.target may be a HARNESS; lives inside the spec → cascade-update"]
123
+
124
+ # ───────────────────────── META / IDENTITY / LOOP ─────────────────────────
125
+ - id: REQ-011
126
+ title: Carry meta.spec_id identity anchor + meta.loop_state inside the spec; backwards-only linking
127
+ status: done
128
+ priority: P0
129
+ features: [wave-1]
130
+ evalCriteria: ["schema:meta.spec_id + meta.loop_state.stage", "schema:NO downstream links (closed object rejects a links field)"]
131
+ principles: [PR-010, PR-012, PR-013]
132
+ feedbackSources: ["PRD §H.2/H.4: loop-state-in-spec; 1-spec↔N-subjects; backwards-only linking"]
133
+
134
+ # ───────────────────────── APPENDIX / DOC-PINNING ─────────────────────────
135
+ - id: REQ-012
136
+ title: Pin framework doc roots in the appendix; *build crawls them fresh (never vendor doc bodies)
137
+ status: done
138
+ priority: P1
139
+ features: [wave-1]
140
+ evalCriteria: ["schema:appendix.framework_docs Record<string,string[]>", "references/frameworks/doc-pins.md present"]
141
+ principles: [PR-002]
142
+ feedbackSources: ["PRD §B appendix: PIN doc roots; crawl fresh at build (SDKs churn)"]
143
+
144
+ # ───────────────────────── VALIDATION GATE ─────────────────────────
145
+ - id: REQ-013
146
+ title: TypeBox round-trip schema gate — *validate-spec validates a spec file; the worked template asserts valid
147
+ status: done
148
+ priority: P0
149
+ features: [wave-1]
150
+ evalCriteria: ["scripts/validate/validate-spec.ts pure fn + CLI", "test: template agentspec.yaml.tpl validates", "test: closed-object rejects an undeclared field"]
151
+ principles: [PR-001, PR-013]
152
+ feedbackSources: ["PRD §G: the interview yields a schema-valid spec; round-trip validation"]
153
+
154
+ # ───────────────────────── INTERVIEW (the *spec FSM) ─────────────────────────
155
+ - id: REQ-014
156
+ title: The *spec interview runs on the parent session (AskUserQuestion / chat fallback) — no coordinator sub-agent
157
+ status: done
158
+ priority: P0
159
+ features: [wave-1]
160
+ evalCriteria: ["references/workflows/orchestrator-protocol.md FSM walks all definition+build areas", "SKILL.md §0: parent session is orchestrator"]
161
+ principles: [PR-006, PR-007]
162
+ feedbackSources: ["PRD §C: *spec full, parent-session-driven; AskUserQuestion can't run in a sub-agent"]
163
+
164
+ # ───────────────────────── BUILD / EVAL (OUTLINED) ─────────────────────────
165
+ - id: REQ-015
166
+ title: Ship two standalone *build sub-agent contracts (ai-engineer Actor + architect Verifier) with zero host-agent dependency
167
+ status: done
168
+ priority: P0
169
+ features: [wave-1]
170
+ evalCriteria: ["mutagent-builder/.claude/skills/mutagent-builder/assets/agents/ai-engineer.md present", "mutagent-builder/.claude/skills/mutagent-builder/assets/agents/ai-architect.md present", "grep: zero host architect/developer/general-purpose/llm-whisperer refs"]
171
+ principles: [PR-008]
172
+ feedbackSources: ["PRD §D: ALL dispatched sub-agents are skill-shipped; NO host-agent dependency"]
173
+
174
+ - id: REQ-016
175
+ title: '*build (implement spec into target + TDD) is OUTLINED only this wave'
176
+ status: outlined
177
+ priority: P1
178
+ features: [wave-2]
179
+ evalCriteria: ["references/workflows/orchestrator-protocol.md#build outline present"]
180
+ principles: [PR-007, PR-002]
181
+ feedbackSources: ["PRD §E lean phasing: Wave-2 = *build (lightweight, careful)"]
182
+
183
+ - id: REQ-017
184
+ title: '*eval handoff to an evaluator is OUTLINED only (doc/protocol level, never a code import)'
185
+ status: outlined
186
+ priority: P2
187
+ features: [wave-3]
188
+ evalCriteria: ["references/workflows/orchestrator-protocol.md#eval-handoff outline present", "grep: evaluator mention is doc-level handoff, not import"]
189
+ principles: [PR-007, PR-018]
190
+ feedbackSources: ["PRD §C/§E: *eval outlined/phased handoff to mutagent-evaluator"]
191
+
192
+ # ───────────────────────── STANDALONE + SYMBIOSIS ─────────────────────────
193
+ - id: REQ-018
194
+ title: Standalone — zero source reference to any sibling skill (HARD ban on the internal skill-construction skill)
195
+ status: done
196
+ priority: P0
197
+ features: [wave-0, wave-1]
198
+ evalCriteria: ["sibling-skill registry-name grep over the skill tree returns empty", "no cross-skill code imports"]
199
+ principles: [PR-018]
200
+ feedbackSources: ["PRD §A: standalone + symbiosis (CORE); ignore the internal skill-construction skill"]
201
+
202
+ # ───────────────────────── HELIX ROUTING ─────────────────────────
203
+ - id: REQ-019
204
+ title: Register *spec in Helix routing additively (AdlStage.Spec + dispatch ROUTE + topology classification + routing.yaml + docs)
205
+ status: done
206
+ priority: P0
207
+ features: [wave-0]
208
+ evalCriteria: ["dispatch.ts *spec ROUTE resolves to mutagent-agentspec/adl_stage spec/interactive/ungated", "sync-index STAGE_BY_NAME mutagent-agentspec→spec", "orchestrator dispatch.test.ts *spec case green"]
209
+ principles: [PR-009]
210
+ feedbackSources: ["PRD §H CP2: add *spec + AdlStage.Spec to dispatch.ts/routing.yaml"]
211
+
212
+ # ───────────────────────── PACKAGE DISCIPLINE ─────────────────────────
213
+ - id: REQ-020
214
+ title: Self-host the skill's own PRD under .memory/features/; never ship it in the npm tarball
215
+ status: done
216
+ priority: P1
217
+ features: [wave-0, wave-1]
218
+ evalCriteria: [".memory/features/mutagent-agentspec/PRD.md present", "npm pack --dry-run excludes .memory/ + .meta/ + *.test.ts", ".meta/design-principles.md + requirements.yaml meta point at the PRD"]
219
+ principles: [PR-001, PR-018]
220
+ feedbackSources: ["operator condition 2026-06: the Spec module maintains its own Spec (self-hosted PRD, stripped at publish)"]
221
+
222
+ # ─────────────── DOGFOOD F1–F4 (lab-overseer run, 2026-06; schema 0.1.0→0.2.0) ───────────────
223
+ - id: REQ-021
224
+ title: Capture the SCENARIOS the agent must handle (situation + expected_behavior + edge_case flag)
225
+ status: done
226
+ priority: P0
227
+ features: [dogfood-fix]
228
+ evalCriteria: ["schema:definition.evals.scenarios[] {id,description,expected_behavior,category?,edge_case?} required", "interview D10 probes hard/adversarial cases", "worked template carries edge-case scenarios"]
229
+ principles: [PR-019, PR-015]
230
+ feedbackSources: ["dogfood F1 (lab-overseer): the emitted spec had 0 scenarios — the spec must carry the situations the agent handles"]
231
+
232
+ - id: REQ-022
233
+ title: Capture the GOLDEN eval-suite slices (dataset_categories with explicit edge_cases) the *eval dataset must cover
234
+ status: done
235
+ priority: P0
236
+ features: [dogfood-fix]
237
+ evalCriteria: ["schema:definition.evals.dataset_categories[] {id,description,edge_cases[]} required", "interview D11 captures slices + edge-cases", "seed-don't-duplicate handoff to evaluator (PR-018)"]
238
+ principles: [PR-019, PR-018]
239
+ feedbackSources: ["dogfood F2 (lab-overseer): no dataset definition — *eval had nothing to build a golden suite from"]
240
+
241
+ - id: REQ-023
242
+ title: Pin the implementation RUNTIME at spec-time so *build implements once (no pick-then-rebuild)
243
+ status: done
244
+ priority: P0
245
+ features: [dogfood-fix]
246
+ evalCriteria: ["schema:build.runtime required String (bun|node|deno|python|shell|…)", "interview B1 recommends runtime from target", "ai-engineer Step 2 builds for build.runtime ONLY", "architect pre-flight flags a runtime-rebuild as STEER"]
247
+ principles: [PR-001]
248
+ feedbackSources: ["dogfood F4 (lab-overseer): built in bash then rebuilt in Bun because the runtime was never pinned"]
249
+
250
+ - id: REQ-024
251
+ title: Apply provider best-practices (prompt-caching) at build, crawled FRESH from provider docs
252
+ status: done
253
+ priority: P1
254
+ features: [dogfood-fix]
255
+ evalCriteria: ["doc-pins.md pins provider caching roots (Anthropic/OpenAI/Google)", "ai-engineer Step 2.5 applies prompt-caching from crawled docs", "architect pre-flight verifies caching applied"]
256
+ principles: [PR-002]
257
+ feedbackSources: ["dogfood F3 (lab-overseer): build applied no prompt-caching / provider best-practices"]
258
+
259
+ # ─────────────── BUILD-FAITHFULNESS GATE (sim F-gap, 2026-06) ───────────────
260
+ - id: REQ-025
261
+ title: A build is green only when TDD passes AND a deterministic spec→impl coverage gate passes
262
+ status: done
263
+ priority: P0
264
+ features: [build-hardening]
265
+ evalCriteria: ["mutagent-builder/.claude/skills/mutagent-builder/scripts/verify/spec-impl-coverage.ts: every definition.tools.code[].id needs an @implements module + a test", "ai-engineer Step 3.5 runs *coverage; termination requires coverage PASS", "architect pre-flight RE-RUNS the gate (scripted, not prose); a miss = STEER", "mutagent-builder spec-impl-coverage.test.ts replays the collect-range miss → exit 1"]
266
+ principles: [PR-024]
267
+ feedbackSources: ["dogfood sim: scaffold shipped missing the collect-range tool with 27 green tests — a green TDD loop did not catch a dropped spec tool"]
268
+
269
+ - id: REQ-026
270
+ title: Spec-time backing signal — jobs_to_be_done[].backed_by names the code tools that implement each job
271
+ status: done
272
+ priority: P1
273
+ features: [build-hardening]
274
+ evalCriteria: ["schema:definition.jobs_to_be_done[].backed_by optional string[] (additive — no version bump)", "coverage gate flags a dangling backed_by ref (not a declared code tool)", "worked template demonstrates backed_by + the // @implements convention"]
275
+ principles: [PR-024]
276
+ feedbackSources: ["dogfood sim escalation E4: surface 'covered-as-spec but only NL-backed' jobs at spec time so BUILD knows its target surface"]
277
+
278
+ # ─────────────── SPEC-STAGE INTERVIEW UX (ADL ① SPEC dogfood, 2026-06) ───────────────
279
+ - id: REQ-027
280
+ title: 'BROWNFIELD/DRIFT — *sync-spec reconciles a draft agentspec against a target (delegated to ai-architect #sync-spec; subject-agnostic)'
281
+ status: done
282
+ priority: P1
283
+ features: [spec-stage]
284
+ evalCriteria: ["SKILL.md §0.1 carries a *sync-spec command row (own entry · delegates read → ai-architect #sync-spec)", "orchestrator-protocol.md has the #sync-spec section (AgentSpec emits a HandoverBundle → Helix dispatches ai-architect #sync-spec → reads target + drafts → operator confirms inferred fields → emit + *validate-spec)", "the former *spec-from-impl + builder *spec-sync are FUSED in (grep: no *spec-from-impl / *spec-sync command rows remain)", "grep: no per-connector / Slack / GitHub-app / subject-specific logic in the reconcile path"]
285
+ principles: [PR-001, PR-006, PR-014]
286
+ feedbackSources: ["dogfood F10 (ADL ① SPEC): support adopting OR reverse-generating an agentspec FROM an existing implementation when no spec exists — generic brownfield capability only", "operator 2026-07-01: FUSE *spec-from-impl + builder *spec-sync into ONE agentspec-owned *sync-spec that delegates the code-read to ai-architect #sync-spec (reverse-generate = drift-from-nothing)"]
287
+
288
+ - id: REQ-028
289
+ title: 'Interview UX — infer→propose→confirm (F2), framework-before-tooling FSM order (F3), target-conditional tool binding (F5, revised PR-004), tooling matches the target language (F12)'
290
+ status: done
291
+ priority: P1
292
+ features: [spec-stage]
293
+ evalCriteria: ["orchestrator-protocol.md D0/D5 infer→propose→confirm with the chatbot→conversational / orchestrator→a2a-router / automation→one-shot map", "FSM asks B0 (target) before D3/D4", "PR-004 revised to target-conditional binding (CLI-first harness / MCP·Composio·SDK code-framework)", "D4 biases tooling to the target's language/ecosystem (e.g. TS/Mastra → Vercel AI SDK)"]
294
+ principles: [PR-004, PR-005, PR-015]
295
+ feedbackSources: ["dogfood F2/F3/F5/F12 (ADL ① SPEC): don't cold-ask the obvious; choose the framework before the tooling; bind tools per the chosen target + its language"]