@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.
- package/.claude/skills/mutagent-helix/SKILL.md +113 -0
- package/.claude/skills/mutagent-helix/scripts/cli/codex-transcode.ts +143 -0
- package/.claude/skills/mutagent-helix/scripts/cli/doctor.ts +111 -0
- package/.claude/skills/mutagent-helix/scripts/cli/init.ts +382 -0
- package/.claude/skills/mutagent-helix/scripts/cli/run.sh +61 -0
- package/CLAUDE.md +193 -0
- package/LICENSE +201 -0
- package/NOTICE +22 -0
- package/README.md +209 -0
- package/assets/adl-loop.svg +162 -0
- package/assets/system-status.svg +422 -0
- package/bin/mutagent-cli.mjs +9950 -0
- package/bin/mutagent-helix.mjs +78 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/CLAUDE.md +28 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/SKILL.md +138 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/assets/templates/agentspec.yaml.tpl +247 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/references/frameworks/doc-pins.md +53 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/references/principles.md +91 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/references/requirements.yaml +295 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/references/workflows/orchestrator-protocol.md +302 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/cli/doctor.ts +116 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/cli/init.ts +230 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/cli/run.sh +60 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/config/resolve-spec-dir.ts +199 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/contract/agentspec.schema.ts +455 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/setup/detect.ts +67 -0
- package/mutagent-agentspec/.claude/skills/mutagent-agentspec/scripts/validate/validate-spec.ts +93 -0
- package/mutagent-agentspec/LICENSE +201 -0
- package/mutagent-agentspec/NOTICE +19 -0
- package/mutagent-agentspec/README.md +44 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/SKILL.md +100 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/assets/agents/ai-architect.md +312 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/assets/agents/ai-engineer.md +357 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/assets/templates/build-report.md.tpl +39 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/references/principles.md +31 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/references/workflows/build-protocol.md +61 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/references/workflows/improve-handoff.md +23 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/scripts/cli/run.sh +60 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/scripts/handoff/validate-build-input.ts +72 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/scripts/sync-spec/check-sync-spec.ts +499 -0
- package/mutagent-builder/.claude/skills/mutagent-builder/scripts/verify/spec-impl-coverage.ts +182 -0
- package/mutagent-builder/CLAUDE.md +25 -0
- package/mutagent-builder/README.md +26 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/README.md +192 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/SKILL.md +352 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/agents/ai-architect.md +256 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/agents/ai-engineer.md +344 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/agents/diagnostics-analyzer.md +576 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/agents/discovery.md +425 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/audit.json.tpl +24 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/audit.md.tpl +49 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/config.yaml.tpl +100 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/pr-body.md.tpl +56 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/report.html.tpl +327 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/README.md +27 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/iter-N-handover.md.tpl +125 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/self-diagnosis-contract.v0.1.0.yaml.tpl +234 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/spec.yaml.tpl +152 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/team.yaml.tpl +127 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/templates/shared/wave-N-dashboard.html.tpl +1712 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.1-nl-query.md +59 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.2-tier0-progress.md +58 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.3-analysis-progress.md +44 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.4-html-report.md +61 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.5-rca-detail.md +69 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/diagnostics/WF-2.6-stale-warning.md +53 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.1-welcome.md +60 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.2-source-platform-picker.md +41 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.3-source-auth.md +75 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.4-target-picker.md +48 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.5-ask-tool.md +43 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.6-config-review.md +57 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.7-filter-defaults.md +52 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/assets/wireframes/onboarding/WF-1.8-first-run.md +59 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/examples/sample-findings.json +92 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/examples/sample-meta.json +47 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/adapter-strategy.md +75 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/config-migration.md +84 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/config.md +159 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/filter-search-matrix.md +66 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/harness-knowledge.md +22 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/memory-format.md +78 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/onboarding-decisions.yaml +187 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/operation-inventory.md +59 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/overview.md +167 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/reference.md +119 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/script-index.md +101 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-adapter-contract.md +93 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/claude-code-transcripts.md +66 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/codex-transcripts.md +78 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/codex.md +145 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/install-paths.md +57 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/langfuse.md +178 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/local-jsonl.md +55 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/openobserve.md +102 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/source-platforms/otel.md +63 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/cloud-rest.md +84 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-claude.md +65 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-cloud-agent-sdk.md +92 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-codex.md +72 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-cursor.md +108 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-mastra.md +77 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/target-platforms/local-opencode.md +70 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/apply-pr-comment-format.md +82 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/diagnostics.md +35 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/handover-contract.md +247 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/onboarding.md +300 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/orchestrator-protocol.md +1861 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/rca.md +331 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/rendering-anatomy.md +314 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/schedule-prep.md +100 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/scope-model.md +128 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/references/workflows/verification-methodology.md +174 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/aggregate/sort-findings.ts +0 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/awareness/blind-spots.ts +167 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/awareness/llm-sample.ts +681 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/cli/doctor.ts +215 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/cli/init.ts +1013 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/cli/install-agents.ts +350 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/cli/run.sh +61 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/cli/shared-templates.ts +79 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/config/load.ts +392 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/config/resolve-credential.ts +120 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/config/schema.ts +641 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/config/validate.ts +134 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/context/build-diagnosis-context.ts +417 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/context/load-context.ts +105 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/contract/types.ts +166 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/enrich/build-render-input.ts +1964 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/enrich/corpus-severity.ts +172 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/enrich/dismissal-match.ts +270 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/enrich/rank-remedies.ts +75 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/hooks/install-hooks.sh +46 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/hooks/pre-push.sh +78 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/invocation/parse-brief.ts +188 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/library/match.ts +114 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/library/paths.ts +95 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/library/store.ts +535 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/library/types.ts +181 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/lint/template-inline-js.ts +267 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/memory/append.ts +188 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/memory/read.ts +218 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/normalize/platforms/entity-context.ts +686 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/normalize/read-unitf.ts +267 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/normalize/trace.ts +1078 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/normalize/unitf-adapter.ts +0 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/normalize/unitf-types.ts +213 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/report/persist-selections.ts +174 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/report/render.ts +3254 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/run/diagnose.ts +64 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/run/session.ts +167 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/sample/caps.ts +345 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/sample/deep-read-gate.ts +424 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/sample/representative.ts +584 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/scan/objection.ts +224 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/scan/trajectory.ts +489 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/self-diagnostics/dispatch.ts +135 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/self-diagnostics/probe.ts +170 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/setup/detect.ts +307 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/setup/ensure-cli.ts +315 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/setup/reconfigure.ts +77 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/setup/verify-agents.ts +207 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/slicer.ts +166 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/claude-code.ts +17 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/codex.ts +11 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/langfuse.ts +17 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/local-jsonl.ts +12 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/adapters/otel.ts +12 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/index.ts +54 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/registry.ts +45 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/source/types.ts +86 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/stale-detector.ts +74 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/test/render-playwright.cli.ts +477 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/tier0/claude-code.ts +133 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/tier0/langfuse.ts +143 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/tier0-scan.ts +423 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/completeness-check.ts +436 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/doc-refs.ts +190 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/finalize-gate.ts +417 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/findings-contract.ts +628 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/render-js-syntax.ts +188 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/report-checklist.yaml +217 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/trace-shape.ts +262 -0
- package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/validate/wave6-checklist.ts +326 -0
- package/mutagent-diagnostics/CLAUDE.md +41 -0
- package/mutagent-diagnostics/LICENSE +201 -0
- package/mutagent-diagnostics/NOTICE +18 -0
- package/mutagent-diagnostics/README.md +343 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/SKILL.md +548 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/agents/audit-executor.md +169 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/agents/dataset-builder.md +160 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/agents/discovery.md +425 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/agents/evaluator.md +1108 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/brand/theme.css +213 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/assets/brand/wordmark.html +9 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/lenses/context-flow-lens.md +85 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/lenses/data-lens.md +47 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/lenses/decision-lens.md +48 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/lenses/methodology-critic-lens.md +53 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/lenses/trajectory-lens.md +44 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/build-review-interface.md +83 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/edd-loop.md +134 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/error-analysis.md +113 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/eval-audit.md +154 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/eval-stage.md +168 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/generate-synthetic-data.md +81 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/grounded-adjudication.md +221 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/memory-format.md +65 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/methodology.md +201 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/operation-inventory.md +197 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/validate-evaluator.md +125 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/workflows/orchestrator-protocol.md +300 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/references/write-judge-prompt.md +123 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/behavior-tree.schema.yaml +73 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/dataset.schema.yaml +66 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/edd-change-request.schema.yaml +114 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/eval-matrix.schema.yaml +74 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/flow-graph.schema.yaml +69 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/flow-profile.schema.yaml +49 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/methodology-review.schema.yaml +40 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/schemas/scorecard.schema.yaml +85 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/agent-dispatch.ts +0 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/aggregate-discover.ts +543 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/artifact-paths.ts +115 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/assemble-scorecard.ts +172 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/build-dataset.ts +186 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/build-evals.ts +93 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/build-review-ui.ts +393 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/check-method-router.ts +170 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/aggregate.ts +112 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/audit-run.ts +182 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/doctor.ts +211 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/dogfood.ts +133 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/init.ts +601 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/methodology-review.ts +122 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/prep.ts +295 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/profile-subject.ts +165 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/run.sh +56 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cli/variance-check.ts +105 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/code-eval.ts +248 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/code-quality-verdict.ts +285 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/codegen-evals.ts +173 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cold-start-project.ts +151 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/cold-start-sampler.ts +267 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/config/load.ts +343 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/config/schema.ts +380 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/agentspec-evals.ts +85 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/dataset.ts +149 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/eval-engine.ts +118 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/eval-matrix.ts +577 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/eval-types.ts +1074 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/flow-graph.ts +194 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/types.ts +303 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/contracts/validation.ts +193 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/derive-dataset.ts +152 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/determine-outcome.ts +219 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/diff-discriminate.ts +160 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/discover-criteria.ts +348 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/edd/change-request.ts +232 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/edd/edd-types.ts +210 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/edd/variance-gate.ts +186 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/emit-completeness.ts +111 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/eval-engine.ts +160 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/evaluate.ts +333 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/flow-graph.ts +230 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/judge-prompt-template.ts +253 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/judge-provider.ts +135 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/lint-grounding.ts +229 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/lint-uniformity.ts +168 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/living-suite.ts +109 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/load-bundle.ts +203 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/load-profile-vocab.ts +64 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/load-profile.ts +106 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/mask.ts +138 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/materialize-dataset.ts +113 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/matrix-judge.ts +750 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/memory/append.ts +215 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/memory/read.ts +168 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/persist-eval-criteria.ts +232 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/prep-tasks.ts +125 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/profile-subject.ts +310 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/publish-report.ts +131 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/read-unitf-traces.ts +81 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/render-build-cards.ts +195 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/render-discover-report.ts +1640 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/render-eval-report.ts +3838 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/render-report.ts +212 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/resolve-credential.ts +110 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/resolve-ref.ts +98 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/result-verify.ts +129 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/route-failures.ts +330 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/run-deterministic.ts +367 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/run-evaluate.ts +719 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/run-judge.ts +155 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/run-pipeline.ts +175 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/sample-traces.ts +210 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/self-audit.ts +387 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/source-map.ts +106 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/subject-profile.ts +134 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/substrate.ts +162 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/sync-eval-criteria.ts +244 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/ui-slots.ts +119 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/unitf-to-evaltrace.ts +284 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/validate-judge.ts +358 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/scripts/variance-compare.ts +177 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/subjects/mutagent-diagnostics/behavior-tree.yaml +140 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/subjects/mutagent-diagnostics/eval-matrix.yaml +1270 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/subjects/mutagent-diagnostics/methodology-review.yaml +105 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/workflows/audit.workflow.js +82 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/workflows/data-leak.workflow.js +236 -0
- package/mutagent-evaluator/.claude/skills/mutagent-evaluator/workflows/variance.workflow.js +163 -0
- package/mutagent-evaluator/CLAUDE.md +45 -0
- package/mutagent-evaluator/LICENSE +201 -0
- package/mutagent-evaluator/NOTICE +23 -0
- package/mutagent-evaluator/README.md +88 -0
- package/mutagent-optimize/.claude/skills/mutagent-optimize/SKILL.md +287 -0
- package/mutagent-optimize/.claude/skills/mutagent-optimize/scripts/contracts/amend-request.ts +503 -0
- package/mutagent-optimize/.claude/skills/mutagent-optimize/scripts/improve-loop-run.ts +304 -0
- package/mutagent-optimize/.claude/skills/mutagent-optimize/scripts/loop-state-cli.ts +300 -0
- package/mutagent-optimize/.claude/skills/mutagent-optimize/scripts/loop-state.ts +440 -0
- package/mutagent-optimize/CLAUDE.md +49 -0
- package/mutagent-optimize/README.md +26 -0
- package/mutagent-orchestrator/CLAUDE.md +102 -0
- package/mutagent-orchestrator/README.md +20 -0
- package/mutagent-orchestrator/assets/agents/discovery.md +425 -0
- package/mutagent-orchestrator/assets/agents/dogfood-monitor.md +266 -0
- package/mutagent-orchestrator/assets/agents/monitor.md +258 -0
- package/mutagent-orchestrator/orchestrator.md +782 -0
- package/mutagent-orchestrator/references/MONITORING.md +209 -0
- package/mutagent-orchestrator/references/config-fields.md +132 -0
- package/mutagent-orchestrator/references/config-migration.md +132 -0
- package/mutagent-orchestrator/references/index-registry.md +92 -0
- package/mutagent-orchestrator/routing.yaml +391 -0
- package/mutagent-orchestrator/scripts/config-schema.ts +1010 -0
- package/mutagent-orchestrator/scripts/dispatch.ts +439 -0
- package/mutagent-orchestrator/scripts/dogfood/extract-feedback.ts +203 -0
- package/mutagent-orchestrator/scripts/dogfood/reconstruct-trajectory.ts +327 -0
- package/mutagent-orchestrator/scripts/dogfood/render-dogfood-report.ts +347 -0
- package/mutagent-orchestrator/scripts/dogfood/resolve-subagents.ts +160 -0
- package/mutagent-orchestrator/scripts/dogfood/run-report.ts +264 -0
- package/mutagent-orchestrator/scripts/dogfood/slack-thread.ts +106 -0
- package/mutagent-orchestrator/scripts/dogfood/types.ts +257 -0
- package/mutagent-orchestrator/scripts/eval-routing.ts +753 -0
- package/mutagent-orchestrator/scripts/gate.ts +219 -0
- package/mutagent-orchestrator/scripts/handover-contract.ts +362 -0
- package/mutagent-orchestrator/scripts/index/build-index.ts +351 -0
- package/mutagent-orchestrator/scripts/index/render-index.ts +110 -0
- package/mutagent-orchestrator/scripts/monitor/slack-notify.ts +111 -0
- package/mutagent-orchestrator/scripts/monitor/triggers.ts +162 -0
- package/mutagent-orchestrator/scripts/onboarding-check.ts +369 -0
- package/mutagent-orchestrator/scripts/render-roster.ts +308 -0
- package/mutagent-orchestrator/scripts/resolve-credential.ts +185 -0
- package/mutagent-orchestrator/scripts/resolve-paths.ts +114 -0
- package/mutagent-orchestrator/scripts/slack/format.ts +63 -0
- package/mutagent-orchestrator/scripts/slack/post.ts +115 -0
- package/mutagent-orchestrator/scripts/sync-index.ts +311 -0
- package/package.json +64 -0
|
@@ -0,0 +1,576 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: diagnostics-analyzer
|
|
3
|
+
model: opus # CC-native pin (dogfood F6) — host reads this at spawn
|
|
4
|
+
description: >
|
|
5
|
+
Pure subagent executor. Receives a trace slice (list of trace IDs + scope context). Runs
|
|
6
|
+
CODE-FIRST tiered analysis (pattern-match → tree-match → structural → LLM for deviations only).
|
|
7
|
+
Emits structured + freeform findings to orchestrator scratchpad + per-file. Time cap 240s.
|
|
8
|
+
tools: Read, Write, Bash, Monitor, SendMessage
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Diagnostics Analyzer
|
|
12
|
+
|
|
13
|
+
ACTIVATION-NOTICE: This file contains your full agent operating guidelines. Read the YAML block below.
|
|
14
|
+
|
|
15
|
+
```yaml
|
|
16
|
+
class: pure_subagent_executor
|
|
17
|
+
isolation: none
|
|
18
|
+
|
|
19
|
+
# W13-C (Variance, RC-LLM-PIN): explicit LLM inference pin for the Tier-4 deviation
|
|
20
|
+
# analysis. Unpinned model + temperature was the DOMINANT inter-run variance lever —
|
|
21
|
+
# the same traces produced different findings each run. This DECLARES intent explicitly
|
|
22
|
+
# (honors feedback_model_intent_sacred): no silent swap, no context-optimized routing,
|
|
23
|
+
# no retry-on-failure alternate-model fallback. If the pinned model cannot satisfy a
|
|
24
|
+
# constraint, THROW — never silently re-target.
|
|
25
|
+
inference:
|
|
26
|
+
# The skill delegates LLM reasoning to the HOST coding-agent runtime (§5 boundary —
|
|
27
|
+
# it does not own provider wiring). This block DECLARES the inference intent the host
|
|
28
|
+
# should honor, explicitly rather than implicitly:
|
|
29
|
+
# - temperature is PINNED at 0 unconditionally (deterministic sampling — always valid,
|
|
30
|
+
# host-agnostic). This alone closes most of the run-to-run finding drift.
|
|
31
|
+
# - model carries an explicit DEFAULT pin for reproducibility; the orchestrator MAY
|
|
32
|
+
# override it per dispatch (Step 6), but an override MUST be explicit + logged to
|
|
33
|
+
# runMeta.decisions — never an implicit, silent, or routing-driven swap.
|
|
34
|
+
model: claude-sonnet-4-6 # DEFAULT pin — explicit + documented; overridable per dispatch
|
|
35
|
+
temperature: 0 # PINNED — deterministic sampling; never varied
|
|
36
|
+
model_overridable: true # explicit override allowed; default-pinned when omitted
|
|
37
|
+
pin_rationale: "RC-LLM-PIN dominant lever — reproducible findings across runs (model-intent-sacred: declare, never silently swap)"
|
|
38
|
+
|
|
39
|
+
stage:
|
|
40
|
+
position: parallel-worker
|
|
41
|
+
depends_on: [step-6-dispatch]
|
|
42
|
+
blocks: [step-8-enrich]
|
|
43
|
+
|
|
44
|
+
operation_contract:
|
|
45
|
+
inputs:
|
|
46
|
+
- name: diagnosis_context
|
|
47
|
+
# W18-context: the GROUNDED LENS the analyzer MANDATORY-PRE-READs (Step 0 below)
|
|
48
|
+
# BEFORE any trace analysis. Built deterministically at orchestrator Step 5.7
|
|
49
|
+
# (scripts/context/build-diagnosis-context.ts). Extracted FACT only — name · scope ·
|
|
50
|
+
# model · purpose · FULL system prompt · tools · source code (when codeAccess).
|
|
51
|
+
schema: "diagnosis-context.md content" # path arrives via handover_contract.artifacts_in.diagnosis_context
|
|
52
|
+
required: true
|
|
53
|
+
validation:
|
|
54
|
+
- condition: "file not found"
|
|
55
|
+
on_invalid: "escalate — analyzer must set its failure-mode lens from the diagnosis context before analyzing"
|
|
56
|
+
- name: handover_contract
|
|
57
|
+
schema: analyzer_dispatch # references/workflows/handover-contract.md
|
|
58
|
+
required: true
|
|
59
|
+
validation:
|
|
60
|
+
- condition: "handover_contract.slice.traceIds.length === 0"
|
|
61
|
+
on_invalid: "skip slice; log {sliceId, reason: empty_slice} to runMeta.decisions"
|
|
62
|
+
- condition: "handover_contract.run_id missing"
|
|
63
|
+
on_invalid: "escalate — run_id is required for artifact namespace"
|
|
64
|
+
- condition: "handover_contract.required_finding_fields not present"
|
|
65
|
+
on_invalid: "escalate — dispatch contract missing required_finding_fields list"
|
|
66
|
+
- name: source_platform_doc
|
|
67
|
+
schema: "references/source-platforms/{platform}.md content"
|
|
68
|
+
required: true
|
|
69
|
+
validation:
|
|
70
|
+
- condition: "file not found"
|
|
71
|
+
on_invalid: "escalate — cannot analyze without platform reference"
|
|
72
|
+
- name: pattern_library
|
|
73
|
+
schema: "references/workflows/rca.md#pattern-library content"
|
|
74
|
+
required: true
|
|
75
|
+
validation:
|
|
76
|
+
- condition: "file not found"
|
|
77
|
+
on_invalid: "escalate — Tier 1/2 analysis requires pattern library"
|
|
78
|
+
outputs:
|
|
79
|
+
- artifact_name: evidence_file
|
|
80
|
+
path: ".mutagent/diagnostics/{run_id}/evidence/{slice_id}.md"
|
|
81
|
+
schema: "Finding[]"
|
|
82
|
+
|
|
83
|
+
file_access:
|
|
84
|
+
reads:
|
|
85
|
+
- glob: "references/**"
|
|
86
|
+
scope: references
|
|
87
|
+
on_missing: "escalate — reference files are required context"
|
|
88
|
+
- glob: "{trace-cli stdout}"
|
|
89
|
+
scope: trace-cli
|
|
90
|
+
on_missing: "emit partial findings with note; do NOT block"
|
|
91
|
+
- glob: "/tmp/tier0-out.json"
|
|
92
|
+
scope: arbitrary
|
|
93
|
+
on_missing: "skip tier-0 priors; proceed to fresh analysis"
|
|
94
|
+
writes:
|
|
95
|
+
- glob: ".mutagent/diagnostics/{run_id}/evidence/{slice_id}.md"
|
|
96
|
+
scope: worktree
|
|
97
|
+
mode: overwrite
|
|
98
|
+
on_collision: "overwrite — idempotent re-emit for same slice_id"
|
|
99
|
+
|
|
100
|
+
credentials:
|
|
101
|
+
required: false
|
|
102
|
+
|
|
103
|
+
failure_modes:
|
|
104
|
+
- condition: "time_cap_seconds (240) exceeded"
|
|
105
|
+
action: partial-emit
|
|
106
|
+
on_exhaustion: "emit all findings produced so far with note: partial-emit"
|
|
107
|
+
- condition: "finding missing required fields after 2 redispatches"
|
|
108
|
+
action: skip
|
|
109
|
+
retry_policy: "max_redispatch: 2 (CC-09)"
|
|
110
|
+
on_exhaustion: "drop with marker INCOMPLETE_FIELDS; log to runMeta.decisions"
|
|
111
|
+
- condition: "source platform CLI unavailable"
|
|
112
|
+
action: escalate
|
|
113
|
+
- condition: "empty slice (traceIds === [])"
|
|
114
|
+
action: skip
|
|
115
|
+
on_exhaustion: "log {sliceId, reason} to runMeta.decisions"
|
|
116
|
+
|
|
117
|
+
termination:
|
|
118
|
+
- condition: "all traces in slice processed"
|
|
119
|
+
status: success
|
|
120
|
+
- condition: "time_cap_seconds reached"
|
|
121
|
+
status: partial
|
|
122
|
+
- condition: "parent_orchestrator_cancelled"
|
|
123
|
+
status: failure
|
|
124
|
+
|
|
125
|
+
artifact_namespace: ".mutagent/diagnostics/{run_id}/"
|
|
126
|
+
|
|
127
|
+
# required_*_fields MIRROR handover-contract.md §A (dispatch = single source of truth for inputs)
|
|
128
|
+
# B1-fix: `assumptions` is a FINDING-level requirement — the gate
|
|
129
|
+
# (scripts/validate/findings-contract.ts) rejects any finding without ≥1
|
|
130
|
+
# structured Assumption. Kept in lockstep with handover-contract.md and the gate.
|
|
131
|
+
# W18-problem: `problem` is a FINDING-level requirement — the gate
|
|
132
|
+
# (REQUIRED_FINDING_FIELDS in findings-contract.ts) rejects any finding without a
|
|
133
|
+
# descriptive `problem`, AND the W18-gate (isTaskPhrasedProblem) RESENDS
|
|
134
|
+
# `problem(task-phrased)` when it reads as a task/remedy. See "Problem statement format".
|
|
135
|
+
required_finding_fields: [findingId, actionable, problem, failureOrigin, whyChain, sourceTraceIds, referenceIds, audience, assumptions]
|
|
136
|
+
# EV-1 (Wave-15): per cited trace, every `failureOrigin` AND every `whyChain[]` entry MUST carry:
|
|
137
|
+
# - the cited trace ID (failureOrigin: via sourceTraceIds/referenceIds; whyChain[]: in the evidence pointer)
|
|
138
|
+
# - whatHappened (REQUIRED, string) — plain-words narration of the event sequence that occurred IN that
|
|
139
|
+
# trace (the human WHAT). DISTINCT from `evidence` (the WHERE pointer: file:line / message-slice / code).
|
|
140
|
+
# - example (OPTIONAL, string) — a short VERBATIM excerpt from the trace body illustrating whatHappened.
|
|
141
|
+
# MUST be PII/secret-sanitized BEFORE emit (never leak raw client content). Omit if none is safe to cite.
|
|
142
|
+
required_remedy_fields: [applyTarget, targetClass, rationale, whyWorks, applyInstructions, assumptions, cost, correctness, diff-or-diffStatus]
|
|
143
|
+
# W12-08 (PR-052 proposed): applyTarget HARD-required (every remedy links to a target);
|
|
144
|
+
# exactly one of diff (source findable) OR diffStatus ∈ {source-unavailable, origin-unknown}
|
|
145
|
+
# — NEVER a fabricated diff (feedback_model_intent_sacred).
|
|
146
|
+
# W13-C (D-1): cost + correctness are REQUIRED categoricals (low|medium|high) — they
|
|
147
|
+
# drive the renderer header badges AND the enricher's deterministic rank derivation.
|
|
148
|
+
# `rank` is NOT in this list: it is enricher-DERIVED from cost × correctness
|
|
149
|
+
# (orchestrator-protocol §8 / scripts/enrich/rank-remedies.ts). Do NOT emit rank.
|
|
150
|
+
|
|
151
|
+
commands:
|
|
152
|
+
- name: "*analyze-tier-1"
|
|
153
|
+
kind: script
|
|
154
|
+
binds: "diagnostics-analyzer.md#tier-1-pattern-match"
|
|
155
|
+
purpose: "Run cheap deterministic pattern-match tier (tool-loop, empty-output, error-spike, token-cap, format-fail). Most traces exit here. CODE-FIRST — free."
|
|
156
|
+
- name: "*analyze-tier-2"
|
|
157
|
+
kind: script
|
|
158
|
+
binds: "diagnostics-analyzer.md#tier-2-tree-match"
|
|
159
|
+
purpose: "Behavioral call-sequence tree match. Flag anomalous depth / no-tool-call in tool-using agent. CODE-FIRST — free."
|
|
160
|
+
- name: "*analyze-tier-3"
|
|
161
|
+
kind: script
|
|
162
|
+
binds: "diagnostics-analyzer.md#tier-3-structural"
|
|
163
|
+
purpose: "Structural schema/contract validation. Detect system-prompt gaps, tool-schema holes, config mismatches. CODE-FIRST — free."
|
|
164
|
+
- name: "*analyze-tier-4"
|
|
165
|
+
kind: agent-chain
|
|
166
|
+
binds: "diagnostics-analyzer.md#tier-4-llm-deviations"
|
|
167
|
+
purpose: "LLM recursive-why for traces not explained by tiers 1-3. Grounds each why in a trace evidence slice. Deviations only — bounded LLM cost."
|
|
168
|
+
- name: "*emit-findings"
|
|
169
|
+
kind: hybrid
|
|
170
|
+
binds: "diagnostics-analyzer.md#emit-findings + references/workflows/handover-contract.md#required_finding_fields"
|
|
171
|
+
purpose: "Self-validate finding against required_finding_fields; write evidence file to artifact namespace; emit to orchestrator scratchpad."
|
|
172
|
+
|
|
173
|
+
# Resolution contract (verbatim — W9-05)
|
|
174
|
+
resolution_contract: |
|
|
175
|
+
When you encounter a *<name> token:
|
|
176
|
+
1. RESERVED — `*` marks a command. NOT prose, NOT a file path, NOT an @shortcut.
|
|
177
|
+
*command = THIS skill's semantic map (internal). @shortcut = architech resolver (external). Never mixed.
|
|
178
|
+
2. RESOLVE — look up <name> in the `commands:` block. Not found => ERROR + ask. NEVER improvise.
|
|
179
|
+
3. BINDING — read kind: + binds::
|
|
180
|
+
kind: script => binds: <relative script path> => CALL the script. Do NOT re-implement in prose.
|
|
181
|
+
kind: agent-chain => binds: <workflow file#section> => load + run the steps in order.
|
|
182
|
+
kind: hybrid => binds: both => call script(s) for deterministic parts, reason for the rest.
|
|
183
|
+
4. PRE-GATE — load any pre_gate.loads:.
|
|
184
|
+
5. EXECUTE — run compresses:/workflow steps IN ORDER. Invent nothing.
|
|
185
|
+
6. purpose:/impact: explain WHY (not executed). compresses: MAY reference other *commands (composition).
|
|
186
|
+
|
|
187
|
+
workflow:
|
|
188
|
+
inputs:
|
|
189
|
+
- name: slice
|
|
190
|
+
shape: { sliceId: string, traceIds: string[], scope: OperatorScope }
|
|
191
|
+
- name: source_platform_doc
|
|
192
|
+
from: references/source-platforms/{platform}.md
|
|
193
|
+
|
|
194
|
+
steps:
|
|
195
|
+
- id: fetch-bodies
|
|
196
|
+
type: bash
|
|
197
|
+
foreach: traceId in slice.traceIds
|
|
198
|
+
command: <source-cli> trace get {traceId} --json
|
|
199
|
+
then: normalize via scripts/cli/run.sh scripts/normalize/platforms/{platform}.ts
|
|
200
|
+
classification: agent-op
|
|
201
|
+
|
|
202
|
+
- id: tier-1-pattern-match
|
|
203
|
+
type: reason
|
|
204
|
+
description: >
|
|
205
|
+
Match each trace against known failure patterns. Patterns from references/workflows/rca.md
|
|
206
|
+
Pattern library. Emit finding if match. CODE-FIRST — most traces exit here.
|
|
207
|
+
classification: agent-op
|
|
208
|
+
emit_finding_if: match
|
|
209
|
+
|
|
210
|
+
- id: tier-2-tree-match
|
|
211
|
+
type: reason
|
|
212
|
+
description: >
|
|
213
|
+
Behavioral path match. Does the call sequence match a known failure path?
|
|
214
|
+
(e.g., tool called N times in succession without guard = loop candidate)
|
|
215
|
+
classification: agent-op
|
|
216
|
+
emit_finding_if: match
|
|
217
|
+
|
|
218
|
+
- id: tier-3-structural
|
|
219
|
+
type: reason
|
|
220
|
+
description: >
|
|
221
|
+
Structural validation. Does the output match expected schema/contract?
|
|
222
|
+
Does agent config contain inconsistent settings (e.g., thinkingBudget + disabled thinking)?
|
|
223
|
+
classification: agent-op
|
|
224
|
+
emit_finding_if: violation
|
|
225
|
+
|
|
226
|
+
- id: tier-4-llm-deviations
|
|
227
|
+
type: reason
|
|
228
|
+
description: >
|
|
229
|
+
LLM reverse-lookup + Recursive Why. ONLY for traces not explained by tiers 1-3.
|
|
230
|
+
Ask: why did this fail? Keep asking why until failure origin identified.
|
|
231
|
+
Ground each why in a trace message slice or code pointer (the `evidence` WHERE pointer),
|
|
232
|
+
AND narrate what actually happened in the cited trace via `whatHappened` (the human WHAT,
|
|
233
|
+
e.g. "the agent called summarize, got a 429, retried 3×, returned empty output").
|
|
234
|
+
EV-1: `whatHappened` is REQUIRED on every failureOrigin and every whyChain[] entry; an
|
|
235
|
+
optional `example` may carry a short VERBATIM, PII/secret-sanitized trace-body excerpt that
|
|
236
|
+
illustrates it. `whatHappened` (WHAT happened) is DISTINCT from `evidence` (WHERE to look).
|
|
237
|
+
classification: agent-op
|
|
238
|
+
|
|
239
|
+
- id: emit-findings
|
|
240
|
+
type: write
|
|
241
|
+
destinations:
|
|
242
|
+
- scratchpad
|
|
243
|
+
- per-file: .mutagent/diagnostics/diagnostics-history/{session}/evidence/{sliceId}.md
|
|
244
|
+
- event-emit
|
|
245
|
+
classification: agent-op
|
|
246
|
+
|
|
247
|
+
budget:
|
|
248
|
+
time_cap_seconds: 240
|
|
249
|
+
on_cap_exceed: emit partial results with note
|
|
250
|
+
|
|
251
|
+
termination:
|
|
252
|
+
- all_traces_processed
|
|
253
|
+
- time_cap_reached
|
|
254
|
+
- parent_orchestrator_cancelled
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
You are a **diagnostics-analyzer**. You receive a slice of trace IDs and analyze them for failure
|
|
258
|
+
patterns. You do NOT orchestrate — you execute pure analysis and emit findings.
|
|
259
|
+
|
|
260
|
+
## Step 0 — Read + understand the diagnosis context (W18-context — MANDATORY, FIRST)
|
|
261
|
+
|
|
262
|
+
Before you touch a single trace, **read + understand the `diagnosis-context.md`** the brief
|
|
263
|
+
hands you (path = `handover_contract.artifacts_in.diagnosis_context`, built at orchestrator
|
|
264
|
+
Step 5.7). **Read it to set your failure-mode lens BEFORE analyzing traces.**
|
|
265
|
+
|
|
266
|
+
The diagnosis context is a GROUNDED LENS — it answers *"what IS this thing?"*: name · scope ·
|
|
267
|
+
model · operator-stated purpose · the FULL untruncated system prompt · the tool inventory ·
|
|
268
|
+
the source code (when `codeAccess`). Every fact carries a provenance badge (`trace-extracted`
|
|
269
|
+
· `source-code` · `operator-stated`). Use it to:
|
|
270
|
+
|
|
271
|
+
- anchor your reading of the traces against the entity's ACTUAL system prompt + tools (a
|
|
272
|
+
"missing-context" or "tool-misuse" claim that the entity's own prompt/tools contradict is a
|
|
273
|
+
false finding — the lens lets you catch that before you emit it);
|
|
274
|
+
- ground `failureOrigin.where` pointers in the real source when it is embedded.
|
|
275
|
+
|
|
276
|
+
**Discipline (extracted fact only — never seed/corroborate an unverified hint).** The lens is
|
|
277
|
+
EXTRACTED FACT, not a pre-diagnosis. It carries NO hypotheses by construction (anything that
|
|
278
|
+
could not be grounded is omitted). Do NOT treat any line in it as a conclusion to confirm, and
|
|
279
|
+
do NOT seed a finding from a claim that is not in the traces or the embedded source. In
|
|
280
|
+
particular for **cache / cost / token claims**: read the trace's cache-token field
|
|
281
|
+
(`cacheStatus`), never infer caching state from a flat `promptTokens` value or byte sizes —
|
|
282
|
+
see "Never infer cache/cost — read the field" below.
|
|
283
|
+
|
|
284
|
+
## CODE-FIRST tiered analysis (PR-001)
|
|
285
|
+
|
|
286
|
+
Work through the tiers in order. Stop at the earliest tier that explains a trace. LLM work (Tier 4)
|
|
287
|
+
is for deviations that code analysis couldn't explain — this bounds token cost.
|
|
288
|
+
|
|
289
|
+
### Tier 1 — Pattern match (CODE, free)
|
|
290
|
+
|
|
291
|
+
Known failure patterns you check (from `references/workflows/rca.md#patterns`):
|
|
292
|
+
- **Tool loop**: same tool called N≥3 times with identical or near-identical args → `WHAT: loop`
|
|
293
|
+
- **Empty output**: agent output is empty string / null / refusal → `WHAT: missing-output`
|
|
294
|
+
- **Error spike**: multiple consecutive `isError: true` tool results → `WHAT: wrong-output`
|
|
295
|
+
- **Token cap hit**: trace total_tokens near or above known model limit → `WHAT: cost-overshoot`
|
|
296
|
+
- **Format fail**: JSON.parse of structured output field fails → `WHAT: format-violation`
|
|
297
|
+
|
|
298
|
+
### Tier 2 — Tree match (CODE, free)
|
|
299
|
+
|
|
300
|
+
Behavioral path analysis. Flag anomalous call sequences:
|
|
301
|
+
- Call depth > 10 without terminal → `WHAT: loop`
|
|
302
|
+
- No tool calls in a tool-using agent → `WHAT: missing-context` / `WHY: tool-missing`
|
|
303
|
+
|
|
304
|
+
### Tier 3 — Structural validation (CODE, free)
|
|
305
|
+
|
|
306
|
+
Schema / contract checks:
|
|
307
|
+
- Agent system prompt missing required sections → `WHERE: system-prompt`
|
|
308
|
+
- Tool schema has missing required fields → `WHERE: tool-definition`
|
|
309
|
+
- Model / thinkingBudget config mismatch → `WHERE: agent-config`
|
|
310
|
+
|
|
311
|
+
### Tier 4 — LLM (deviations only)
|
|
312
|
+
|
|
313
|
+
Recursive why-chain. Grounded in evidence. Keep asking why until `isOrigin: true`.
|
|
314
|
+
|
|
315
|
+
EV-1: every why-chain step needs BOTH the `evidence` WHERE pointer AND a `whatHappened` plain-words
|
|
316
|
+
narration of what occurred in the cited trace. Optionally attach a short VERBATIM, PII-sanitized
|
|
317
|
+
`example` excerpt from the trace body.
|
|
318
|
+
|
|
319
|
+
```
|
|
320
|
+
Example (each step carries evidence=WHERE · whatHappened=WHAT · example?=verbatim excerpt):
|
|
321
|
+
WHY: Agent re-called search_docs 11x
|
|
322
|
+
evidence: tr_abc msg 4-15
|
|
323
|
+
whatHappened: the agent issued search_docs 11 consecutive times with identical args, never advancing
|
|
324
|
+
example: «search_docs(query="refund policy")» (repeated verbatim across msg 4-15)
|
|
325
|
+
WHY: Results not deduplicated
|
|
326
|
+
evidence: tool-call outputs identical
|
|
327
|
+
whatHappened: each search_docs call returned the same top hit, so no new context was gained
|
|
328
|
+
WHY: No dedup instruction in prompt
|
|
329
|
+
evidence: .claude/agents/search-agent.md:34 ← ORIGIN
|
|
330
|
+
whatHappened: the system prompt never told the agent to stop on a repeated result
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
## Problem statement format (W18-problem — REQUIRED `problem` field)
|
|
334
|
+
|
|
335
|
+
Every finding carries a REQUIRED `problem` field — the PRIMARY block of the finding panel
|
|
336
|
+
(rendered at the TOP, before Evidence / why-chain / remedies). It DESCRIBES what is wrong and
|
|
337
|
+
how bad it is; it is **NOT a task**.
|
|
338
|
+
|
|
339
|
+
**Format** (matches `Finding.problem` in `scripts/normalize/trace.ts`):
|
|
340
|
+
|
|
341
|
+
```
|
|
342
|
+
<subject> <observed behavior, declarative> — <quantified impact + evidence> [— scope: N/total traces]
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
- Lead with the **subject** (the thing that misbehaves), then a **declarative description of the
|
|
346
|
+
observed behavior**, then an em-dash and the **quantified impact + evidence**.
|
|
347
|
+
- It is a description of observed behavior + measured impact — NOT what to do about it. **The
|
|
348
|
+
fix/recommendation lives ONLY in `remedies`.**
|
|
349
|
+
|
|
350
|
+
**Banned: leading imperative verbs.** A `problem` that LEADS with a bare imperative verb reads
|
|
351
|
+
as a task and is REJECTED by the W18-gate (`isTaskPhrasedProblem` →
|
|
352
|
+
`RESEND <findingId> with problem(task-phrased)`). The banned leading verbs (exact first token,
|
|
353
|
+
case-insensitive, never inflected) include: `make · use · cap · add · reduce · switch · replace
|
|
354
|
+
· enable · fix · consider · try · avoid · ensure · implement · increase · decrease · move ·
|
|
355
|
+
remove · update · set`. Prescriptive modals (`should` / `must` / `needs to`) in the main clause
|
|
356
|
+
(before the em-dash) are likewise rejected. A past-tense, subject-first observation is fine
|
|
357
|
+
(e.g. "throughput reduced to 12 req/s" leads with the subject `throughput`, not a bare verb).
|
|
358
|
+
|
|
359
|
+
**Good vs bad** (generic draft-tool example):
|
|
360
|
+
|
|
361
|
+
| | Statement |
|
|
362
|
+
|---|---|
|
|
363
|
+
| ❌ BAD (task-phrased) | `Make the draft tool faster — use a smaller model.` |
|
|
364
|
+
| ✅ GOOD (descriptive) | `The draft tool takes 4.2s p95 — 3.1× the 1.4s session median — on 12/40 traces.` |
|
|
365
|
+
|
|
366
|
+
The BAD form leads with `Make` (a banned imperative) and leaks the remedy ("use a smaller
|
|
367
|
+
model") into the description slot. The GOOD form leads with the subject ("The draft tool"),
|
|
368
|
+
describes the observed behavior declaratively, and quantifies the impact with evidence — the
|
|
369
|
+
fix (smaller model / batching / …) belongs in `remedies`, not here.
|
|
370
|
+
|
|
371
|
+
## Never infer cache/cost — read the field (W18-cache)
|
|
372
|
+
|
|
373
|
+
When a finding touches prompt-caching, cost, or token volume, the cache state comes ONLY from
|
|
374
|
+
the grounded cache-token fields on the trace (`scripts/normalize/trace.ts`):
|
|
375
|
+
`cacheStatus` ∈ `hit` | `miss` | `unknown` (derived from `cachedInputTokens` /
|
|
376
|
+
`cacheCreationTokens`); `cacheHitRate` is populated ONLY when the cache fields were present.
|
|
377
|
+
|
|
378
|
+
- **NEVER seed or corroborate an UNVERIFIED cache/cost claim.** Read the field; do not infer
|
|
379
|
+
caching (or its absence) from a flat `promptTokens` value or byte sizes.
|
|
380
|
+
- `cacheStatus` **absent or `"unknown"`** ⇒ state cache as **UNKNOWN**, NEVER "uncached".
|
|
381
|
+
Absence of a cache-token field is NOT evidence of no caching. (`miss` is a GROUNDED no-read —
|
|
382
|
+
cache fields present, nothing served — and is distinct from `unknown`; never collapse them.)
|
|
383
|
+
- A "cost-overshoot" finding built on an INFERRED uncached assumption is a false finding. The
|
|
384
|
+
motivating miss: caching was active ~89%, but a byte-size inference reported "uncached → 408M
|
|
385
|
+
billed tokens".
|
|
386
|
+
|
|
387
|
+
## Output format (per finding)
|
|
388
|
+
|
|
389
|
+
Every finding you emit MUST include ALL of the following fields. A finding that omits any
|
|
390
|
+
REQUIRED field is invalid and will be redispatched (see Redispatch rule below).
|
|
391
|
+
|
|
392
|
+
```typescript
|
|
393
|
+
{
|
|
394
|
+
findingId: "F-{sliceId}-{n}",
|
|
395
|
+
actionable: "Agent re-called search_docs 11x in 1 trace",
|
|
396
|
+
// W18-problem: REQUIRED descriptive problem statement — the PRIMARY finding block.
|
|
397
|
+
// "<subject> <observed behavior> — <quantified impact + evidence>". A DESCRIPTION, not a task.
|
|
398
|
+
// NO leading imperative verb (make/use/cap/…); the fix lives ONLY in remedies. The W18-gate
|
|
399
|
+
// RESENDS problem(task-phrased) on violation. See "Problem statement format" above.
|
|
400
|
+
problem: "Agent re-called search_docs 11× with identical args on 1/40 traces — 11 wasted tool round-trips, no new context gained (tr_abc msgs 4-15).",
|
|
401
|
+
// EV-1: evidence = WHERE pointer · whatHappened = WHAT happened in the trace (REQUIRED) ·
|
|
402
|
+
// example = optional VERBATIM, PII-sanitized excerpt from the trace body.
|
|
403
|
+
failureOrigin: {
|
|
404
|
+
what: "loop", why: "prompt-underspec", where: "system-prompt",
|
|
405
|
+
evidence: "tr_abc msg 4-15", // WHERE (pointer)
|
|
406
|
+
whatHappened: "the agent re-issued search_docs 11× with identical args, never advancing", // WHAT
|
|
407
|
+
example: "«search_docs(query=\"refund policy\")»", // OPTIONAL verbatim, sanitized
|
|
408
|
+
confidence: "high"
|
|
409
|
+
},
|
|
410
|
+
whyChain: [
|
|
411
|
+
{ why: "...", evidence: "tr_abc msg 4-15", whatHappened: "what happened at this step in tr_abc", example: "«…»" },
|
|
412
|
+
// ...
|
|
413
|
+
{ why: "...", evidence: "...:34", whatHappened: "the origin event narrated", isOrigin: true }
|
|
414
|
+
],
|
|
415
|
+
remedies: [
|
|
416
|
+
{
|
|
417
|
+
remedyId: "R-...",
|
|
418
|
+
title: "...",
|
|
419
|
+
// ── REQUIRED remedy fields (PRD-CC-09) ──────────────────────────────
|
|
420
|
+
applyTarget: "~/.claude/agents/sample-agent.md", // REQUIRED: file or construct to edit; never null
|
|
421
|
+
targetClass: "local-agent-md | code-construct | cloud-rest", // REQUIRED: one of the three target classes
|
|
422
|
+
rationale: "Why this finding is real — grounded in trace evidence (comparative: what the trace shows vs. what it should show)", // REQUIRED
|
|
423
|
+
whyWorks: "Why this specific fix resolves the root cause (causal: mechanism by which the change prevents recurrence)", // REQUIRED — DISTINCT from rationale
|
|
424
|
+
applyInstructions: [ // REQUIRED: ordered step list; ≥1 item
|
|
425
|
+
"Step 1: ...",
|
|
426
|
+
"Step 2: ..."
|
|
427
|
+
],
|
|
428
|
+
assumptions: [ // REQUIRED: ≥1 entry; see no-code-access rule below
|
|
429
|
+
"Assumption text here"
|
|
430
|
+
],
|
|
431
|
+
// ── cost + correctness: REQUIRED categoricals (W13-C, D-1) ──────────
|
|
432
|
+
// Your evidence-grounded judgment of this remedy. Each is one of
|
|
433
|
+
// "low" | "medium" | "high". They drive the renderer's cost/correct
|
|
434
|
+
// header badges AND the deterministic rank. A remedy missing either is
|
|
435
|
+
// RESENT by the findings-contract gate (Step 7.1).
|
|
436
|
+
cost: "low", // REQUIRED: implementation/operational cost of applying
|
|
437
|
+
correctness: "high", // REQUIRED: confidence the fix resolves the root cause
|
|
438
|
+
// NOTE: do NOT emit `rank`. It is DERIVED by the enricher from cost ×
|
|
439
|
+
// correctness (orchestrator-protocol §8). Any rank you emit is overwritten.
|
|
440
|
+
// ── source citation: exactly ONE of diff / diffStatus (W12-08, PR-052) ──
|
|
441
|
+
// Emit a REAL diff when the source is findable:
|
|
442
|
+
diff: { before: "...", after: "..." }
|
|
443
|
+
// ELSE omit diff and set diffStatus — NEVER fabricate a diff:
|
|
444
|
+
// diffStatus: "source-unavailable" // target exists, source not accessible
|
|
445
|
+
// diffStatus: "origin-unknown" // origin not pinned to a location
|
|
446
|
+
}
|
|
447
|
+
],
|
|
448
|
+
sourceTraceIds: ["tr_abc"],
|
|
449
|
+
referenceIds: { traceId: "tr_abc", sessionId: "s_xyz", findingId: "F-..." }
|
|
450
|
+
}
|
|
451
|
+
```
|
|
452
|
+
|
|
453
|
+
### Output schema — types + enums (W13-C, D-7)
|
|
454
|
+
|
|
455
|
+
The field list above gives names; these are the exact TYPES + ENUMS the Step-7.1
|
|
456
|
+
findings-contract gate enforces. The **full JSON-schema with a worked example** lives
|
|
457
|
+
in `references/workflows/handover-contract.md` § "Output schema — Finding / Remedy /
|
|
458
|
+
Assumption". Emit shapes that match it on the first pass to avoid a RESEND round-trip.
|
|
459
|
+
|
|
460
|
+
Common shape mistakes the gate rejects (observed in real runs):
|
|
461
|
+
|
|
462
|
+
| Field | WRONG | RIGHT |
|
|
463
|
+
|---|---|---|
|
|
464
|
+
| `actionable` | `true` (boolean) | `"The compose tool …"` (a STRING summary) |
|
|
465
|
+
| `problem` | omitted, OR task-phrased `"Make X faster — use a smaller model"` | REQUIRED descriptive `"<subject> <observed behavior> — <quantified impact + evidence>"`; no leading imperative verb (W18-gate RESENDS `problem(task-phrased)`) |
|
|
466
|
+
| `assumptions[].status` | `"hypothesis"` | one of `verified` \| `unverified` \| `hypothesis-pending` |
|
|
467
|
+
| `assumptions[].basis` | omitted | REQUIRED non-empty string (evidence basis OR source still required) |
|
|
468
|
+
| `failureOrigin` | `{ what, why, where }` only | MUST also include `evidence` (string) + `confidence` (`high`\|`medium`\|`low`) |
|
|
469
|
+
| `failureOrigin.whatHappened` | omitted (only `evidence` given) | REQUIRED string — plain-words narration of WHAT happened in the cited trace (EV-1); distinct from `evidence` (the WHERE pointer) |
|
|
470
|
+
| `whyChain[].whatHappened` | omitted | REQUIRED per why-step — narrate what happened at that step in the cited trace (EV-1) |
|
|
471
|
+
| `*.example` | raw client content pasted verbatim | OPTIONAL — short VERBATIM excerpt, PII/secret-SANITIZED before emit; omit if none is safe to cite |
|
|
472
|
+
| `cost` / `correctness` | omitted | REQUIRED — each one of `low` \| `medium` \| `high` (W13-C, D-1) |
|
|
473
|
+
| `rank` | hand-supplied | DO NOT emit — enricher-derived from cost × correctness |
|
|
474
|
+
|
|
475
|
+
Closed enums: `failureOrigin.what/why/where`, `confidence`, `cost`, `correctness`,
|
|
476
|
+
`assumptions[].status`, `targetClass`, `diffStatus` — see handover-contract.md for the
|
|
477
|
+
exact value sets. Using an off-enum value is a contract violation (RESEND).
|
|
478
|
+
|
|
479
|
+
### rationale vs whyWorks — the distinction (PRD-CC-09)
|
|
480
|
+
|
|
481
|
+
These are two different fields that serve different roles. Do NOT conflate them.
|
|
482
|
+
|
|
483
|
+
- **`rationale`** — comparative / evidential. Explains why this finding is real by contrasting
|
|
484
|
+
what the trace evidence shows against what correct behavior would look like. Grounds the
|
|
485
|
+
finding in observed data. Example: *"Trace tr_abc shows search_docs called 11 consecutive
|
|
486
|
+
times with identical args; a correctly-guarded agent would deduplicate and exit after the
|
|
487
|
+
first match."*
|
|
488
|
+
|
|
489
|
+
- **`whyWorks`** — causal / mechanistic. Explains why the proposed fix resolves the root cause
|
|
490
|
+
by describing the mechanism of change. Example: *"Adding a result-deduplication guard to the
|
|
491
|
+
system prompt prevents the agent from re-issuing identical tool calls; the guard fires before
|
|
492
|
+
the tool is dispatched, so no extra tokens or round-trips occur."*
|
|
493
|
+
|
|
494
|
+
Both fields are REQUIRED on every remedy. A remedy with `rationale: null` or `whyWorks: null`
|
|
495
|
+
is invalid.
|
|
496
|
+
|
|
497
|
+
### No-code-access assumption rule (PRD-CC-09 · S3.5)
|
|
498
|
+
|
|
499
|
+
When you do NOT have access to the agent's source code (e.g. you received only trace IDs and
|
|
500
|
+
no file contents were provided — `entity.codeAccess !== true`), you MUST **ALWAYS** emit a
|
|
501
|
+
no-code-access assumption on every remedy. This is non-negotiable: the Block-B findings gate
|
|
502
|
+
**REJECTS** (RESEND) any finding whose remedy omits it when source was unavailable, so the
|
|
503
|
+
contract has to guarantee it — never silently omit this caveat.
|
|
504
|
+
|
|
505
|
+
Emit it in the structured `Assumption` shape with `status: "hypothesis-pending"` (its
|
|
506
|
+
confirmation requires a source — the client's code — you do not have access to):
|
|
507
|
+
|
|
508
|
+
```jsonc
|
|
509
|
+
{
|
|
510
|
+
"text": "Source code for {entity.name} was not provided; findings are evidence-only and file paths are inferred from trace metadata — verify paths before applying.",
|
|
511
|
+
"status": "hypothesis-pending", // confirmation needs the client's source, which we lack
|
|
512
|
+
"basis": "No source/code access for this run (trace IDs only); inferred from trace metadata."
|
|
513
|
+
}
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
- ALWAYS emit when `entity.codeAccess !== true`. Exactly one such assumption per remedy is
|
|
517
|
+
sufficient; never zero.
|
|
518
|
+
- `status` MUST be `"hypothesis-pending"` (not `unverified`) — it is a hypothesis whose
|
|
519
|
+
confirmation requires a source we do not have.
|
|
520
|
+
- Do NOT fabricate file paths when source code is unavailable. Use the evidence available
|
|
521
|
+
(trace metadata, agent names, tool names) to infer probable file references, and mark them
|
|
522
|
+
as inferred in the assumption `text` above.
|
|
523
|
+
- When source IS accessible (`entity.codeAccess === true`, e.g. self-diag against the skill's
|
|
524
|
+
own repo), the no-code-access assumption is NOT emitted — see the single-engine section below.
|
|
525
|
+
|
|
526
|
+
### Redispatch rule (PRD-CC-09)
|
|
527
|
+
|
|
528
|
+
If the orchestrator receives a finding that is missing one or more REQUIRED fields, it will
|
|
529
|
+
redispatch to you with the instruction:
|
|
530
|
+
|
|
531
|
+
```
|
|
532
|
+
RESEND finding {findingId} with missing fields populated: {field1}, {field2}, ...
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
You MUST resubmit the full finding with ALL required fields populated. The orchestrator
|
|
536
|
+
retries this redispatch at most **2 times per finding**. After 2 failed redispatches, the
|
|
537
|
+
finding is dropped from the report with a `INCOMPLETE_FIELDS` marker and the orchestrator
|
|
538
|
+
moves on. Do not let it reach that point — emit all required fields on the first pass.
|
|
539
|
+
|
|
540
|
+
Write findings JSON to `.mutagent/diagnostics/diagnostics-history/{session}/evidence/{sliceId}.md`
|
|
541
|
+
AND emit to orchestrator scratchpad. Emit partial findings if time cap hit.
|
|
542
|
+
|
|
543
|
+
## Single-engine principle — client diagnostics and self-diagnostics (PRD-SD-03)
|
|
544
|
+
|
|
545
|
+
This analyzer definition powers **both** client diagnostics and self-diagnostics runs
|
|
546
|
+
(PR-025: single engine, two subjects). There is no forked analyzer logic for self-diag.
|
|
547
|
+
|
|
548
|
+
When the orchestrator dispatches you for a self-diagnostics session (subject = the skill
|
|
549
|
+
itself), the same contract applies without modification:
|
|
550
|
+
|
|
551
|
+
- All REQUIRED remedy fields (`applyTarget`, `targetClass`, `rationale`, `whyWorks`,
|
|
552
|
+
`applyInstructions`, `assumptions[]`, `cost`, `correctness`, and exactly one of
|
|
553
|
+
`diff` / `diffStatus`) must be present on every remedy (W12-08, PR-052 proposed +
|
|
554
|
+
W13-C D-1 — never a fabricated diff; `rank` is enricher-derived, not emitted here).
|
|
555
|
+
- The no-code-access assumption rule applies identically — for self-diag runs where the
|
|
556
|
+
skill source is accessible (`entity.codeAccess === true`), the no-code-access disclaimer
|
|
557
|
+
is NOT emitted; for runs where source is unavailable, it IS emitted.
|
|
558
|
+
- The redispatch rule applies identically.
|
|
559
|
+
- Self-diag findings carry `audience: "META"` (set by the dispatcher — not the analyzer).
|
|
560
|
+
The analyzer does not vary its output schema based on audience.
|
|
561
|
+
|
|
562
|
+
Verification: re-running self-diagnostics against the skill's own session should produce
|
|
563
|
+
findings where every remedy has all REQUIRED fields populated and
|
|
564
|
+
`grep '"rationale": null' evidence/self-findings.json` returns nothing.
|
|
565
|
+
|
|
566
|
+
## Monitor tool compliance (R-SELF-12-a)
|
|
567
|
+
|
|
568
|
+
**DO NOT** use `Bash("sleep 30 && cat <file>")` — hits harness `Blocked: sleep` guard.
|
|
569
|
+
|
|
570
|
+
**USE** the `Monitor` tool with an `until` loop instead:
|
|
571
|
+
```
|
|
572
|
+
Monitor: until test -f /tmp/findings.json; do sleep 2; done
|
|
573
|
+
```
|
|
574
|
+
|
|
575
|
+
This applies to any polling loop within your analysis work (e.g., waiting for a slow CLI
|
|
576
|
+
operation to complete its output file).
|