@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
package/mutagent-diagnostics/.claude/skills/mutagent-diagnostics/scripts/sample/deep-read-gate.ts
ADDED
|
@@ -0,0 +1,424 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* scripts/sample/deep-read-gate.ts
|
|
3
|
+
* R2.1 + W9-07/W9-09 — mandatory LLM deep-read REFUSAL predicate + auto-expand +
|
|
4
|
+
* too-thin guard.
|
|
5
|
+
* Type A — Pure Script (deterministic; NO clock/random/LLM/I-O).
|
|
6
|
+
*
|
|
7
|
+
* THE CORE R2.1 INVARIANT: a fresh run that read ZERO traces with the LLM and has
|
|
8
|
+
* NO prior signals to lean on MUST be REFUSED. Tier-0 alone can only MEASURE cheap
|
|
9
|
+
* signals (latency, error counts) — shipping a diagnosis off Tier-0 only is the
|
|
10
|
+
* exact methodology blind-spot Wave-6 fixes. Fail-loud, never graceful-degrade.
|
|
11
|
+
*
|
|
12
|
+
* REFUSE ⟺ llmReadCount === 0 && !priorSignalsRef
|
|
13
|
+
* - llmReadCount: traces actually deep-read by the LLM this run.
|
|
14
|
+
* - priorSignalsRef (R2.3): a reference into the class-memory library. When a
|
|
15
|
+
* prior signal record exists for this entity, the refusal is DOWNGRADED to a
|
|
16
|
+
* proceed-with-note (library priors substitute for a fresh deep-read).
|
|
17
|
+
*
|
|
18
|
+
* --focus runs (R2.6) BYPASS the auto-pick but NOT the floor/caps and NOT this
|
|
19
|
+
* refusal — a focused run with zero LLM reads and no priors is still refused.
|
|
20
|
+
*
|
|
21
|
+
* AUTO-EXPAND: when the representativeness confidence (R2.5) is below 70%, the
|
|
22
|
+
* sampler should auto-expand the deep-read sample (pull more traces, re-prove)
|
|
23
|
+
* UNLESS a cap already tripped. This module only decides; the caller acts.
|
|
24
|
+
*
|
|
25
|
+
* W9-07/W9-09 TOO-THIN GUARD: when population >= 1000 AND llmReadCount < 100, the
|
|
26
|
+
* verdict carries a `tooThin: true` marker (laziness violation, R-AL-2). The run is
|
|
27
|
+
* NOT refused (the existing zero-refuse spirit is preserved) but the renderer MUST
|
|
28
|
+
* surface a warning banner. A `coverageWarning` string is also populated.
|
|
29
|
+
*
|
|
30
|
+
* W17-D2 SELF-DIAG EXEMPTION: the default self-diag mode reads the single ongoing
|
|
31
|
+
* session (1 session = 1 trace). A population-coverage too-thin banner there is
|
|
32
|
+
* meaningless, so `isSelfDiagSingleSession` SUPPRESSES the banner (records
|
|
33
|
+
* `tooThinExempted: true` for the audit trail). The exemption is for the
|
|
34
|
+
* single-session DEFAULT only — self-diag may target many sessions on request, in
|
|
35
|
+
* which case the caller does NOT set the flag and the banner fires normally.
|
|
36
|
+
*
|
|
37
|
+
* W17-D2 SELECTION-LEVEL DISCOVERY (BLOCK D2): the R2.1 "must deep-read" invariant
|
|
38
|
+
* is also enforced at the SELECTION path (not just report-level). Before PRIMARY
|
|
39
|
+
* selection (PR-049), when an entity has NO prior findings AND NO valid ledger
|
|
40
|
+
* digests, a deep-read discovery pass is MANDATORY — selection off Tier-0 frequency
|
|
41
|
+
* alone is forbidden. See evaluateSelectionDiscoveryGate(). Fail-loud (PR-035).
|
|
42
|
+
*/
|
|
43
|
+
|
|
44
|
+
export interface DeepReadGateInput {
|
|
45
|
+
/** Traces deep-read by the LLM this run (includes awareness-layer traces). */
|
|
46
|
+
llmReadCount: number;
|
|
47
|
+
/** R2.3 — a reference into the class-memory library, when priors exist. */
|
|
48
|
+
priorSignalsRef?: string;
|
|
49
|
+
/** R2.6 — true when the operator scoped the run with --focus. */
|
|
50
|
+
isFocusRun?: boolean;
|
|
51
|
+
/**
|
|
52
|
+
* W9-07/W9-09: Total traces in scope for this run.
|
|
53
|
+
* Required for the too-thin guard (population >= 1000 && llmReadCount < 100).
|
|
54
|
+
* When absent, the guard is skipped (backward-compatible).
|
|
55
|
+
*/
|
|
56
|
+
population?: number;
|
|
57
|
+
/**
|
|
58
|
+
* W17-D2 (operator self-diag exemption): true when this run is a single-session
|
|
59
|
+
* self-diagnosis — the default self-diag mode reads the single ongoing session
|
|
60
|
+
* (1 session = 1 trace), where a too-thin "you only read N of a large stack"
|
|
61
|
+
* banner is meaningless (the stack IS one session by design). When true, the
|
|
62
|
+
* too-thin banner is EXEMPTED (suppressed) even on a nominally large population.
|
|
63
|
+
*
|
|
64
|
+
* Self-diag MAY target many sessions on request; this exemption is for the
|
|
65
|
+
* single-session DEFAULT only — callers set it explicitly, it never auto-fires.
|
|
66
|
+
* Refusal (R2.1) and selection-level discovery (BLOCK D2) are NOT exempted —
|
|
67
|
+
* only the population-coverage too-thin warning.
|
|
68
|
+
*/
|
|
69
|
+
isSelfDiagSingleSession?: boolean;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export type DeepReadVerdict = "refuse" | "proceed" | "proceed-with-priors";
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* W9-07/W9-09: Minimum LLM read count for a large stack (population >= 1000).
|
|
76
|
+
* A run on a large stack that reads fewer traces than this is flagged as too-thin.
|
|
77
|
+
* R-AL-2: a 2K-trace run stopping at < 100 is a laziness violation.
|
|
78
|
+
*/
|
|
79
|
+
export const TOO_THIN_THRESHOLD = 100;
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* W9-07/W9-09: Minimum population size that activates the too-thin guard.
|
|
83
|
+
* Stacks below this threshold are considered small and exempt from the guard.
|
|
84
|
+
*/
|
|
85
|
+
export const TOO_THIN_POPULATION_MIN = 1000;
|
|
86
|
+
|
|
87
|
+
export interface DeepReadGateResult {
|
|
88
|
+
verdict: DeepReadVerdict;
|
|
89
|
+
/** True when the run must be REFUSED (verdict === "refuse"). */
|
|
90
|
+
refused: boolean;
|
|
91
|
+
/** Operator-facing explanation (rendered as a banner when refused). */
|
|
92
|
+
reason: string;
|
|
93
|
+
/**
|
|
94
|
+
* W9-07/W9-09: True when the run has a large stack (population >= 1000) but
|
|
95
|
+
* read fewer than TOO_THIN_THRESHOLD traces. Laziness violation (R-AL-2).
|
|
96
|
+
* Never causes a refusal — this is a warning flag only. The renderer MUST
|
|
97
|
+
* surface a banner when this is true.
|
|
98
|
+
*/
|
|
99
|
+
tooThin?: boolean;
|
|
100
|
+
/**
|
|
101
|
+
* W9-07/W9-09: Human-readable coverage warning for the renderer.
|
|
102
|
+
* Populated when tooThin === true. Absent otherwise.
|
|
103
|
+
*/
|
|
104
|
+
coverageWarning?: string;
|
|
105
|
+
/**
|
|
106
|
+
* W17-D2: true when the too-thin guard WOULD have fired (large population, thin
|
|
107
|
+
* reads) but was EXEMPTED because this is a single-session self-diag run. Lets the
|
|
108
|
+
* caller log "exemption applied" without re-deriving the condition. Absent when no
|
|
109
|
+
* exemption was needed (guard didn't trip, or population is small/absent).
|
|
110
|
+
*/
|
|
111
|
+
tooThinExempted?: boolean;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* R2.1 refusal predicate (W9-07/W9-09 extended with too-thin guard).
|
|
116
|
+
* Pure boolean logic over the gate input.
|
|
117
|
+
*
|
|
118
|
+
* llmReadCount === 0 && !priorSignalsRef → REFUSE
|
|
119
|
+
* llmReadCount === 0 && priorSignalsRef present → proceed-with-priors
|
|
120
|
+
* llmReadCount > 0 → proceed
|
|
121
|
+
*
|
|
122
|
+
* --focus does NOT exempt a run from refusal (it only bypasses signal auto-pick).
|
|
123
|
+
*
|
|
124
|
+
* W9-07/W9-09 too-thin guard (applied to non-refused verdicts):
|
|
125
|
+
* population >= TOO_THIN_POPULATION_MIN && llmReadCount < TOO_THIN_THRESHOLD
|
|
126
|
+
* → verdict carries tooThin:true + coverageWarning (never causes a refusal).
|
|
127
|
+
*/
|
|
128
|
+
export function evaluateDeepReadGate(input: DeepReadGateInput): DeepReadGateResult {
|
|
129
|
+
const { llmReadCount, priorSignalsRef, population, isSelfDiagSingleSession } = input;
|
|
130
|
+
|
|
131
|
+
// W9-07/W9-09: compute the RAW too-thin condition before any early returns.
|
|
132
|
+
const tooThinRaw =
|
|
133
|
+
typeof population === "number" &&
|
|
134
|
+
population >= TOO_THIN_POPULATION_MIN &&
|
|
135
|
+
llmReadCount < TOO_THIN_THRESHOLD;
|
|
136
|
+
|
|
137
|
+
// W17-D2 operator exemption: a single-session self-diag run reads the single
|
|
138
|
+
// ongoing session (1 session = 1 trace) by design, so a population-coverage
|
|
139
|
+
// too-thin banner is meaningless there. Suppress the banner but record that the
|
|
140
|
+
// exemption was applied so the decision stays auditable. The exemption ONLY
|
|
141
|
+
// touches the too-thin warning — never the R2.1 refusal or BLOCK D2 discovery.
|
|
142
|
+
const tooThinExempted = tooThinRaw && isSelfDiagSingleSession === true;
|
|
143
|
+
const tooThinFlag = tooThinRaw && !tooThinExempted;
|
|
144
|
+
|
|
145
|
+
const tooThinWarning = tooThinFlag
|
|
146
|
+
? `⚠ TOO-THIN: population=${population} but only ${llmReadCount} trace(s) LLM-read ` +
|
|
147
|
+
`(< ${TOO_THIN_THRESHOLD} required for stacks ≥ ${TOO_THIN_POPULATION_MIN}). ` +
|
|
148
|
+
`Laziness violation (R-AL-2 / PR-048). Surface this banner in the report header.`
|
|
149
|
+
: undefined;
|
|
150
|
+
|
|
151
|
+
// Shared too-thin fragment merged into every non-... verdict below.
|
|
152
|
+
const tooThinFields = {
|
|
153
|
+
...(tooThinFlag ? { tooThin: true, coverageWarning: tooThinWarning } : {}),
|
|
154
|
+
...(tooThinExempted ? { tooThinExempted: true } : {}),
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
if (llmReadCount > 0) {
|
|
158
|
+
return {
|
|
159
|
+
verdict: "proceed",
|
|
160
|
+
refused: false,
|
|
161
|
+
reason: `Deep-read satisfied — ${llmReadCount} trace(s) LLM-read this run.`,
|
|
162
|
+
...tooThinFields,
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// llmReadCount === 0 from here.
|
|
167
|
+
if (priorSignalsRef && priorSignalsRef.trim().length > 0) {
|
|
168
|
+
return {
|
|
169
|
+
verdict: "proceed-with-priors",
|
|
170
|
+
refused: false,
|
|
171
|
+
reason:
|
|
172
|
+
`No fresh LLM deep-read, but class-memory priors exist (${priorSignalsRef}). ` +
|
|
173
|
+
`Proceeding on library priors (R2.3). Refusal downgraded.`,
|
|
174
|
+
// Zero reads always means no fresh coverage; on large stacks tooThin may still
|
|
175
|
+
// flag (unless self-diag-exempted) so callers can log the full picture.
|
|
176
|
+
...tooThinFields,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// REFUSE — too-thin flag is irrelevant on a refused verdict, but still attach it
|
|
181
|
+
// so callers can log the full picture.
|
|
182
|
+
return {
|
|
183
|
+
verdict: "refuse",
|
|
184
|
+
refused: true,
|
|
185
|
+
reason:
|
|
186
|
+
"⛔ REFUSED — a fresh run must LLM-deep-read at least one trace. " +
|
|
187
|
+
"llmReadCount===0 and no class-memory priors (priorSignalsRef) to lean on. " +
|
|
188
|
+
"Tier-0 alone only MEASURES cheap signals — shipping a diagnosis off it is the " +
|
|
189
|
+
"methodology blind-spot R2.1 forbids. Fail-loud (no graceful-degrade).",
|
|
190
|
+
...tooThinFields,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/** R2.5 auto-expand threshold — below this confidence the sample expands. */
|
|
195
|
+
export const AUTO_EXPAND_BELOW_PCT = 70;
|
|
196
|
+
|
|
197
|
+
export interface AutoExpandDecision {
|
|
198
|
+
/** True when the sample should be expanded and re-proven. */
|
|
199
|
+
shouldExpand: boolean;
|
|
200
|
+
reason: string;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* R2.1 auto-expand decision: when coverage confidence < 70% AND no cap has
|
|
205
|
+
* tripped, the caller should widen the deep-read sample and recompute the proof.
|
|
206
|
+
* Pure — returns the decision only.
|
|
207
|
+
*/
|
|
208
|
+
export function decideAutoExpand(coverageConfidence: number, aCapTripped: boolean): AutoExpandDecision {
|
|
209
|
+
if (aCapTripped) {
|
|
210
|
+
return {
|
|
211
|
+
shouldExpand: false,
|
|
212
|
+
reason: "A cap already tripped — cannot expand the sample (R2.1/D1). Emit with current coverage.",
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
if (coverageConfidence < AUTO_EXPAND_BELOW_PCT) {
|
|
216
|
+
return {
|
|
217
|
+
shouldExpand: true,
|
|
218
|
+
reason: `Coverage ${coverageConfidence.toFixed(1)}% < ${AUTO_EXPAND_BELOW_PCT}% — auto-expanding the deep-read sample.`,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
return {
|
|
222
|
+
shouldExpand: false,
|
|
223
|
+
reason: `Coverage ${coverageConfidence.toFixed(1)}% ≥ ${AUTO_EXPAND_BELOW_PCT}% — sample is sufficient.`,
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
// ── BLOCK D2: selection-level mandatory deep-read discovery ───────────────────
|
|
228
|
+
//
|
|
229
|
+
// The R2.1 invariant (PR-035) historically lived at the REPORT level
|
|
230
|
+
// (evaluateDeepReadGate): a whole run with zero LLM reads and no priors is refused.
|
|
231
|
+
// But PRIMARY signal selection (PR-049) is a SEPARATE decision point — the skill
|
|
232
|
+
// picks WHICH signal/finding to surface BEFORE the report-level gate is even
|
|
233
|
+
// evaluated. If that selection runs off Tier-0 frequency alone (matchCount) with no
|
|
234
|
+
// deep-read behind it, the methodology blind-spot R2.1 forbids has merely moved
|
|
235
|
+
// upstream. BLOCK D2 closes that gap: the "must deep-read" enforcement reaches the
|
|
236
|
+
// selection path.
|
|
237
|
+
//
|
|
238
|
+
// MANDATORY-DISCOVERY predicate (fail-loud, consistent with PR-035):
|
|
239
|
+
// priorFindingsCount === 0 && validLedgerDigestCount === 0 → discovery REQUIRED
|
|
240
|
+
//
|
|
241
|
+
// - priorFindingsCount: approved findings already in the class-memory library
|
|
242
|
+
// for this entity (store.hasPriors equivalent count).
|
|
243
|
+
// - validLedgerDigestCount: cross-run deep-read digests that PASS the validity
|
|
244
|
+
// filter (foldValidDigests: analyzerVersion +
|
|
245
|
+
// entityFingerprint + TTL). A STALE/invalid digest does
|
|
246
|
+
// NOT count — it cannot substitute for a fresh read.
|
|
247
|
+
//
|
|
248
|
+
// When BOTH are zero, there is no prior evidence to lean on, so primary selection
|
|
249
|
+
// MUST be preceded by a deep-read discovery pass. When EITHER is non-zero the priors
|
|
250
|
+
// substitute (R2.3 spirit) and discovery is not forced — selection may proceed.
|
|
251
|
+
//
|
|
252
|
+
// This module DECIDES only; the orchestrator (Step 4.5 / Step 6) acts on the verdict
|
|
253
|
+
// by routing through a discovery deep-read before primary selection.
|
|
254
|
+
|
|
255
|
+
export interface SelectionDiscoveryGateInput {
|
|
256
|
+
/** Approved findings already recorded for this entity in the class-memory library. */
|
|
257
|
+
priorFindingsCount: number;
|
|
258
|
+
/**
|
|
259
|
+
* Cross-run deep-read ledger digests for this entity that PASS the validity filter
|
|
260
|
+
* (foldValidDigests: matching analyzerVersion + entityFingerprint, within TTL).
|
|
261
|
+
* STALE/invalid digests MUST be excluded by the caller before passing this count.
|
|
262
|
+
*/
|
|
263
|
+
validLedgerDigestCount: number;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
export type SelectionDiscoveryVerdict = "discovery-required" | "priors-cover";
|
|
267
|
+
|
|
268
|
+
export interface SelectionDiscoveryGateResult {
|
|
269
|
+
verdict: SelectionDiscoveryVerdict;
|
|
270
|
+
/**
|
|
271
|
+
* True when a deep-read discovery pass is MANDATORY before primary selection.
|
|
272
|
+
* (verdict === "discovery-required"). The orchestrator must NOT run primary
|
|
273
|
+
* selection until at least one trace has been deep-read this run.
|
|
274
|
+
*/
|
|
275
|
+
mustDeepReadBeforeSelection: boolean;
|
|
276
|
+
/** Operator-facing explanation (rendered as a banner / decision-log entry). */
|
|
277
|
+
reason: string;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* BLOCK D2 — selection-level mandatory deep-read discovery gate (W17-D2).
|
|
282
|
+
*
|
|
283
|
+
* Extends the report-level R2.1 invariant (PR-035) to the PRIMARY-selection path
|
|
284
|
+
* (PR-049). Pure boolean logic over two non-negative counts — no I/O, no clock.
|
|
285
|
+
*
|
|
286
|
+
* priorFindingsCount === 0 && validLedgerDigestCount === 0 → discovery-required
|
|
287
|
+
* otherwise → priors-cover
|
|
288
|
+
*
|
|
289
|
+
* Fail-loud: negative counts are a programming error and throw rather than silently
|
|
290
|
+
* coerce to "covered" (a defensive-zero would let a bad caller skip discovery — the
|
|
291
|
+
* exact failure mode this gate exists to prevent).
|
|
292
|
+
*/
|
|
293
|
+
export function evaluateSelectionDiscoveryGate(
|
|
294
|
+
input: SelectionDiscoveryGateInput
|
|
295
|
+
): SelectionDiscoveryGateResult {
|
|
296
|
+
const { priorFindingsCount, validLedgerDigestCount } = input;
|
|
297
|
+
|
|
298
|
+
if (
|
|
299
|
+
!Number.isInteger(priorFindingsCount) ||
|
|
300
|
+
!Number.isInteger(validLedgerDigestCount) ||
|
|
301
|
+
priorFindingsCount < 0 ||
|
|
302
|
+
validLedgerDigestCount < 0
|
|
303
|
+
) {
|
|
304
|
+
throw new Error(
|
|
305
|
+
"evaluateSelectionDiscoveryGate: counts must be non-negative integers " +
|
|
306
|
+
`(got priorFindingsCount=${priorFindingsCount}, validLedgerDigestCount=${validLedgerDigestCount}). ` +
|
|
307
|
+
"Fail-loud per PR-035 — refusing to guess discovery coverage."
|
|
308
|
+
);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
if (priorFindingsCount === 0 && validLedgerDigestCount === 0) {
|
|
312
|
+
return {
|
|
313
|
+
verdict: "discovery-required",
|
|
314
|
+
mustDeepReadBeforeSelection: true,
|
|
315
|
+
reason:
|
|
316
|
+
"⛔ DISCOVERY REQUIRED — no prior findings and no valid ledger digests for " +
|
|
317
|
+
"this entity. PRIMARY selection (PR-049) must NOT run off Tier-0 frequency " +
|
|
318
|
+
"alone; a deep-read discovery pass is mandatory first (R2.1 / BLOCK D2). " +
|
|
319
|
+
"Fail-loud (no select-then-justify).",
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
return {
|
|
324
|
+
verdict: "priors-cover",
|
|
325
|
+
mustDeepReadBeforeSelection: false,
|
|
326
|
+
reason:
|
|
327
|
+
`Priors cover selection — ${priorFindingsCount} prior finding(s) + ` +
|
|
328
|
+
`${validLedgerDigestCount} valid ledger digest(s) for this entity (R2.3). ` +
|
|
329
|
+
"A fresh discovery pass is not forced before primary selection.",
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
// ── CLI entrypoint (PRD-SO-05) ────────────────────────────────────────────────
|
|
334
|
+
//
|
|
335
|
+
// Usage:
|
|
336
|
+
// bun scripts/cli/run.sh scripts/sample/deep-read-gate.ts \
|
|
337
|
+
// --llmReadCount <n> \
|
|
338
|
+
// [--population <n>] \ # A6: enables the too-thin guard (PR-048)
|
|
339
|
+
// [--priorSignalsRef <ref>] \
|
|
340
|
+
// [--isFocusRun] \
|
|
341
|
+
// [--selfDiagSingleSession] \ # W17-D2: exempt the too-thin banner
|
|
342
|
+
// [--priorFindingsCount <n>] \ # BLOCK D2: selection-discovery gate
|
|
343
|
+
// [--validLedgerDigestCount <n>] \ # BLOCK D2: selection-discovery gate
|
|
344
|
+
// [--output <file>]
|
|
345
|
+
//
|
|
346
|
+
// Writes a JSON envelope (report-level result + optional selection result) to
|
|
347
|
+
// --output (stdout when omitted). The selection block is emitted whenever EITHER
|
|
348
|
+
// selection count flag is present.
|
|
349
|
+
|
|
350
|
+
if (import.meta.main) {
|
|
351
|
+
const { writeFileSync } = await import("node:fs");
|
|
352
|
+
const { resolve } = await import("node:path");
|
|
353
|
+
|
|
354
|
+
const args = process.argv.slice(2);
|
|
355
|
+
|
|
356
|
+
function argVal(flag: string): string | undefined {
|
|
357
|
+
const idx = args.indexOf(flag);
|
|
358
|
+
return idx >= 0 ? args[idx + 1] : undefined;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
const llmReadCount = Number(argVal("--llmReadCount") ?? "0");
|
|
362
|
+
const priorSignalsRef = argVal("--priorSignalsRef");
|
|
363
|
+
const isFocusRun = args.includes("--isFocusRun");
|
|
364
|
+
// A6 (folded-in): wire --population so the too-thin guard can actually compute.
|
|
365
|
+
// Absent → undefined → guard skipped (backward-compatible).
|
|
366
|
+
const populationArg = argVal("--population");
|
|
367
|
+
const population = populationArg !== undefined ? Number(populationArg) : undefined;
|
|
368
|
+
// W17-D2: operator self-diag exemption for the too-thin banner.
|
|
369
|
+
const isSelfDiagSingleSession = args.includes("--selfDiagSingleSession");
|
|
370
|
+
const outputPath = argVal("--output");
|
|
371
|
+
|
|
372
|
+
const result = evaluateDeepReadGate({
|
|
373
|
+
llmReadCount,
|
|
374
|
+
priorSignalsRef,
|
|
375
|
+
isFocusRun,
|
|
376
|
+
population,
|
|
377
|
+
isSelfDiagSingleSession,
|
|
378
|
+
});
|
|
379
|
+
|
|
380
|
+
// BLOCK D2: selection-level discovery gate is evaluated only when the caller
|
|
381
|
+
// supplies selection counts (keeps the report-level invocation backward-compatible).
|
|
382
|
+
const hasSelectionInput =
|
|
383
|
+
argVal("--priorFindingsCount") !== undefined ||
|
|
384
|
+
argVal("--validLedgerDigestCount") !== undefined;
|
|
385
|
+
|
|
386
|
+
let selection: SelectionDiscoveryGateResult | undefined;
|
|
387
|
+
if (hasSelectionInput) {
|
|
388
|
+
selection = evaluateSelectionDiscoveryGate({
|
|
389
|
+
priorFindingsCount: Number(argVal("--priorFindingsCount") ?? "0"),
|
|
390
|
+
validLedgerDigestCount: Number(argVal("--validLedgerDigestCount") ?? "0"),
|
|
391
|
+
});
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
const envelope = {
|
|
395
|
+
...result,
|
|
396
|
+
...(selection ? { selection } : {}),
|
|
397
|
+
input: {
|
|
398
|
+
llmReadCount,
|
|
399
|
+
priorSignalsRef,
|
|
400
|
+
isFocusRun,
|
|
401
|
+
population,
|
|
402
|
+
isSelfDiagSingleSession,
|
|
403
|
+
...(hasSelectionInput
|
|
404
|
+
? {
|
|
405
|
+
priorFindingsCount: Number(argVal("--priorFindingsCount") ?? "0"),
|
|
406
|
+
validLedgerDigestCount: Number(argVal("--validLedgerDigestCount") ?? "0"),
|
|
407
|
+
}
|
|
408
|
+
: {}),
|
|
409
|
+
},
|
|
410
|
+
};
|
|
411
|
+
|
|
412
|
+
const json = JSON.stringify(envelope, null, 2);
|
|
413
|
+
if (outputPath) {
|
|
414
|
+
writeFileSync(resolve(outputPath), json, "utf-8");
|
|
415
|
+
console.info(`deep-read-gate result written to ${outputPath}`);
|
|
416
|
+
} else {
|
|
417
|
+
console.info(json);
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
// Exit non-zero when the report-level run is refused OR a selection-discovery
|
|
421
|
+
// deep-read is mandatory but not yet satisfied — orchestrators detect either gate.
|
|
422
|
+
const gateFailed = result.refused || selection?.mustDeepReadBeforeSelection === true;
|
|
423
|
+
process.exit(gateFailed ? 1 : 0);
|
|
424
|
+
}
|