@rpamis/comet 0.4.0-beta.3 → 0.4.0-beta.4
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/README.md +10 -0
- package/assets/manifest.json +2 -1
- package/assets/skills/comet/SKILL.md +25 -1
- package/assets/skills/comet/reference/comet-yaml-fields.md +5 -2
- package/assets/skills/comet/reference/context-recovery.md +10 -0
- package/assets/skills/comet/reference/scripts.md +47 -15
- package/assets/skills/comet/rules/comet-phase-guard.en.md +8 -0
- package/assets/skills/comet/rules/comet-phase-guard.md +9 -1
- package/assets/skills/comet/scripts/comet-resume-probe.mjs +3 -0
- package/assets/skills/comet/scripts/comet-runtime.mjs +1387 -424
- package/assets/skills/comet-archive/SKILL.md +24 -11
- package/assets/skills/comet-build/SKILL.md +42 -25
- package/assets/skills/comet-design/SKILL.md +1 -0
- package/assets/skills/comet-hotfix/SKILL.md +3 -1
- package/assets/skills/comet-open/SKILL.md +11 -1
- package/assets/skills/comet-tweak/SKILL.md +3 -1
- package/assets/skills/comet-verify/SKILL.md +29 -20
- package/assets/skills-zh/comet/SKILL.md +25 -1
- package/assets/skills-zh/comet/reference/comet-yaml-fields.md +5 -2
- package/assets/skills-zh/comet/reference/context-recovery.md +10 -0
- package/assets/skills-zh/comet/reference/scripts.md +47 -15
- package/assets/skills-zh/comet-archive/SKILL.md +24 -11
- package/assets/skills-zh/comet-build/SKILL.md +42 -25
- package/assets/skills-zh/comet-design/SKILL.md +1 -0
- package/assets/skills-zh/comet-hotfix/SKILL.md +3 -1
- package/assets/skills-zh/comet-open/SKILL.md +11 -1
- package/assets/skills-zh/comet-tweak/SKILL.md +3 -1
- package/assets/skills-zh/comet-verify/SKILL.md +30 -21
- package/dist/app/cli/comet-banner.d.ts +25 -0
- package/dist/app/cli/comet-banner.d.ts.map +1 -0
- package/dist/app/cli/comet-banner.js +265 -0
- package/dist/app/cli/comet-banner.js.map +1 -0
- package/dist/app/cli/index.js +36 -2
- package/dist/app/cli/index.js.map +1 -1
- package/dist/app/commands/classic.d.ts +4 -0
- package/dist/app/commands/classic.d.ts.map +1 -0
- package/dist/app/commands/classic.js +11 -0
- package/dist/app/commands/classic.js.map +1 -0
- package/dist/app/commands/doctor.d.ts.map +1 -1
- package/dist/app/commands/doctor.js +39 -24
- package/dist/app/commands/doctor.js.map +1 -1
- package/dist/app/commands/eval.d.ts.map +1 -1
- package/dist/app/commands/eval.js +57 -20
- package/dist/app/commands/eval.js.map +1 -1
- package/dist/app/commands/i18n.d.ts +1 -1
- package/dist/app/commands/i18n.d.ts.map +1 -1
- package/dist/app/commands/i18n.js +12 -4
- package/dist/app/commands/i18n.js.map +1 -1
- package/dist/app/commands/init.d.ts.map +1 -1
- package/dist/app/commands/init.js +16 -13
- package/dist/app/commands/init.js.map +1 -1
- package/dist/app/commands/project-scope-selection.d.ts +13 -0
- package/dist/app/commands/project-scope-selection.d.ts.map +1 -0
- package/dist/app/commands/project-scope-selection.js +33 -0
- package/dist/app/commands/project-scope-selection.js.map +1 -0
- package/dist/app/commands/resume-probe.d.ts +11 -0
- package/dist/app/commands/resume-probe.d.ts.map +1 -0
- package/dist/app/commands/resume-probe.js +63 -0
- package/dist/app/commands/resume-probe.js.map +1 -0
- package/dist/app/commands/status.d.ts +31 -0
- package/dist/app/commands/status.d.ts.map +1 -1
- package/dist/app/commands/status.js +109 -20
- package/dist/app/commands/status.js.map +1 -1
- package/dist/app/commands/uninstall.d.ts +2 -0
- package/dist/app/commands/uninstall.d.ts.map +1 -1
- package/dist/app/commands/uninstall.js +217 -40
- package/dist/app/commands/uninstall.js.map +1 -1
- package/dist/app/commands/update.d.ts +6 -0
- package/dist/app/commands/update.d.ts.map +1 -1
- package/dist/app/commands/update.js +361 -68
- package/dist/app/commands/update.js.map +1 -1
- package/dist/config/repository-layout.json +4 -2
- package/dist/domains/bundle/bundle-platform.d.ts.map +1 -1
- package/dist/domains/bundle/bundle-platform.js +3 -1
- package/dist/domains/bundle/bundle-platform.js.map +1 -1
- package/dist/domains/bundle/eval-manifest-runtime.d.ts +6 -0
- package/dist/domains/bundle/eval-manifest-runtime.d.ts.map +1 -0
- package/dist/domains/bundle/eval-manifest-runtime.js +58 -0
- package/dist/domains/bundle/eval-manifest-runtime.js.map +1 -0
- package/dist/domains/bundle/types.d.ts +1 -1
- package/dist/domains/bundle/types.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-archive.d.ts +1 -0
- package/dist/domains/comet-classic/classic-archive.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-archive.js +35 -38
- package/dist/domains/comet-classic/classic-archive.js.map +1 -1
- package/dist/domains/comet-classic/classic-cli.d.ts +1 -1
- package/dist/domains/comet-classic/classic-cli.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-cli.js +3 -0
- package/dist/domains/comet-classic/classic-cli.js.map +1 -1
- package/dist/domains/comet-classic/classic-command-checks.d.ts +20 -0
- package/dist/domains/comet-classic/classic-command-checks.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-command-checks.js +97 -0
- package/dist/domains/comet-classic/classic-command-checks.js.map +1 -0
- package/dist/domains/comet-classic/classic-current-change.d.ts +19 -0
- package/dist/domains/comet-classic/classic-current-change.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-current-change.js +132 -0
- package/dist/domains/comet-classic/classic-current-change.js.map +1 -0
- package/dist/domains/comet-classic/classic-diagnostics.d.ts +2 -1
- package/dist/domains/comet-classic/classic-diagnostics.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-diagnostics.js +54 -1
- package/dist/domains/comet-classic/classic-diagnostics.js.map +1 -1
- package/dist/domains/comet-classic/classic-evidence.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-evidence.js +4 -0
- package/dist/domains/comet-classic/classic-evidence.js.map +1 -1
- package/dist/domains/comet-classic/classic-guard.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-guard.js +68 -69
- package/dist/domains/comet-classic/classic-guard.js.map +1 -1
- package/dist/domains/comet-classic/classic-hook-guard.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-hook-guard.js +66 -23
- package/dist/domains/comet-classic/classic-hook-guard.js.map +1 -1
- package/dist/domains/comet-classic/classic-project-config.d.ts +16 -0
- package/dist/domains/comet-classic/classic-project-config.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-project-config.js +40 -0
- package/dist/domains/comet-classic/classic-project-config.js.map +1 -0
- package/dist/domains/comet-classic/classic-resolver.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-resolver.js +3 -3
- package/dist/domains/comet-classic/classic-resolver.js.map +1 -1
- package/dist/domains/comet-classic/classic-resume-probe-command.d.ts +3 -0
- package/dist/domains/comet-classic/classic-resume-probe-command.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-resume-probe-command.js +58 -0
- package/dist/domains/comet-classic/classic-resume-probe-command.js.map +1 -0
- package/dist/domains/comet-classic/classic-resume-probe-entry.d.ts +2 -0
- package/dist/domains/comet-classic/classic-resume-probe-entry.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-resume-probe-entry.js +4 -0
- package/dist/domains/comet-classic/classic-resume-probe-entry.js.map +1 -0
- package/dist/domains/comet-classic/classic-resume-probe.d.ts +29 -0
- package/dist/domains/comet-classic/classic-resume-probe.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-resume-probe.js +386 -0
- package/dist/domains/comet-classic/classic-resume-probe.js.map +1 -0
- package/dist/domains/comet-classic/classic-runtime-run.d.ts +2 -1
- package/dist/domains/comet-classic/classic-runtime-run.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-runtime-run.js +38 -0
- package/dist/domains/comet-classic/classic-runtime-run.js.map +1 -1
- package/dist/domains/comet-classic/classic-state-command.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-state-command.js +128 -12
- package/dist/domains/comet-classic/classic-state-command.js.map +1 -1
- package/dist/domains/comet-classic/classic-state.d.ts +3 -1
- package/dist/domains/comet-classic/classic-state.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-state.js +4 -0
- package/dist/domains/comet-classic/classic-state.js.map +1 -1
- package/dist/domains/comet-classic/classic-store.d.ts +4 -1
- package/dist/domains/comet-classic/classic-store.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-store.js +4 -3
- package/dist/domains/comet-classic/classic-store.js.map +1 -1
- package/dist/domains/comet-classic/classic-transitions.d.ts +1 -1
- package/dist/domains/comet-classic/classic-transitions.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-transitions.js +20 -1
- package/dist/domains/comet-classic/classic-transitions.js.map +1 -1
- package/dist/domains/comet-classic/classic-validate-command.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-validate-command.js +1 -0
- package/dist/domains/comet-classic/classic-validate-command.js.map +1 -1
- package/dist/domains/comet-classic/index.d.ts +3 -0
- package/dist/domains/comet-classic/index.d.ts.map +1 -1
- package/dist/domains/comet-classic/index.js +3 -0
- package/dist/domains/comet-classic/index.js.map +1 -1
- package/dist/domains/dashboard/collector.js +10 -2
- package/dist/domains/dashboard/collector.js.map +1 -1
- package/dist/domains/dashboard/web/assets/{index-CjU3VXVu.js → index-CIvN-PL8.js} +11 -11
- package/dist/domains/dashboard/web/assets/{index-BcO3_QlT.css → index-DcyRPBnT.css} +1 -1
- package/dist/domains/dashboard/web/index.html +2 -2
- package/dist/domains/engine/types.d.ts +1 -1
- package/dist/domains/engine/types.d.ts.map +1 -1
- package/dist/domains/integrations/openspec.d.ts.map +1 -1
- package/dist/domains/integrations/openspec.js +6 -6
- package/dist/domains/integrations/openspec.js.map +1 -1
- package/dist/domains/skill/find.d.ts.map +1 -1
- package/dist/domains/skill/find.js +1 -6
- package/dist/domains/skill/find.js.map +1 -1
- package/dist/domains/skill/managed-markdown.d.ts +14 -0
- package/dist/domains/skill/managed-markdown.d.ts.map +1 -0
- package/dist/domains/skill/managed-markdown.js +126 -0
- package/dist/domains/skill/managed-markdown.js.map +1 -0
- package/dist/domains/skill/platform-install.d.ts +4 -3
- package/dist/domains/skill/platform-install.d.ts.map +1 -1
- package/dist/domains/skill/platform-install.js +96 -26
- package/dist/domains/skill/platform-install.js.map +1 -1
- package/dist/domains/skill/project-instructions.d.ts +22 -0
- package/dist/domains/skill/project-instructions.d.ts.map +1 -0
- package/dist/domains/skill/project-instructions.js +61 -0
- package/dist/domains/skill/project-instructions.js.map +1 -0
- package/dist/domains/skill/uninstall.d.ts +3 -1
- package/dist/domains/skill/uninstall.d.ts.map +1 -1
- package/dist/domains/skill/uninstall.js +86 -39
- package/dist/domains/skill/uninstall.js.map +1 -1
- package/dist/platform/install/detect.d.ts +2 -1
- package/dist/platform/install/detect.d.ts.map +1 -1
- package/dist/platform/install/detect.js +10 -1
- package/dist/platform/install/detect.js.map +1 -1
- package/dist/platform/install/platforms.d.ts +5 -1
- package/dist/platform/install/platforms.d.ts.map +1 -1
- package/dist/platform/install/platforms.js +21 -4
- package/dist/platform/install/platforms.js.map +1 -1
- package/dist/platform/install/project-registry.d.ts +37 -0
- package/dist/platform/install/project-registry.d.ts.map +1 -0
- package/dist/platform/install/project-registry.js +205 -0
- package/dist/platform/install/project-registry.js.map +1 -0
- package/eval/.env +28 -0
- package/eval/.env.example +52 -0
- package/eval/CLAUDE.md +43 -0
- package/eval/README.md +538 -0
- package/eval/langsmith/.env.example +16 -0
- package/eval/langsmith/README.md +93 -0
- package/eval/langsmith/skills/README.md +5 -0
- package/eval/langsmith/tasks/README.md +5 -0
- package/eval/langsmith/tests/conftest.py +187 -0
- package/eval/langsmith/tests/tasks/test_tasks.py +287 -0
- package/eval/langsmith/treatments/README.md +5 -0
- package/eval/local/README.md +80 -0
- package/eval/local/regression_baseline.json +13 -0
- package/eval/local/report-style-demo-assets/quality_cost.en.svg +41 -0
- package/eval/local/report-style-demo-assets/quality_cost.zh.svg +41 -0
- package/eval/local/report-style-demo-assets/rubric_delta.en.svg +56 -0
- package/eval/local/report-style-demo-assets/rubric_delta.zh.svg +56 -0
- package/eval/local/report-style-demo-assets/task_outcomes.en.svg +46 -0
- package/eval/local/report-style-demo-assets/task_outcomes.zh.svg +46 -0
- package/eval/local/report-style-demo.html +867 -0
- package/eval/local/scripts/compare_baselines.py +1018 -0
- package/eval/local/scripts/generate_report_style_demo_charts.py +322 -0
- package/eval/local/scripts/regression_check.py +171 -0
- package/eval/local/scripts/render_readme_benchmark_figures.py +416 -0
- package/eval/local/scripts/rescore_rubric.py +120 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/SKILL.md +282 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/reference/auto-transition.md +27 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/reference/comet-yaml-fields.md +68 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/reference/context-recovery.md +35 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/reference/debug-gate.md +17 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/reference/decision-point.md +20 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/reference/dirty-worktree.md +59 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/reference/file-structure.md +28 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/reference/subagent-dispatch.md +113 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/rules/comet-phase-guard.md +125 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/scripts/comet-archive.sh +311 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/scripts/comet-env.sh +110 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/scripts/comet-guard.sh +778 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/scripts/comet-handoff.sh +390 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/scripts/comet-hook-guard.sh +336 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/scripts/comet-state.sh +1338 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/scripts/comet-yaml-validate.sh +225 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039-archive/SKILL.md +100 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039-build/SKILL.md +304 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039-design/SKILL.md +263 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039-hotfix/SKILL.md +204 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039-open/SKILL.md +220 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039-tweak/SKILL.md +180 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039-verify/SKILL.md +234 -0
- package/eval/local/skills/benchmarks/040-beta/comet/SKILL.md +261 -0
- package/eval/local/skills/benchmarks/040-beta/comet/reference/auto-transition.md +27 -0
- package/eval/local/skills/benchmarks/040-beta/comet/reference/comet-yaml-fields.md +73 -0
- package/eval/local/skills/benchmarks/040-beta/comet/reference/context-recovery.md +45 -0
- package/eval/local/skills/benchmarks/040-beta/comet/reference/debug-gate.md +33 -0
- package/eval/local/skills/benchmarks/040-beta/comet/reference/decision-point.md +31 -0
- package/eval/local/skills/benchmarks/040-beta/comet/reference/dirty-worktree.md +59 -0
- package/eval/local/skills/benchmarks/040-beta/comet/reference/file-structure.md +28 -0
- package/eval/local/skills/benchmarks/040-beta/comet/reference/intent-frame.md +74 -0
- package/eval/local/skills/benchmarks/040-beta/comet/reference/scripts.md +69 -0
- package/eval/local/skills/benchmarks/040-beta/comet/reference/subagent-dispatch.md +169 -0
- package/eval/local/skills/benchmarks/040-beta/comet/rules/comet-phase-guard.md +130 -0
- package/eval/local/skills/benchmarks/040-beta/comet/runtime/classic/checks.yaml +6 -0
- package/eval/local/skills/benchmarks/040-beta/comet/runtime/classic/guardrails.yaml +13 -0
- package/eval/local/skills/benchmarks/040-beta/comet/runtime/classic/skill.yaml +122 -0
- package/eval/local/skills/benchmarks/040-beta/comet/scripts/comet-archive.mjs +9515 -0
- package/eval/local/skills/benchmarks/040-beta/comet/scripts/comet-env.mjs +15 -0
- package/eval/local/skills/benchmarks/040-beta/comet/scripts/comet-guard.mjs +10173 -0
- package/eval/local/skills/benchmarks/040-beta/comet/scripts/comet-handoff.mjs +9491 -0
- package/eval/local/skills/benchmarks/040-beta/comet/scripts/comet-hook-guard.mjs +9175 -0
- package/eval/local/skills/benchmarks/040-beta/comet/scripts/comet-intent.mjs +404 -0
- package/eval/local/skills/benchmarks/040-beta/comet/scripts/comet-state.mjs +9273 -0
- package/eval/local/skills/benchmarks/040-beta/comet/scripts/comet-yaml-validate.mjs +7627 -0
- package/eval/local/skills/benchmarks/040-beta/comet-archive/SKILL.md +110 -0
- package/eval/local/skills/benchmarks/040-beta/comet-build/SKILL.md +315 -0
- package/eval/local/skills/benchmarks/040-beta/comet-design/SKILL.md +260 -0
- package/eval/local/skills/benchmarks/040-beta/comet-hotfix/SKILL.md +190 -0
- package/eval/local/skills/benchmarks/040-beta/comet-open/SKILL.md +210 -0
- package/eval/local/skills/benchmarks/040-beta/comet-tweak/SKILL.md +183 -0
- package/eval/local/skills/benchmarks/040-beta/comet-verify/SKILL.md +230 -0
- package/eval/local/skills/benchmarks/dependency/claude-md/comet-workflow/CLAUDE.md +12 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-apply-change/SKILL.md +156 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-archive-change/SKILL.md +114 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-bulk-archive-change/SKILL.md +246 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-continue-change/SKILL.md +118 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-explore/SKILL.md +288 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-ff-change/SKILL.md +101 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-new-change/SKILL.md +74 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-onboard/SKILL.md +554 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-propose/SKILL.md +110 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-sync-specs/SKILL.md +138 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-verify-change/SKILL.md +168 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/brainstorming/SKILL.md +159 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/brainstorming/scripts/frame-template.html +213 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/brainstorming/scripts/helper.js +167 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/brainstorming/scripts/server.cjs +723 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/brainstorming/scripts/start-server.sh +209 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/brainstorming/scripts/stop-server.sh +120 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/brainstorming/spec-document-reviewer-prompt.md +49 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/brainstorming/visual-companion.md +291 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/dispatching-parallel-agents/SKILL.md +185 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/executing-plans/SKILL.md +70 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/finishing-a-development-branch/SKILL.md +241 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/receiving-code-review/SKILL.md +213 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/requesting-code-review/SKILL.md +103 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/requesting-code-review/code-reviewer.md +172 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/subagent-driven-development/SKILL.md +418 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/subagent-driven-development/implementer-prompt.md +139 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/subagent-driven-development/scripts/review-package +44 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/subagent-driven-development/scripts/sdd-workspace +22 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/subagent-driven-development/scripts/task-brief +40 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/subagent-driven-development/task-reviewer-prompt.md +188 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/CREATION-LOG.md +119 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/SKILL.md +296 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/condition-based-waiting-example.ts +158 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/condition-based-waiting.md +115 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/defense-in-depth.md +122 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/find-polluter.sh +63 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/root-cause-tracing.md +169 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/test-academic.md +14 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/test-pressure-1.md +58 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/test-pressure-2.md +68 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/test-pressure-3.md +69 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/test-driven-development/SKILL.md +371 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/test-driven-development/testing-anti-patterns.md +299 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/using-git-worktrees/SKILL.md +202 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/verification-before-completion/SKILL.md +139 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/writing-plans/SKILL.md +174 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/writing-plans/plan-document-reviewer-prompt.md +49 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/writing-skills/SKILL.md +689 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/writing-skills/anthropic-best-practices.md +1150 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/writing-skills/graphviz-conventions.dot +172 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/writing-skills/persuasion-principles.md +187 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/writing-skills/render-graphs.js +168 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/writing-skills/testing-skills-with-subagents.md +384 -0
- package/eval/local/tasks/authoring-skill-smoke/environment/Dockerfile +2 -0
- package/eval/local/tasks/authoring-skill-smoke/instruction.md +4 -0
- package/eval/local/tasks/authoring-skill-smoke/task.toml +21 -0
- package/eval/local/tasks/authoring-skill-smoke/validation/test_authoring_skill_smoke.py +54 -0
- package/eval/local/tasks/comet-agent-memory-routing/environment/Dockerfile +28 -0
- package/eval/local/tasks/comet-agent-memory-routing/environment/agent_system.py +40 -0
- package/eval/local/tasks/comet-agent-memory-routing/environment/test_agent_system.py +29 -0
- package/eval/local/tasks/comet-agent-memory-routing/instruction.md +20 -0
- package/eval/local/tasks/comet-agent-memory-routing/task.toml +24 -0
- package/eval/local/tasks/comet-agent-memory-routing/validation/test_agent_memory_routing.py +24 -0
- package/eval/local/tasks/comet-api-cache-ttl/environment/Dockerfile +39 -0
- package/eval/local/tasks/comet-api-cache-ttl/environment/cache.py +39 -0
- package/eval/local/tasks/comet-api-cache-ttl/environment/test_cache.py +81 -0
- package/eval/local/tasks/comet-api-cache-ttl/instruction.md +33 -0
- package/eval/local/tasks/comet-api-cache-ttl/task.toml +24 -0
- package/eval/local/tasks/comet-api-cache-ttl/validation/test_api_cache_ttl.py +58 -0
- package/eval/local/tasks/comet-cross-file-refactor/environment/Dockerfile +15 -0
- package/eval/local/tasks/comet-cross-file-refactor/environment/cli.py +13 -0
- package/eval/local/tasks/comet-cross-file-refactor/environment/counting.py +13 -0
- package/eval/local/tasks/comet-cross-file-refactor/environment/test_textkit.py +21 -0
- package/eval/local/tasks/comet-cross-file-refactor/instruction.md +16 -0
- package/eval/local/tasks/comet-cross-file-refactor/task.toml +20 -0
- package/eval/local/tasks/comet-cross-file-refactor/validation/test_cross_file_refactor.py +20 -0
- package/eval/local/tasks/comet-dependency-confusion/environment/Dockerfile +28 -0
- package/eval/local/tasks/comet-dependency-confusion/environment/app.py +8 -0
- package/eval/local/tasks/comet-dependency-confusion/environment/settings_loader.py +14 -0
- package/eval/local/tasks/comet-dependency-confusion/environment/test_settings_service.py +19 -0
- package/eval/local/tasks/comet-dependency-confusion/instruction.md +18 -0
- package/eval/local/tasks/comet-dependency-confusion/task.toml +24 -0
- package/eval/local/tasks/comet-dependency-confusion/validation/test_dependency_confusion.py +24 -0
- package/eval/local/tasks/comet-fix-median/environment/Dockerfile +50 -0
- package/eval/local/tasks/comet-fix-median/environment/stats.py +54 -0
- package/eval/local/tasks/comet-fix-median/environment/test_stats.py +68 -0
- package/eval/local/tasks/comet-fix-median/instruction.md +25 -0
- package/eval/local/tasks/comet-fix-median/task.toml +24 -0
- package/eval/local/tasks/comet-fix-median/validation/test_fix_median.py +60 -0
- package/eval/local/tasks/comet-framework-selection/environment/Dockerfile +28 -0
- package/eval/local/tasks/comet-framework-selection/environment/architecture.py +12 -0
- package/eval/local/tasks/comet-framework-selection/environment/test_architecture.py +30 -0
- package/eval/local/tasks/comet-framework-selection/instruction.md +22 -0
- package/eval/local/tasks/comet-framework-selection/task.toml +24 -0
- package/eval/local/tasks/comet-framework-selection/validation/test_framework_selection.py +24 -0
- package/eval/local/tasks/comet-full-workflow/environment/Dockerfile +53 -0
- package/eval/local/tasks/comet-full-workflow/environment/test_wordcount.py +29 -0
- package/eval/local/tasks/comet-full-workflow/environment/wordcount.py +40 -0
- package/eval/local/tasks/comet-full-workflow/instruction.md +18 -0
- package/eval/local/tasks/comet-full-workflow/task.toml +24 -0
- package/eval/local/tasks/comet-full-workflow/validation/test_full_workflow.py +171 -0
- package/eval/local/tasks/comet-graph-execution-review/environment/Dockerfile +28 -0
- package/eval/local/tasks/comet-graph-execution-review/environment/pipeline.py +19 -0
- package/eval/local/tasks/comet-graph-execution-review/environment/test_pipeline.py +53 -0
- package/eval/local/tasks/comet-graph-execution-review/instruction.md +21 -0
- package/eval/local/tasks/comet-graph-execution-review/task.toml +24 -0
- package/eval/local/tasks/comet-graph-execution-review/validation/test_graph_execution_review.py +24 -0
- package/eval/local/tasks/comet-human-approval-flow/environment/Dockerfile +15 -0
- package/eval/local/tasks/comet-human-approval-flow/environment/approvals.py +17 -0
- package/eval/local/tasks/comet-human-approval-flow/environment/test_approvals.py +30 -0
- package/eval/local/tasks/comet-human-approval-flow/instruction.md +15 -0
- package/eval/local/tasks/comet-human-approval-flow/task.toml +20 -0
- package/eval/local/tasks/comet-human-approval-flow/validation/test_human_approval_flow.py +20 -0
- package/eval/local/tasks/comet-layered-streaming-fix/environment/Dockerfile +20 -0
- package/eval/local/tasks/comet-layered-streaming-fix/environment/chat_app.py +19 -0
- package/eval/local/tasks/comet-layered-streaming-fix/environment/test_chat_app.py +15 -0
- package/eval/local/tasks/comet-layered-streaming-fix/instruction.md +14 -0
- package/eval/local/tasks/comet-layered-streaming-fix/task.toml +20 -0
- package/eval/local/tasks/comet-layered-streaming-fix/validation/test_layered_streaming_fix.py +20 -0
- package/eval/local/tasks/comet-noise-distractor/environment/Dockerfile +15 -0
- package/eval/local/tasks/comet-noise-distractor/environment/distractor.md +4 -0
- package/eval/local/tasks/comet-noise-distractor/environment/invoice.py +5 -0
- package/eval/local/tasks/comet-noise-distractor/environment/test_invoice.py +18 -0
- package/eval/local/tasks/comet-noise-distractor/instruction.md +17 -0
- package/eval/local/tasks/comet-noise-distractor/task.toml +20 -0
- package/eval/local/tasks/comet-noise-distractor/validation/test_noise_distractor.py +20 -0
- package/eval/local/tasks/comet-observability-env-template/environment/Dockerfile +15 -0
- package/eval/local/tasks/comet-observability-env-template/environment/env_writer.py +17 -0
- package/eval/local/tasks/comet-observability-env-template/environment/test_env_writer.py +17 -0
- package/eval/local/tasks/comet-observability-env-template/instruction.md +20 -0
- package/eval/local/tasks/comet-observability-env-template/task.toml +20 -0
- package/eval/local/tasks/comet-observability-env-template/validation/test_observability_env_template.py +46 -0
- package/eval/local/tasks/comet-perf-dedupe/environment/Dockerfile +39 -0
- package/eval/local/tasks/comet-perf-dedupe/environment/dedupe.py +22 -0
- package/eval/local/tasks/comet-perf-dedupe/environment/test_dedupe.py +43 -0
- package/eval/local/tasks/comet-perf-dedupe/instruction.md +25 -0
- package/eval/local/tasks/comet-perf-dedupe/task.toml +24 -0
- package/eval/local/tasks/comet-perf-dedupe/validation/test_perf_dedupe.py +40 -0
- package/eval/local/tasks/comet-persistence-threading/environment/Dockerfile +15 -0
- package/eval/local/tasks/comet-persistence-threading/environment/session_store.py +15 -0
- package/eval/local/tasks/comet-persistence-threading/environment/test_session_store.py +21 -0
- package/eval/local/tasks/comet-persistence-threading/instruction.md +14 -0
- package/eval/local/tasks/comet-persistence-threading/task.toml +20 -0
- package/eval/local/tasks/comet-persistence-threading/validation/test_persistence_threading.py +20 -0
- package/eval/local/tasks/comet-refactor-counter/environment/Dockerfile +39 -0
- package/eval/local/tasks/comet-refactor-counter/environment/test_text_processor.py +57 -0
- package/eval/local/tasks/comet-refactor-counter/environment/text_processor.py +49 -0
- package/eval/local/tasks/comet-refactor-counter/instruction.md +31 -0
- package/eval/local/tasks/comet-refactor-counter/task.toml +24 -0
- package/eval/local/tasks/comet-refactor-counter/validation/test_refactor_counter.py +75 -0
- package/eval/local/tasks/comet-robust-config/environment/Dockerfile +39 -0
- package/eval/local/tasks/comet-robust-config/environment/config_loader.py +56 -0
- package/eval/local/tasks/comet-robust-config/environment/test_config_loader.py +72 -0
- package/eval/local/tasks/comet-robust-config/instruction.md +30 -0
- package/eval/local/tasks/comet-robust-config/task.toml +24 -0
- package/eval/local/tasks/comet-robust-config/validation/test_robust_config.py +37 -0
- package/eval/local/tasks/generic-skill-smoke/environment/Dockerfile +2 -0
- package/eval/local/tasks/generic-skill-smoke/instruction.md +7 -0
- package/eval/local/tasks/generic-skill-smoke/task.toml +21 -0
- package/eval/local/tasks/generic-skill-smoke/validation/test_generic_skill_smoke.py +36 -0
- package/eval/local/tasks/index.yaml +155 -0
- package/eval/local/tasks/workflow-overlay-contract/environment/Dockerfile +5 -0
- package/eval/local/tasks/workflow-overlay-contract/instruction.md +5 -0
- package/eval/local/tasks/workflow-overlay-contract/task.toml +21 -0
- package/eval/local/tasks/workflow-overlay-contract/validation/test_workflow_overlay_contract.py +235 -0
- package/eval/local/tasks/workflow-route-conformance/environment/Dockerfile +2 -0
- package/eval/local/tasks/workflow-route-conformance/instruction.md +5 -0
- package/eval/local/tasks/workflow-route-conformance/task.toml +21 -0
- package/eval/local/tasks/workflow-route-conformance/validation/test_workflow_route_conformance.py +84 -0
- package/eval/local/tests/conftest.py +1148 -0
- package/eval/local/tests/scaffold/test_attribution.py +48 -0
- package/eval/local/tests/scaffold/test_compare_baselines.py +999 -0
- package/eval/local/tests/scaffold/test_conftest_helpers.py +534 -0
- package/eval/local/tests/scaffold/test_evidence.py +15 -0
- package/eval/local/tests/scaffold/test_langsmith_conftest.py +244 -0
- package/eval/local/tests/scaffold/test_logging.py +243 -0
- package/eval/local/tests/scaffold/test_manifests.py +132 -0
- package/eval/local/tests/scaffold/test_profiles.py +866 -0
- package/eval/local/tests/scaffold/test_regression_check.py +19 -0
- package/eval/local/tests/scaffold/test_report_style_demo_charts.py +45 -0
- package/eval/local/tests/scaffold/test_sample_quality.py +211 -0
- package/eval/local/tests/scaffold/test_tasks.py +168 -0
- package/eval/local/tests/scaffold/test_treatments.py +244 -0
- package/eval/local/tests/scaffold/test_utils.py +139 -0
- package/eval/local/tests/tasks/test_tasks.py +445 -0
- package/eval/local/tests/tasks/test_validation_scripts.py +143 -0
- package/eval/local/treatments/comet/comet_full_039.yaml +141 -0
- package/eval/local/treatments/comet/comet_full_040_beta.yaml +140 -0
- package/eval/local/treatments/common/control.yaml +4 -0
- package/eval/pyproject.toml +41 -0
- package/eval/report-html-config.json +6 -0
- package/eval/scaffold/__init__.py +67 -0
- package/eval/scaffold/python/__init__.py +95 -0
- package/eval/scaffold/python/attribution.py +43 -0
- package/eval/scaffold/python/evidence.py +38 -0
- package/eval/scaffold/python/external_data_handler.py +18 -0
- package/eval/scaffold/python/generic_llm_judge.py +235 -0
- package/eval/scaffold/python/judge_config.py +168 -0
- package/eval/scaffold/python/llm_judge.py +191 -0
- package/eval/scaffold/python/logging.py +705 -0
- package/eval/scaffold/python/manifests.py +129 -0
- package/eval/scaffold/python/paper_charts.py +25 -0
- package/eval/scaffold/python/pass_at_k.py +107 -0
- package/eval/scaffold/python/paths.py +56 -0
- package/eval/scaffold/python/profiles.py +127 -0
- package/eval/scaffold/python/report_outputs.py +1391 -0
- package/eval/scaffold/python/sample_quality.py +339 -0
- package/eval/scaffold/python/schema.py +39 -0
- package/eval/scaffold/python/skill_parser.py +469 -0
- package/eval/scaffold/python/tasks.py +330 -0
- package/eval/scaffold/python/treatments.py +271 -0
- package/eval/scaffold/python/utils.py +366 -0
- package/eval/scaffold/python/validation/__init__.py +21 -0
- package/eval/scaffold/python/validation/authoring_rubric.py +326 -0
- package/eval/scaffold/python/validation/comet_workflow.py +187 -0
- package/eval/scaffold/python/validation/core.py +264 -0
- package/eval/scaffold/python/validation/dataset.py +337 -0
- package/eval/scaffold/python/validation/docker.py +106 -0
- package/eval/scaffold/python/validation/evaluator.py +549 -0
- package/eval/scaffold/python/validation/generic_rubric.py +169 -0
- package/eval/scaffold/python/validation/rubric.py +740 -0
- package/eval/scaffold/python/validation/runner.py +237 -0
- package/eval/scaffold/python/validation/scripts.py +58 -0
- package/eval/scaffold/python/validation/tracing.py +313 -0
- package/eval/scaffold/shell/common.sh +126 -0
- package/eval/scaffold/shell/docker.sh +482 -0
- package/eval/scaffold/shell/run-claude-loop.sh +181 -0
- package/eval/scaffold/shell/setup.sh +259 -0
- package/eval/simulator-instruction.md +9 -0
- package/package.json +24 -2
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"""Regression tests for task validation scripts."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import importlib.util
|
|
6
|
+
import sys
|
|
7
|
+
import types
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
ROOT = Path(__file__).resolve().parents[3]
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def _load_validator(path: Path, workspace: Path):
|
|
15
|
+
fake_checks = types.ModuleType("comet_checks")
|
|
16
|
+
fake_checks.WORKSPACE = workspace
|
|
17
|
+
fake_checks._passed = lambda check, message: {
|
|
18
|
+
"check": check,
|
|
19
|
+
"status": "passed",
|
|
20
|
+
"message": message,
|
|
21
|
+
}
|
|
22
|
+
fake_checks._failed = lambda check, message: {
|
|
23
|
+
"check": check,
|
|
24
|
+
"status": "failed",
|
|
25
|
+
"message": message,
|
|
26
|
+
}
|
|
27
|
+
fake_checks.run_comet_checks = lambda: []
|
|
28
|
+
fake_checks.write_results = lambda results: results
|
|
29
|
+
|
|
30
|
+
previous = sys.modules.get("comet_checks")
|
|
31
|
+
sys.modules["comet_checks"] = fake_checks
|
|
32
|
+
try:
|
|
33
|
+
spec = importlib.util.spec_from_file_location(f"validator_{path.stem}", path)
|
|
34
|
+
assert spec and spec.loader
|
|
35
|
+
module = importlib.util.module_from_spec(spec)
|
|
36
|
+
spec.loader.exec_module(module)
|
|
37
|
+
return module
|
|
38
|
+
finally:
|
|
39
|
+
if previous is None:
|
|
40
|
+
sys.modules.pop("comet_checks", None)
|
|
41
|
+
else:
|
|
42
|
+
sys.modules["comet_checks"] = previous
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def test_refactor_counter_accepts_annotated_wrappers(tmp_path: Path):
|
|
46
|
+
(tmp_path / "text_processor.py").write_text(
|
|
47
|
+
"""
|
|
48
|
+
def count(text: str, unit: str) -> int:
|
|
49
|
+
return len(text)
|
|
50
|
+
|
|
51
|
+
def count_words(text: str) -> int:
|
|
52
|
+
return count(text, "words")
|
|
53
|
+
|
|
54
|
+
def count_lines(text: str) -> int:
|
|
55
|
+
return count(text, "lines")
|
|
56
|
+
|
|
57
|
+
def count_chars(text: str) -> int:
|
|
58
|
+
return count(text, "chars")
|
|
59
|
+
""",
|
|
60
|
+
encoding="utf-8",
|
|
61
|
+
)
|
|
62
|
+
module = _load_validator(
|
|
63
|
+
ROOT / "local/tasks/comet-refactor-counter/validation/test_refactor_counter.py",
|
|
64
|
+
tmp_path,
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
result = module.check_count_dispatcher()
|
|
68
|
+
|
|
69
|
+
assert result["status"] == "passed"
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def test_fix_median_reports_pytest_stderr(monkeypatch, tmp_path: Path):
|
|
73
|
+
module = _load_validator(
|
|
74
|
+
ROOT / "local/tasks/comet-fix-median/validation/test_fix_median.py",
|
|
75
|
+
tmp_path,
|
|
76
|
+
)
|
|
77
|
+
calls = []
|
|
78
|
+
|
|
79
|
+
def fake_run(*args, **kwargs):
|
|
80
|
+
calls.append(args[0])
|
|
81
|
+
if len(calls) == 1:
|
|
82
|
+
return types.SimpleNamespace(returncode=0, stdout="2.5\n", stderr="")
|
|
83
|
+
return types.SimpleNamespace(
|
|
84
|
+
returncode=1,
|
|
85
|
+
stdout="",
|
|
86
|
+
stderr="/usr/local/bin/python: No module named pytest\n",
|
|
87
|
+
)
|
|
88
|
+
|
|
89
|
+
monkeypatch.setattr(module.subprocess, "run", fake_run)
|
|
90
|
+
|
|
91
|
+
result = module.check_median_fix()
|
|
92
|
+
|
|
93
|
+
assert result["status"] == "failed"
|
|
94
|
+
assert "No module named pytest" in result["message"]
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def test_pytest_task_images_install_pytest():
|
|
98
|
+
task_root = ROOT / "local/tasks"
|
|
99
|
+
missing = []
|
|
100
|
+
for dockerfile in task_root.glob("*/environment/Dockerfile"):
|
|
101
|
+
environment = dockerfile.parent
|
|
102
|
+
if not any("import pytest" in test.read_text(encoding="utf-8") for test in environment.glob("test_*.py")):
|
|
103
|
+
continue
|
|
104
|
+
text = dockerfile.read_text(encoding="utf-8").lower()
|
|
105
|
+
if "pytest" not in text:
|
|
106
|
+
missing.append(str(dockerfile.relative_to(ROOT)))
|
|
107
|
+
|
|
108
|
+
assert missing == []
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
def test_comet_state_accepts_archived_change_without_active_state(monkeypatch, tmp_path: Path):
|
|
112
|
+
from scaffold.python.validation import comet_workflow
|
|
113
|
+
|
|
114
|
+
archived = tmp_path / "openspec" / "changes" / "archive" / "2026-06-20-fix"
|
|
115
|
+
archived.mkdir(parents=True)
|
|
116
|
+
(archived / "proposal.md").write_text("# Proposal\n", encoding="utf-8")
|
|
117
|
+
(archived / "tasks.md").write_text("- [x] Done\n", encoding="utf-8")
|
|
118
|
+
monkeypatch.setattr(comet_workflow, "WORKSPACE", tmp_path)
|
|
119
|
+
|
|
120
|
+
result = comet_workflow.check_comet_state()
|
|
121
|
+
|
|
122
|
+
assert result == {
|
|
123
|
+
"check": "comet_state",
|
|
124
|
+
"status": "passed",
|
|
125
|
+
"message": "phase=archived",
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
def test_workflow_phases_accepts_verification_report_name(monkeypatch, tmp_path: Path):
|
|
130
|
+
from scaffold.python.validation import comet_workflow
|
|
131
|
+
|
|
132
|
+
archived = tmp_path / "openspec" / "changes" / "archive" / "2026-06-20-refactor"
|
|
133
|
+
archived.mkdir(parents=True)
|
|
134
|
+
(archived / "proposal.md").write_text("# Proposal\n", encoding="utf-8")
|
|
135
|
+
(archived / "design.md").write_text("# Design\n", encoding="utf-8")
|
|
136
|
+
(archived / "tasks.md").write_text("- [x] Done\n", encoding="utf-8")
|
|
137
|
+
(archived / "verification-report.md").write_text("# Verification\n", encoding="utf-8")
|
|
138
|
+
monkeypatch.setattr(comet_workflow, "WORKSPACE", tmp_path)
|
|
139
|
+
|
|
140
|
+
result = comet_workflow.check_workflow_phases()
|
|
141
|
+
|
|
142
|
+
assert result["status"] == "passed"
|
|
143
|
+
assert "verify" in result["message"]
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
# Full comet skill treatment (0.3.9 baseline, .sh runtime)
|
|
2
|
+
# Injects: the 0.3.9 Comet snapshot plus the same benchmark dependency
|
|
3
|
+
# snapshots used by the 0.4.0 treatment. Source dirs are prefixed
|
|
4
|
+
# comet-classic-039* to avoid colliding with the 0.4.0 sources, but the
|
|
5
|
+
# injected skill names are restored to comet/comet-open/etc. so the 0.3.9
|
|
6
|
+
# boilerplate `find ... */comet/scripts/comet-env.sh` resolves.
|
|
7
|
+
COMET_FULL_039:
|
|
8
|
+
description: "0.3.9 baseline comet skill (shell runtime) with Comet, OpenSpec, and Superpowers dependencies"
|
|
9
|
+
skills:
|
|
10
|
+
# Main dispatcher (carries scripts/ with the frozen 0.3.9 .sh launchers)
|
|
11
|
+
- name: comet
|
|
12
|
+
skill: 039-release/comet-classic-039
|
|
13
|
+
variant: all
|
|
14
|
+
base: benchmarks
|
|
15
|
+
# Phase sub-skills — source is the 0.3.9 snapshot, injected under canonical names
|
|
16
|
+
- name: comet-open
|
|
17
|
+
skill: 039-release/comet-classic-039-open
|
|
18
|
+
variant: all
|
|
19
|
+
base: benchmarks
|
|
20
|
+
- name: comet-design
|
|
21
|
+
skill: 039-release/comet-classic-039-design
|
|
22
|
+
variant: all
|
|
23
|
+
base: benchmarks
|
|
24
|
+
- name: comet-build
|
|
25
|
+
skill: 039-release/comet-classic-039-build
|
|
26
|
+
variant: all
|
|
27
|
+
base: benchmarks
|
|
28
|
+
- name: comet-verify
|
|
29
|
+
skill: 039-release/comet-classic-039-verify
|
|
30
|
+
variant: all
|
|
31
|
+
base: benchmarks
|
|
32
|
+
- name: comet-archive
|
|
33
|
+
skill: 039-release/comet-classic-039-archive
|
|
34
|
+
variant: all
|
|
35
|
+
base: benchmarks
|
|
36
|
+
- name: comet-hotfix
|
|
37
|
+
skill: 039-release/comet-classic-039-hotfix
|
|
38
|
+
variant: all
|
|
39
|
+
base: benchmarks
|
|
40
|
+
- name: comet-tweak
|
|
41
|
+
skill: 039-release/comet-classic-039-tweak
|
|
42
|
+
variant: all
|
|
43
|
+
base: benchmarks
|
|
44
|
+
# OpenSpec workflow dependencies (benchmark dependency snapshots).
|
|
45
|
+
- name: openspec-apply-change
|
|
46
|
+
skill: dependency/openspec/openspec-apply-change
|
|
47
|
+
variant: all
|
|
48
|
+
base: benchmarks
|
|
49
|
+
- name: openspec-archive-change
|
|
50
|
+
skill: dependency/openspec/openspec-archive-change
|
|
51
|
+
variant: all
|
|
52
|
+
base: benchmarks
|
|
53
|
+
- name: openspec-bulk-archive-change
|
|
54
|
+
skill: dependency/openspec/openspec-bulk-archive-change
|
|
55
|
+
variant: all
|
|
56
|
+
base: benchmarks
|
|
57
|
+
- name: openspec-continue-change
|
|
58
|
+
skill: dependency/openspec/openspec-continue-change
|
|
59
|
+
variant: all
|
|
60
|
+
base: benchmarks
|
|
61
|
+
- name: openspec-explore
|
|
62
|
+
skill: dependency/openspec/openspec-explore
|
|
63
|
+
variant: all
|
|
64
|
+
base: benchmarks
|
|
65
|
+
- name: openspec-ff-change
|
|
66
|
+
skill: dependency/openspec/openspec-ff-change
|
|
67
|
+
variant: all
|
|
68
|
+
base: benchmarks
|
|
69
|
+
- name: openspec-new-change
|
|
70
|
+
skill: dependency/openspec/openspec-new-change
|
|
71
|
+
variant: all
|
|
72
|
+
base: benchmarks
|
|
73
|
+
- name: openspec-onboard
|
|
74
|
+
skill: dependency/openspec/openspec-onboard
|
|
75
|
+
variant: all
|
|
76
|
+
base: benchmarks
|
|
77
|
+
- name: openspec-propose
|
|
78
|
+
skill: dependency/openspec/openspec-propose
|
|
79
|
+
variant: all
|
|
80
|
+
base: benchmarks
|
|
81
|
+
- name: openspec-sync-specs
|
|
82
|
+
skill: dependency/openspec/openspec-sync-specs
|
|
83
|
+
variant: all
|
|
84
|
+
base: benchmarks
|
|
85
|
+
- name: openspec-verify-change
|
|
86
|
+
skill: dependency/openspec/openspec-verify-change
|
|
87
|
+
variant: all
|
|
88
|
+
base: benchmarks
|
|
89
|
+
# Superpowers dependencies used by Comet phase guidance and recovery paths.
|
|
90
|
+
- name: brainstorming
|
|
91
|
+
skill: dependency/superpowers/brainstorming
|
|
92
|
+
variant: all
|
|
93
|
+
base: benchmarks
|
|
94
|
+
- name: dispatching-parallel-agents
|
|
95
|
+
skill: dependency/superpowers/dispatching-parallel-agents
|
|
96
|
+
variant: all
|
|
97
|
+
base: benchmarks
|
|
98
|
+
- name: executing-plans
|
|
99
|
+
skill: dependency/superpowers/executing-plans
|
|
100
|
+
variant: all
|
|
101
|
+
base: benchmarks
|
|
102
|
+
- name: finishing-a-development-branch
|
|
103
|
+
skill: dependency/superpowers/finishing-a-development-branch
|
|
104
|
+
variant: all
|
|
105
|
+
base: benchmarks
|
|
106
|
+
- name: receiving-code-review
|
|
107
|
+
skill: dependency/superpowers/receiving-code-review
|
|
108
|
+
variant: all
|
|
109
|
+
base: benchmarks
|
|
110
|
+
- name: requesting-code-review
|
|
111
|
+
skill: dependency/superpowers/requesting-code-review
|
|
112
|
+
variant: all
|
|
113
|
+
base: benchmarks
|
|
114
|
+
- name: subagent-driven-development
|
|
115
|
+
skill: dependency/superpowers/subagent-driven-development
|
|
116
|
+
variant: all
|
|
117
|
+
base: benchmarks
|
|
118
|
+
- name: systematic-debugging
|
|
119
|
+
skill: dependency/superpowers/systematic-debugging
|
|
120
|
+
variant: all
|
|
121
|
+
base: benchmarks
|
|
122
|
+
- name: test-driven-development
|
|
123
|
+
skill: dependency/superpowers/test-driven-development
|
|
124
|
+
variant: all
|
|
125
|
+
base: benchmarks
|
|
126
|
+
- name: using-git-worktrees
|
|
127
|
+
skill: dependency/superpowers/using-git-worktrees
|
|
128
|
+
variant: all
|
|
129
|
+
base: benchmarks
|
|
130
|
+
- name: verification-before-completion
|
|
131
|
+
skill: dependency/superpowers/verification-before-completion
|
|
132
|
+
variant: all
|
|
133
|
+
base: benchmarks
|
|
134
|
+
- name: writing-plans
|
|
135
|
+
skill: dependency/superpowers/writing-plans
|
|
136
|
+
variant: all
|
|
137
|
+
base: benchmarks
|
|
138
|
+
- name: writing-skills
|
|
139
|
+
skill: dependency/superpowers/writing-skills
|
|
140
|
+
variant: all
|
|
141
|
+
base: benchmarks
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# Full comet skill treatment (workflow 0.4.0-beta.1, .mjs runtime)
|
|
2
|
+
# Injects: the 0.4.0 beta Comet snapshot plus the benchmark dependency
|
|
3
|
+
# snapshots under dependency/openspec and dependency/superpowers.
|
|
4
|
+
# OpenSpec CLI is still provided by the task Docker image; OpenSpec Skills are
|
|
5
|
+
# injected so slash/Skill invocation behavior matches a real installation.
|
|
6
|
+
COMET_FULL_040_BETA:
|
|
7
|
+
description: "Full comet skill (workflow 0.4.0-beta.1) with Comet, OpenSpec, and Superpowers dependencies"
|
|
8
|
+
skills:
|
|
9
|
+
# Main dispatcher (carries scripts/ with independent .mjs command bundles and runtime/classic control package)
|
|
10
|
+
- name: comet
|
|
11
|
+
skill: 040-beta/comet
|
|
12
|
+
variant: all
|
|
13
|
+
base: benchmarks
|
|
14
|
+
# Phase sub-skills (slash-invoked as /comet-open etc.)
|
|
15
|
+
- name: comet-open
|
|
16
|
+
skill: 040-beta/comet-open
|
|
17
|
+
variant: all
|
|
18
|
+
base: benchmarks
|
|
19
|
+
- name: comet-design
|
|
20
|
+
skill: 040-beta/comet-design
|
|
21
|
+
variant: all
|
|
22
|
+
base: benchmarks
|
|
23
|
+
- name: comet-build
|
|
24
|
+
skill: 040-beta/comet-build
|
|
25
|
+
variant: all
|
|
26
|
+
base: benchmarks
|
|
27
|
+
- name: comet-verify
|
|
28
|
+
skill: 040-beta/comet-verify
|
|
29
|
+
variant: all
|
|
30
|
+
base: benchmarks
|
|
31
|
+
- name: comet-archive
|
|
32
|
+
skill: 040-beta/comet-archive
|
|
33
|
+
variant: all
|
|
34
|
+
base: benchmarks
|
|
35
|
+
- name: comet-hotfix
|
|
36
|
+
skill: 040-beta/comet-hotfix
|
|
37
|
+
variant: all
|
|
38
|
+
base: benchmarks
|
|
39
|
+
- name: comet-tweak
|
|
40
|
+
skill: 040-beta/comet-tweak
|
|
41
|
+
variant: all
|
|
42
|
+
base: benchmarks
|
|
43
|
+
# OpenSpec workflow dependencies (benchmark dependency snapshots).
|
|
44
|
+
- name: openspec-apply-change
|
|
45
|
+
skill: dependency/openspec/openspec-apply-change
|
|
46
|
+
variant: all
|
|
47
|
+
base: benchmarks
|
|
48
|
+
- name: openspec-archive-change
|
|
49
|
+
skill: dependency/openspec/openspec-archive-change
|
|
50
|
+
variant: all
|
|
51
|
+
base: benchmarks
|
|
52
|
+
- name: openspec-bulk-archive-change
|
|
53
|
+
skill: dependency/openspec/openspec-bulk-archive-change
|
|
54
|
+
variant: all
|
|
55
|
+
base: benchmarks
|
|
56
|
+
- name: openspec-continue-change
|
|
57
|
+
skill: dependency/openspec/openspec-continue-change
|
|
58
|
+
variant: all
|
|
59
|
+
base: benchmarks
|
|
60
|
+
- name: openspec-explore
|
|
61
|
+
skill: dependency/openspec/openspec-explore
|
|
62
|
+
variant: all
|
|
63
|
+
base: benchmarks
|
|
64
|
+
- name: openspec-ff-change
|
|
65
|
+
skill: dependency/openspec/openspec-ff-change
|
|
66
|
+
variant: all
|
|
67
|
+
base: benchmarks
|
|
68
|
+
- name: openspec-new-change
|
|
69
|
+
skill: dependency/openspec/openspec-new-change
|
|
70
|
+
variant: all
|
|
71
|
+
base: benchmarks
|
|
72
|
+
- name: openspec-onboard
|
|
73
|
+
skill: dependency/openspec/openspec-onboard
|
|
74
|
+
variant: all
|
|
75
|
+
base: benchmarks
|
|
76
|
+
- name: openspec-propose
|
|
77
|
+
skill: dependency/openspec/openspec-propose
|
|
78
|
+
variant: all
|
|
79
|
+
base: benchmarks
|
|
80
|
+
- name: openspec-sync-specs
|
|
81
|
+
skill: dependency/openspec/openspec-sync-specs
|
|
82
|
+
variant: all
|
|
83
|
+
base: benchmarks
|
|
84
|
+
- name: openspec-verify-change
|
|
85
|
+
skill: dependency/openspec/openspec-verify-change
|
|
86
|
+
variant: all
|
|
87
|
+
base: benchmarks
|
|
88
|
+
# Superpowers dependencies used by Comet phase guidance and recovery paths.
|
|
89
|
+
- name: brainstorming
|
|
90
|
+
skill: dependency/superpowers/brainstorming
|
|
91
|
+
variant: all
|
|
92
|
+
base: benchmarks
|
|
93
|
+
- name: dispatching-parallel-agents
|
|
94
|
+
skill: dependency/superpowers/dispatching-parallel-agents
|
|
95
|
+
variant: all
|
|
96
|
+
base: benchmarks
|
|
97
|
+
- name: executing-plans
|
|
98
|
+
skill: dependency/superpowers/executing-plans
|
|
99
|
+
variant: all
|
|
100
|
+
base: benchmarks
|
|
101
|
+
- name: finishing-a-development-branch
|
|
102
|
+
skill: dependency/superpowers/finishing-a-development-branch
|
|
103
|
+
variant: all
|
|
104
|
+
base: benchmarks
|
|
105
|
+
- name: receiving-code-review
|
|
106
|
+
skill: dependency/superpowers/receiving-code-review
|
|
107
|
+
variant: all
|
|
108
|
+
base: benchmarks
|
|
109
|
+
- name: requesting-code-review
|
|
110
|
+
skill: dependency/superpowers/requesting-code-review
|
|
111
|
+
variant: all
|
|
112
|
+
base: benchmarks
|
|
113
|
+
- name: subagent-driven-development
|
|
114
|
+
skill: dependency/superpowers/subagent-driven-development
|
|
115
|
+
variant: all
|
|
116
|
+
base: benchmarks
|
|
117
|
+
- name: systematic-debugging
|
|
118
|
+
skill: dependency/superpowers/systematic-debugging
|
|
119
|
+
variant: all
|
|
120
|
+
base: benchmarks
|
|
121
|
+
- name: test-driven-development
|
|
122
|
+
skill: dependency/superpowers/test-driven-development
|
|
123
|
+
variant: all
|
|
124
|
+
base: benchmarks
|
|
125
|
+
- name: using-git-worktrees
|
|
126
|
+
skill: dependency/superpowers/using-git-worktrees
|
|
127
|
+
variant: all
|
|
128
|
+
base: benchmarks
|
|
129
|
+
- name: verification-before-completion
|
|
130
|
+
skill: dependency/superpowers/verification-before-completion
|
|
131
|
+
variant: all
|
|
132
|
+
base: benchmarks
|
|
133
|
+
- name: writing-plans
|
|
134
|
+
skill: dependency/superpowers/writing-plans
|
|
135
|
+
variant: all
|
|
136
|
+
base: benchmarks
|
|
137
|
+
- name: writing-skills
|
|
138
|
+
skill: dependency/superpowers/writing-skills
|
|
139
|
+
variant: all
|
|
140
|
+
base: benchmarks
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "comet-skill-eval"
|
|
3
|
+
version = "0.1.0"
|
|
4
|
+
description = "Benchmark evaluation for Comet skill (OpenSpec + Superpowers workflow)"
|
|
5
|
+
requires-python = ">=3.11"
|
|
6
|
+
dependencies = [
|
|
7
|
+
"pytest>=8.0",
|
|
8
|
+
"pytest-timeout>=2.2",
|
|
9
|
+
"pytest-xdist>=3.5",
|
|
10
|
+
"python-dotenv>=1.0",
|
|
11
|
+
"pyyaml>=6.0",
|
|
12
|
+
"pydantic>=2.0",
|
|
13
|
+
"requests>=2.31",
|
|
14
|
+
"tomli>=2.0; python_version < '3.11'",
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
[project.optional-dependencies]
|
|
18
|
+
# LangSmith tracing + pytest integration; install with: uv sync --extra langsmith
|
|
19
|
+
# The LangSmith suite marks tests with @pytest.mark.langsmith and logs rubric
|
|
20
|
+
# scores + treatment comparison via langsmith.testing (requires the pytest extra).
|
|
21
|
+
langsmith = [
|
|
22
|
+
"langsmith[pytest]>=0.3.4",
|
|
23
|
+
"langchain>=0.3",
|
|
24
|
+
"langchain-openai>=0.2",
|
|
25
|
+
]
|
|
26
|
+
dev = [
|
|
27
|
+
"ruff>=0.4",
|
|
28
|
+
"pre-commit>=3.7",
|
|
29
|
+
"matplotlib>=3.8",
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
[tool.pytest.ini_options]
|
|
33
|
+
testpaths = ["local/tests"]
|
|
34
|
+
pythonpath = ["."]
|
|
35
|
+
markers = [
|
|
36
|
+
"langsmith: marks test as using LangSmith tracing",
|
|
37
|
+
]
|
|
38
|
+
|
|
39
|
+
[tool.ruff]
|
|
40
|
+
line-length = 100
|
|
41
|
+
target-version = "py311"
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"""Testing scaffold for Comet skill benchmarks.
|
|
2
|
+
|
|
3
|
+
Re-exports from scaffold.python for convenience.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from .python import (
|
|
7
|
+
NoiseTask,
|
|
8
|
+
Treatment,
|
|
9
|
+
ValidatorFn,
|
|
10
|
+
build_docker_image,
|
|
11
|
+
check_claude_available,
|
|
12
|
+
check_code_execution,
|
|
13
|
+
check_docker_available,
|
|
14
|
+
check_file_exists,
|
|
15
|
+
check_no_pattern,
|
|
16
|
+
check_pattern,
|
|
17
|
+
check_skill_invoked,
|
|
18
|
+
compose_validators,
|
|
19
|
+
make_execution_validator,
|
|
20
|
+
run_claude_in_docker,
|
|
21
|
+
run_eval_in_docker,
|
|
22
|
+
run_node_in_docker,
|
|
23
|
+
run_python_in_docker,
|
|
24
|
+
run_shell,
|
|
25
|
+
run_validators,
|
|
26
|
+
)
|
|
27
|
+
from .python.tasks import Task, TaskConfig, list_tasks, load_task
|
|
28
|
+
from .python.treatments import (
|
|
29
|
+
TreatmentConfig,
|
|
30
|
+
build_treatment_skills,
|
|
31
|
+
list_treatments,
|
|
32
|
+
load_treatment,
|
|
33
|
+
load_treatments,
|
|
34
|
+
load_treatments_yaml,
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
__all__ = [
|
|
38
|
+
"Task",
|
|
39
|
+
"TaskConfig",
|
|
40
|
+
"load_task",
|
|
41
|
+
"list_tasks",
|
|
42
|
+
"TreatmentConfig",
|
|
43
|
+
"build_treatment_skills",
|
|
44
|
+
"list_treatments",
|
|
45
|
+
"load_treatment",
|
|
46
|
+
"load_treatments",
|
|
47
|
+
"load_treatments_yaml",
|
|
48
|
+
"NoiseTask",
|
|
49
|
+
"Treatment",
|
|
50
|
+
"ValidatorFn",
|
|
51
|
+
"compose_validators",
|
|
52
|
+
"run_validators",
|
|
53
|
+
"check_file_exists",
|
|
54
|
+
"check_pattern",
|
|
55
|
+
"check_no_pattern",
|
|
56
|
+
"check_skill_invoked",
|
|
57
|
+
"check_code_execution",
|
|
58
|
+
"run_shell",
|
|
59
|
+
"check_docker_available",
|
|
60
|
+
"check_claude_available",
|
|
61
|
+
"build_docker_image",
|
|
62
|
+
"run_python_in_docker",
|
|
63
|
+
"make_execution_validator",
|
|
64
|
+
"run_eval_in_docker",
|
|
65
|
+
"run_node_in_docker",
|
|
66
|
+
"run_claude_in_docker",
|
|
67
|
+
]
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"""Python-specific scaffold components for comet skill benchmarks."""
|
|
2
|
+
|
|
3
|
+
from .logging import (
|
|
4
|
+
ExperimentLogger,
|
|
5
|
+
ReportColumn,
|
|
6
|
+
TreatmentResult,
|
|
7
|
+
bool_column,
|
|
8
|
+
default_columns,
|
|
9
|
+
extract_events,
|
|
10
|
+
parse_output,
|
|
11
|
+
quality_column,
|
|
12
|
+
save_events,
|
|
13
|
+
save_raw,
|
|
14
|
+
save_report,
|
|
15
|
+
strip_ansi,
|
|
16
|
+
)
|
|
17
|
+
from .manifests import SkillEvalManifest, load_eval_manifest
|
|
18
|
+
from .profiles import (
|
|
19
|
+
AUTHORING_SKILL_PROFILE,
|
|
20
|
+
COMET_WORKFLOW_PROFILE,
|
|
21
|
+
GENERIC_PROFILE,
|
|
22
|
+
ProfileSpec,
|
|
23
|
+
all_rubric_dimensions,
|
|
24
|
+
get_profile,
|
|
25
|
+
list_profiles,
|
|
26
|
+
resolve_profile_name,
|
|
27
|
+
run_profile_rubric,
|
|
28
|
+
)
|
|
29
|
+
from .evidence import EvalArtifactReference, build_eval_artifact_references
|
|
30
|
+
from .attribution import FailureAttribution, classify_failures
|
|
31
|
+
from .sample_quality import (
|
|
32
|
+
SampleQuality,
|
|
33
|
+
include_in_analysis,
|
|
34
|
+
infer_sample_quality,
|
|
35
|
+
quality_from_report,
|
|
36
|
+
sample_quality_dict,
|
|
37
|
+
)
|
|
38
|
+
from .report_outputs import (
|
|
39
|
+
ReportOutputConfig,
|
|
40
|
+
load_report_output_config,
|
|
41
|
+
preferred_report_path,
|
|
42
|
+
render_markdown_html,
|
|
43
|
+
write_report_outputs,
|
|
44
|
+
)
|
|
45
|
+
from .schema import NoiseTask, Treatment
|
|
46
|
+
from .utils import (
|
|
47
|
+
build_docker_image,
|
|
48
|
+
check_claude_available,
|
|
49
|
+
check_docker_available,
|
|
50
|
+
get_field,
|
|
51
|
+
get_nested_field,
|
|
52
|
+
make_execution_validator,
|
|
53
|
+
normalize_score,
|
|
54
|
+
read_json_file,
|
|
55
|
+
retry_with_backoff,
|
|
56
|
+
run_claude_in_docker,
|
|
57
|
+
run_eval_in_docker,
|
|
58
|
+
run_node_in_docker,
|
|
59
|
+
run_python_in_docker,
|
|
60
|
+
run_shell,
|
|
61
|
+
)
|
|
62
|
+
from .validation import (
|
|
63
|
+
ValidatorFn,
|
|
64
|
+
check_code_execution,
|
|
65
|
+
check_file_exists,
|
|
66
|
+
check_no_pattern,
|
|
67
|
+
check_pattern,
|
|
68
|
+
check_python_execution,
|
|
69
|
+
check_skill_invoked,
|
|
70
|
+
check_typescript_execution,
|
|
71
|
+
compose_validators,
|
|
72
|
+
run_validators,
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
__all__ = [
|
|
76
|
+
"NoiseTask", "Treatment", "ValidatorFn", "compose_validators", "run_validators",
|
|
77
|
+
"check_file_exists", "check_pattern", "check_no_pattern", "check_skill_invoked",
|
|
78
|
+
"check_code_execution", "check_python_execution", "check_typescript_execution",
|
|
79
|
+
"run_shell", "check_docker_available", "check_claude_available", "build_docker_image",
|
|
80
|
+
"run_python_in_docker", "make_execution_validator", "run_eval_in_docker",
|
|
81
|
+
"run_node_in_docker", "run_claude_in_docker", "retry_with_backoff", "read_json_file",
|
|
82
|
+
"get_field", "get_nested_field", "normalize_score", "parse_output", "extract_events",
|
|
83
|
+
"strip_ansi", "ExperimentLogger", "TreatmentResult", "save_events", "save_raw",
|
|
84
|
+
"save_report", "ReportColumn", "bool_column", "quality_column", "default_columns",
|
|
85
|
+
"EvalArtifactReference", "build_eval_artifact_references",
|
|
86
|
+
"FailureAttribution", "classify_failures",
|
|
87
|
+
"SkillEvalManifest", "load_eval_manifest",
|
|
88
|
+
"AUTHORING_SKILL_PROFILE", "COMET_WORKFLOW_PROFILE", "GENERIC_PROFILE",
|
|
89
|
+
"ProfileSpec", "all_rubric_dimensions", "get_profile", "list_profiles",
|
|
90
|
+
"resolve_profile_name", "run_profile_rubric",
|
|
91
|
+
"ReportOutputConfig", "load_report_output_config", "preferred_report_path",
|
|
92
|
+
"render_markdown_html", "write_report_outputs",
|
|
93
|
+
"SampleQuality", "infer_sample_quality", "quality_from_report",
|
|
94
|
+
"sample_quality_dict", "include_in_analysis",
|
|
95
|
+
]
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"""Failure attribution for eval reports."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import re
|
|
6
|
+
from dataclasses import asdict, dataclass
|
|
7
|
+
from typing import Literal
|
|
8
|
+
|
|
9
|
+
FailureBucket = Literal["harness", "workflow", "task", "model"]
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@dataclass(frozen=True)
|
|
13
|
+
class FailureAttribution:
|
|
14
|
+
bucket: FailureBucket
|
|
15
|
+
check: str
|
|
16
|
+
reason: str
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def classify_failure(check: str, events: dict, profile: str | None) -> FailureAttribution:
|
|
20
|
+
skills_invoked = events.get("skills_invoked") or []
|
|
21
|
+
if re.search(r"Required skill not invoked|skill.*not invoked", check, re.I):
|
|
22
|
+
if not skills_invoked:
|
|
23
|
+
return FailureAttribution(
|
|
24
|
+
"harness",
|
|
25
|
+
check,
|
|
26
|
+
"target Skill was never invoked, so workflow quality is not observable",
|
|
27
|
+
)
|
|
28
|
+
return FailureAttribution("workflow", check, "Skill invocation contract failed")
|
|
29
|
+
|
|
30
|
+
if re.search(r"artifact path|not found in archive|validator|task directory", check, re.I):
|
|
31
|
+
return FailureAttribution("task", check, "task or validator path assumption failed")
|
|
32
|
+
|
|
33
|
+
if re.search(r"\.comet\.yaml|guard|state|transition|archive", check, re.I):
|
|
34
|
+
return FailureAttribution("workflow", check, "workflow state or guard evidence failed")
|
|
35
|
+
|
|
36
|
+
if profile == "generic" and not skills_invoked:
|
|
37
|
+
return FailureAttribution("harness", check, "generic Skill target did not run")
|
|
38
|
+
|
|
39
|
+
return FailureAttribution("model", check, "task failed after observable workflow execution")
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def classify_failures(failed: list[str], events: dict, profile: str | None) -> list[dict[str, str]]:
|
|
43
|
+
return [asdict(classify_failure(check, events, profile)) for check in failed]
|