@rpamis/comet 0.4.0-beta.3 → 0.4.0-beta.5
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/LICENSE +21 -21
- package/README.md +15 -1
- package/assets/manifest.json +2 -1
- package/assets/skills/comet/SKILL.md +54 -28
- package/assets/skills/comet/reference/auto-transition.md +1 -1
- package/assets/skills/comet/reference/comet-yaml-fields.md +11 -6
- package/assets/skills/comet/reference/context-recovery.md +12 -2
- package/assets/skills/comet/reference/decision-point.md +11 -0
- package/assets/skills/comet/reference/scripts.md +47 -15
- package/assets/skills/comet/reference/subagent-dispatch.md +6 -5
- package/assets/skills/comet/rules/comet-phase-guard.en.md +31 -28
- package/assets/skills/comet/rules/comet-phase-guard.md +31 -29
- package/assets/skills/comet/scripts/comet-resume-probe.mjs +3 -0
- package/assets/skills/comet/scripts/comet-runtime.mjs +1568 -476
- package/assets/skills/comet-any/SKILL.md +1 -1
- package/assets/skills/comet-any/reference/authored-zone-example.md +10 -5
- package/assets/skills/comet-any/reference/subagents/pause-points-author.md +14 -11
- package/assets/skills/comet-any/reference/subagents/skill-reviewer.md +2 -0
- package/assets/skills/comet-any/reference/subagents/workflow-entry-author.md +5 -4
- package/assets/skills/comet-archive/SKILL.md +52 -18
- package/assets/skills/comet-build/SKILL.md +64 -45
- package/assets/skills/comet-design/SKILL.md +24 -22
- package/assets/skills/comet-hotfix/SKILL.md +37 -34
- package/assets/skills/comet-open/SKILL.md +106 -57
- package/assets/skills/comet-tweak/SKILL.md +23 -18
- package/assets/skills/comet-verify/SKILL.md +57 -72
- package/assets/skills-zh/comet/SKILL.md +54 -28
- package/assets/skills-zh/comet/reference/auto-transition.md +1 -1
- package/assets/skills-zh/comet/reference/comet-yaml-fields.md +11 -6
- package/assets/skills-zh/comet/reference/context-recovery.md +12 -2
- package/assets/skills-zh/comet/reference/decision-point.md +11 -0
- package/assets/skills-zh/comet/reference/scripts.md +47 -15
- package/assets/skills-zh/comet/reference/subagent-dispatch.md +6 -5
- package/assets/skills-zh/comet-any/SKILL.md +1 -1
- package/assets/skills-zh/comet-any/reference/authored-zone-example.md +10 -5
- package/assets/skills-zh/comet-any/reference/subagents/pause-points-author.md +14 -12
- package/assets/skills-zh/comet-any/reference/subagents/skill-reviewer.md +2 -0
- package/assets/skills-zh/comet-any/reference/subagents/workflow-entry-author.md +5 -4
- package/assets/skills-zh/comet-archive/SKILL.md +52 -18
- package/assets/skills-zh/comet-build/SKILL.md +64 -45
- package/assets/skills-zh/comet-design/SKILL.md +24 -22
- package/assets/skills-zh/comet-hotfix/SKILL.md +36 -33
- package/assets/skills-zh/comet-open/SKILL.md +105 -56
- package/assets/skills-zh/comet-tweak/SKILL.md +22 -17
- package/assets/skills-zh/comet-verify/SKILL.md +57 -72
- 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 +99 -37
- 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 +1 -1
- package/dist/app/commands/init.d.ts.map +1 -1
- package/dist/app/commands/init.js +72 -25
- 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 +5 -0
- package/dist/app/commands/uninstall.d.ts.map +1 -1
- package/dist/app/commands/uninstall.js +264 -53
- 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 +558 -86
- 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 +1 -0
- package/dist/domains/bundle/bundle-platform.d.ts.map +1 -1
- package/dist/domains/bundle/bundle-platform.js +9 -3
- 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 +83 -80
- 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 +179 -42
- 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 +4 -4
- 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 +150 -25
- package/dist/domains/comet-classic/classic-state-command.js.map +1 -1
- package/dist/domains/comet-classic/classic-state.d.ts +5 -2
- package/dist/domains/comet-classic/classic-state.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-state.js +17 -1
- 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 +36 -3
- 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 +8 -1
- 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/_commonjsHelpers-CqkleIqs.js +1 -0
- package/dist/domains/dashboard/web/assets/arc-TGVUG2WN.js +1 -0
- package/dist/domains/dashboard/web/assets/architectureDiagram-3BPJPVTR-ASHmiHoP.js +36 -0
- package/dist/domains/dashboard/web/assets/blockDiagram-GPEHLZMM-CwASxBKe.js +132 -0
- package/dist/domains/dashboard/web/assets/c4Diagram-AAUBKEIU-BU8z_WNk.js +10 -0
- package/dist/domains/dashboard/web/assets/channel-kp6Ng2JJ.js +1 -0
- package/dist/domains/dashboard/web/assets/chunk-2J33WTMH-CBGlUx4_.js +1 -0
- package/dist/domains/dashboard/web/assets/chunk-4BX2VUAB-CS-iGcFz.js +1 -0
- package/dist/domains/dashboard/web/assets/chunk-55IACEB6-BUtCVJat.js +1 -0
- package/dist/domains/dashboard/web/assets/chunk-727SXJPM-C94tj_pf.js +206 -0
- package/dist/domains/dashboard/web/assets/chunk-AQP2D5EJ-BFOKcpdG.js +231 -0
- package/dist/domains/dashboard/web/assets/chunk-FMBD7UC4-Dmx8B-st.js +15 -0
- package/dist/domains/dashboard/web/assets/chunk-ND2GUHAM-DYV00CNn.js +1 -0
- package/dist/domains/dashboard/web/assets/chunk-QZHKN3VN-DMJJyQnw.js +1 -0
- package/dist/domains/dashboard/web/assets/classDiagram-4FO5ZUOK-yBDjgMY_.js +1 -0
- package/dist/domains/dashboard/web/assets/classDiagram-v2-Q7XG4LA2-yBDjgMY_.js +1 -0
- package/dist/domains/dashboard/web/assets/cose-bilkent-S5V4N54A-P4nE2rea.js +1 -0
- package/dist/domains/dashboard/web/assets/cynefin-VYW2F7L2-C-R1HXDv.js +166 -0
- package/dist/domains/dashboard/web/assets/cytoscape.esm-D3_iZ_3b.js +321 -0
- package/dist/domains/dashboard/web/assets/dagre-BM42HDAG-BH8d-C9z.js +4 -0
- package/dist/domains/dashboard/web/assets/defaultLocale-DX6XiGOO.js +1 -0
- package/dist/domains/dashboard/web/assets/diagram-2AECGRRQ-DpXTgQIH.js +43 -0
- package/dist/domains/dashboard/web/assets/diagram-5GNKFQAL-DSiFJzSw.js +10 -0
- package/dist/domains/dashboard/web/assets/diagram-KO2AKTUF-DULMkben.js +3 -0
- package/dist/domains/dashboard/web/assets/diagram-LMA3HP47-Pi8m_NO9.js +24 -0
- package/dist/domains/dashboard/web/assets/diagram-OG6HWLK6-BSe6bCWm.js +24 -0
- package/dist/domains/dashboard/web/assets/erDiagram-TEJ5UH35-zb-FEcbq.js +85 -0
- package/dist/domains/dashboard/web/assets/flowDiagram-I6XJVG4X-Dr-Gk0z2.js +162 -0
- package/dist/domains/dashboard/web/assets/ganttDiagram-6RSMTGT7-qs6Zb2A6.js +292 -0
- package/dist/domains/dashboard/web/assets/gitGraphDiagram-PVQCEYII-BQ314orT.js +106 -0
- package/dist/domains/dashboard/web/assets/graph--OzhPTMs.js +1 -0
- package/dist/domains/dashboard/web/assets/index-BLAfkNTu.css +1 -0
- package/dist/domains/dashboard/web/assets/index-DlSYK56b.js +139 -0
- package/dist/domains/dashboard/web/assets/index-DtLUOcAW.js +24 -0
- package/dist/domains/dashboard/web/assets/index-QO0z6F4w.js +10 -0
- package/dist/domains/dashboard/web/assets/infoDiagram-5YYISTIA-O0bQp98A.js +2 -0
- package/dist/domains/dashboard/web/assets/init-Gi6I4Gst.js +1 -0
- package/dist/domains/dashboard/web/assets/ishikawaDiagram-YF4QCWOH-BPC7wbKh.js +70 -0
- package/dist/domains/dashboard/web/assets/journeyDiagram-JHISSGLW-ohViOd4b.js +139 -0
- package/dist/domains/dashboard/web/assets/kanban-definition-UN3LZRKU-CHleNdbG.js +89 -0
- package/dist/domains/dashboard/web/assets/katex-HP8lGamR.js +257 -0
- package/dist/domains/dashboard/web/assets/layout-SsrduOYp.js +1 -0
- package/dist/domains/dashboard/web/assets/linear-CyqiW--Q.js +1 -0
- package/dist/domains/dashboard/web/assets/marked.esm-DECB3bxB.js +64 -0
- package/dist/domains/dashboard/web/assets/mermaid.core-qS9XvtaK.js +301 -0
- package/dist/domains/dashboard/web/assets/mindmap-definition-RKZ34NQL-oaGkqO9l.js +96 -0
- package/dist/domains/dashboard/web/assets/ordinal-Cboi1Yqb.js +1 -0
- package/dist/domains/dashboard/web/assets/pieDiagram-4H26LBE5-CPcB-AFh.js +30 -0
- package/dist/domains/dashboard/web/assets/purify.es-VaSPOPhr.js +3 -0
- package/dist/domains/dashboard/web/assets/quadrantDiagram-W4KKPZXB-LFy52Qtj.js +7 -0
- package/dist/domains/dashboard/web/assets/requirementDiagram-4Y6WPE33-BdjeaYP_.js +84 -0
- package/dist/domains/dashboard/web/assets/sankeyDiagram-5OEKKPKP-DDJ4styL.js +40 -0
- package/dist/domains/dashboard/web/assets/sequenceDiagram-3UESZ5HK-BL5bFNoz.js +162 -0
- package/dist/domains/dashboard/web/assets/stateDiagram-AJRCARHV-BNUfikui.js +1 -0
- package/dist/domains/dashboard/web/assets/stateDiagram-v2-BHNVJYJU-DGrsmWts.js +1 -0
- package/dist/domains/dashboard/web/assets/timeline-definition-PNZ67QCA--ps2uu6L.js +120 -0
- package/dist/domains/dashboard/web/assets/vennDiagram-CIIHVFJN-C2q8q26c.js +34 -0
- package/dist/domains/dashboard/web/assets/wardleyDiagram-YWT4CUSO-BUH9gXqd.js +78 -0
- package/dist/domains/dashboard/web/assets/xychartDiagram-2RQKCTM6-B-DielEy.js +7 -0
- package/dist/domains/dashboard/web/index.html +16 -16
- package/dist/domains/engine/types.d.ts +1 -1
- package/dist/domains/engine/types.d.ts.map +1 -1
- package/dist/domains/factory/package.d.ts.map +1 -1
- package/dist/domains/factory/package.js +20 -6
- package/dist/domains/factory/package.js.map +1 -1
- package/dist/domains/integrations/openspec.d.ts +4 -1
- package/dist/domains/integrations/openspec.d.ts.map +1 -1
- package/dist/domains/integrations/openspec.js +62 -10
- 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/json-object.d.ts +13 -0
- package/dist/domains/skill/json-object.d.ts.map +1 -0
- package/dist/domains/skill/json-object.js +24 -0
- package/dist/domains/skill/json-object.js.map +1 -0
- 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-inspect.d.ts +9 -0
- package/dist/domains/skill/platform-inspect.d.ts.map +1 -0
- package/dist/domains/skill/platform-inspect.js +149 -0
- package/dist/domains/skill/platform-inspect.js.map +1 -0
- package/dist/domains/skill/platform-install.d.ts +20 -9
- package/dist/domains/skill/platform-install.d.ts.map +1 -1
- package/dist/domains/skill/platform-install.js +356 -153
- 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 +259 -149
- package/dist/domains/skill/uninstall.js.map +1 -1
- package/dist/platform/fs/file-system.d.ts +3 -3
- package/dist/platform/fs/file-system.d.ts.map +1 -1
- package/dist/platform/fs/file-system.js +21 -11
- package/dist/platform/fs/file-system.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 +9 -1
- package/dist/platform/install/platforms.d.ts.map +1 -1
- package/dist/platform/install/platforms.js +23 -4
- package/dist/platform/install/platforms.js.map +1 -1
- package/dist/platform/install/project-registry.d.ts +38 -0
- package/dist/platform/install/project-registry.d.ts.map +1 -0
- package/dist/platform/install/project-registry.js +213 -0
- package/dist/platform/install/project-registry.js.map +1 -0
- package/dist/platform/install/skill-root-owner.d.ts +15 -0
- package/dist/platform/install/skill-root-owner.d.ts.map +1 -0
- package/dist/platform/install/skill-root-owner.js +68 -0
- package/dist/platform/install/skill-root-owner.js.map +1 -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 +29 -2
- package/dist/domains/dashboard/web/assets/index-BcO3_QlT.css +0 -1
- package/dist/domains/dashboard/web/assets/index-CjU3VXVu.js +0 -22
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
You are working on a Python project called "text-processor" - a text analysis utility library.
|
|
2
|
+
|
|
3
|
+
Your task: Use the comet workflow to **refactor** the duplicated counting logic.
|
|
4
|
+
|
|
5
|
+
## The problem
|
|
6
|
+
|
|
7
|
+
`text_processor.py` has three near-identical functions — `count_words`, `count_lines`, `count_chars` — each repeating the same "split + iterate + tally" pattern with only the splitting strategy differing. This violates DRY.
|
|
8
|
+
|
|
9
|
+
The goal is to introduce a **single dispatcher**:
|
|
10
|
+
|
|
11
|
+
```python
|
|
12
|
+
def count(text: str, unit: str) -> int:
|
|
13
|
+
"""Count words/lines/chars. unit must be 'words', 'lines', or 'chars'."""
|
|
14
|
+
...
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Then rewrite `count_words`, `count_lines`, `count_chars` as **thin wrappers** that delegate to `count()`. The public API (function names, signatures, return values) must stay identical.
|
|
18
|
+
|
|
19
|
+
## Constraints
|
|
20
|
+
|
|
21
|
+
- **Behavior must not change**: every test in `test_text_processor.py` must still pass.
|
|
22
|
+
- `analyze()` must continue to work unchanged.
|
|
23
|
+
- `count()` should raise `ValueError` for an unknown unit.
|
|
24
|
+
|
|
25
|
+
## What to do
|
|
26
|
+
|
|
27
|
+
1. First, run the existing tests to confirm they pass: `python -m pytest test_text_processor.py -v`
|
|
28
|
+
2. Follow the comet workflow phases (Open → Design → Build → Verify → Archive).
|
|
29
|
+
3. After refactoring, run the tests again to prove behavior is preserved.
|
|
30
|
+
|
|
31
|
+
Start by detecting the current phase and following the comet workflow. When you reach a decision point that asks for confirmation, assume "yes, proceed with the recommended option".
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
[metadata]
|
|
2
|
+
name = "comet-refactor-counter"
|
|
3
|
+
description = "Refactor three duplicated counting functions into a single count(text, unit) dispatcher without changing behavior"
|
|
4
|
+
difficulty = "medium"
|
|
5
|
+
category = "comet"
|
|
6
|
+
tags = ["comet", "workflow", "refactor", "dry"]
|
|
7
|
+
default_treatments = [
|
|
8
|
+
"CONTROL",
|
|
9
|
+
"COMET_FULL_040_BETA",
|
|
10
|
+
"COMET_FULL_039",
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
[template]
|
|
14
|
+
required = []
|
|
15
|
+
|
|
16
|
+
[environment]
|
|
17
|
+
description = "Python text processor with duplicated counting logic. Claude must refactor while preserving behavior."
|
|
18
|
+
dockerfile = "environment/Dockerfile"
|
|
19
|
+
timeout_sec = 900
|
|
20
|
+
|
|
21
|
+
[validation]
|
|
22
|
+
test_scripts = "test_refactor_counter.py"
|
|
23
|
+
target_artifacts = []
|
|
24
|
+
timeout = 120
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"""Validation for the comet-refactor-counter task.
|
|
2
|
+
|
|
3
|
+
Checks: comet workflow followed + a count() dispatcher exists + behavior
|
|
4
|
+
preserved (all existing tests pass) + wrappers delegate (no duplicated loops).
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import re
|
|
8
|
+
import subprocess
|
|
9
|
+
import sys
|
|
10
|
+
|
|
11
|
+
from comet_checks import (
|
|
12
|
+
run_comet_checks,
|
|
13
|
+
write_results,
|
|
14
|
+
_passed,
|
|
15
|
+
_failed,
|
|
16
|
+
WORKSPACE,
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def _subprocess_output(result: subprocess.CompletedProcess) -> str:
|
|
21
|
+
output = "\n".join(
|
|
22
|
+
part.strip()
|
|
23
|
+
for part in (result.stdout or "", result.stderr or "")
|
|
24
|
+
if part and part.strip()
|
|
25
|
+
)
|
|
26
|
+
return output[-600:]
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def check_count_dispatcher() -> dict:
|
|
30
|
+
"""A count(text, unit) dispatcher exists and wrappers delegate to it."""
|
|
31
|
+
src_path = WORKSPACE / "text_processor.py"
|
|
32
|
+
if not src_path.exists():
|
|
33
|
+
return _failed("count_dispatcher", "text_processor.py not found")
|
|
34
|
+
src = src_path.read_text(errors="ignore")
|
|
35
|
+
|
|
36
|
+
# Dispatcher must exist.
|
|
37
|
+
if not re.search(r"^def count\(\s*(?:text|s)\s*:\s*str\s*,\s*unit\s*:\s*str", src, re.MULTILINE):
|
|
38
|
+
return _failed("count_dispatcher", "no count(text, unit) dispatcher found")
|
|
39
|
+
|
|
40
|
+
# Wrappers must delegate (contain a count( call), not their own tally loop.
|
|
41
|
+
for wrapper in ("count_words", "count_lines", "count_chars"):
|
|
42
|
+
# Find the function body.
|
|
43
|
+
m = re.search(rf"def {wrapper}\([^)]*\)\s*(?:->\s*[^:]+)?:(.*?)(?=\ndef |\Z)", src, re.DOTALL)
|
|
44
|
+
if not m:
|
|
45
|
+
return _failed("count_dispatcher", f"wrapper {wrapper} missing")
|
|
46
|
+
body = m.group(1)
|
|
47
|
+
if "count(" not in body:
|
|
48
|
+
return _failed("count_dispatcher", f"{wrapper} does not delegate to count()")
|
|
49
|
+
# A raw for-loop tallying a counter inside the wrapper means it wasn't refactored.
|
|
50
|
+
if re.search(r"\bcount\s*\+=\s*1", body) or re.search(r"for\s+\w+\s+in\s+\w+\.split", body):
|
|
51
|
+
return _failed("count_dispatcher", f"{wrapper} still has inline tally logic")
|
|
52
|
+
|
|
53
|
+
return _passed("count_dispatcher", "count() dispatcher + 3 delegating wrappers")
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def check_behavior_preserved() -> dict:
|
|
57
|
+
"""All existing tests still pass after refactoring."""
|
|
58
|
+
result = subprocess.run(
|
|
59
|
+
[sys.executable, "-m", "pytest", "test_text_processor.py", "-q"],
|
|
60
|
+
capture_output=True, text=True, cwd=str(WORKSPACE),
|
|
61
|
+
)
|
|
62
|
+
if result.returncode != 0:
|
|
63
|
+
return _failed("behavior_preserved", f"tests failing:\n{_subprocess_output(result)}")
|
|
64
|
+
return _passed("behavior_preserved", "all existing tests pass")
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def run_all() -> list[dict]:
|
|
68
|
+
results = run_comet_checks()
|
|
69
|
+
results.append(check_count_dispatcher())
|
|
70
|
+
results.append(check_behavior_preserved())
|
|
71
|
+
return results
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
if __name__ == "__main__":
|
|
75
|
+
write_results(run_all())
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
FROM python:3.12-slim
|
|
2
|
+
|
|
3
|
+
WORKDIR /workspace
|
|
4
|
+
|
|
5
|
+
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
6
|
+
bash git curl jq ca-certificates \
|
|
7
|
+
nodejs npm && \
|
|
8
|
+
rm -rf /var/lib/apt/lists/*
|
|
9
|
+
|
|
10
|
+
RUN pip install --no-cache-dir pyyaml pytest
|
|
11
|
+
|
|
12
|
+
RUN npm config set registry https://registry.npmmirror.com && \
|
|
13
|
+
npm install -g @fission-ai/openspec@1.3.1 && \
|
|
14
|
+
npm config delete registry
|
|
15
|
+
|
|
16
|
+
ARG CLAUDE_CODE_VERSION=latest
|
|
17
|
+
RUN npm config set registry https://registry.npmmirror.com && \
|
|
18
|
+
npm install -g @anthropic-ai/claude-code@${CLAUDE_CODE_VERSION} && \
|
|
19
|
+
npm config delete registry
|
|
20
|
+
|
|
21
|
+
COPY config_loader.py /workspace/config_loader.py
|
|
22
|
+
COPY test_config_loader.py /workspace/test_config_loader.py
|
|
23
|
+
|
|
24
|
+
RUN mkdir -p wordcount-cli && \
|
|
25
|
+
echo '# Config Loader' > wordcount-cli/README.md
|
|
26
|
+
RUN mkdir -p openspec/changes
|
|
27
|
+
|
|
28
|
+
RUN useradd --create-home --shell /bin/bash agent && \
|
|
29
|
+
chown -R agent:agent /workspace
|
|
30
|
+
USER agent
|
|
31
|
+
ENV HOME=/home/agent
|
|
32
|
+
# Validator scripts import scaffold.*; bake PYTHONPATH so it never crosses the
|
|
33
|
+
# MSYS path-conversion boundary on the docker run command line.
|
|
34
|
+
ENV PYTHONPATH=/workspace
|
|
35
|
+
RUN git config --global user.email "agent@eval.local" && \
|
|
36
|
+
git config --global user.name "Comet Eval Agent" && \
|
|
37
|
+
git config --global init.defaultBranch master
|
|
38
|
+
|
|
39
|
+
CMD ["bash"]
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"""config-loader: load and query simple INI-style configuration files.
|
|
2
|
+
|
|
3
|
+
The current implementation is brittle: it crashes or silently misbehaves on
|
|
4
|
+
malformed input. The task is to add structured error handling so invalid input
|
|
5
|
+
raises a clear, typed exception instead of a cryptic crash.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
from typing import Any
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class ConfigError(Exception):
|
|
14
|
+
"""Base exception for all config-loading errors."""
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def load_config(text: str) -> dict[str, dict[str, str]]:
|
|
18
|
+
"""Parse an INI-style config string into {section: {key: value}}.
|
|
19
|
+
|
|
20
|
+
Format:
|
|
21
|
+
[section]
|
|
22
|
+
key = value
|
|
23
|
+
# comment lines start with #
|
|
24
|
+
|
|
25
|
+
BUG: malformed input causes unhandled exceptions or silently corrupt data.
|
|
26
|
+
It should instead raise ConfigError subclasses with clear messages.
|
|
27
|
+
"""
|
|
28
|
+
config: dict[str, dict[str, str]] = {}
|
|
29
|
+
current_section: str | None = None
|
|
30
|
+
|
|
31
|
+
for lineno, line in enumerate(text.splitlines(), 1):
|
|
32
|
+
stripped = line.strip()
|
|
33
|
+
if not stripped or stripped.startswith("#"):
|
|
34
|
+
continue
|
|
35
|
+
if stripped.startswith("[") and stripped.endswith("]"):
|
|
36
|
+
current_section = stripped[1:-1]
|
|
37
|
+
if current_section in config:
|
|
38
|
+
# BUG: silently overwrites instead of raising
|
|
39
|
+
pass
|
|
40
|
+
config[current_section] = {}
|
|
41
|
+
continue
|
|
42
|
+
if "=" not in stripped:
|
|
43
|
+
# BUG: silently skips invalid lines instead of raising
|
|
44
|
+
continue
|
|
45
|
+
if current_section is None:
|
|
46
|
+
# BUG: crashes later with KeyError or silently drops
|
|
47
|
+
continue
|
|
48
|
+
key, _, value = stripped.partition("=")
|
|
49
|
+
config[current_section][key.strip()] = value.strip()
|
|
50
|
+
|
|
51
|
+
return config
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def get(config: dict[str, dict[str, str]], section: str, key: str, default: Any = None) -> Any:
|
|
55
|
+
"""Get a value from a loaded config, or `default` if missing."""
|
|
56
|
+
return config.get(section, {}).get(key, default)
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"""Tests for config-loader.
|
|
2
|
+
|
|
3
|
+
The error-handling tests currently FAIL (the brittle implementation crashes or
|
|
4
|
+
silently misbehaves). The happy-path tests pass.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import pytest
|
|
8
|
+
|
|
9
|
+
from config_loader import ConfigError, load_config, get
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
VALID_CONFIG = """\
|
|
13
|
+
# Application settings
|
|
14
|
+
[server]
|
|
15
|
+
host = localhost
|
|
16
|
+
port = 8080
|
|
17
|
+
|
|
18
|
+
[database]
|
|
19
|
+
url = postgres://localhost/app
|
|
20
|
+
pool = 10
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class TestHappyPath:
|
|
25
|
+
def test_parse_basic(self):
|
|
26
|
+
cfg = load_config(VALID_CONFIG)
|
|
27
|
+
assert cfg["server"]["host"] == "localhost"
|
|
28
|
+
assert cfg["server"]["port"] == "8080"
|
|
29
|
+
assert cfg["database"]["pool"] == "10"
|
|
30
|
+
|
|
31
|
+
def test_comments_ignored(self):
|
|
32
|
+
cfg = load_config("# comment\n[s]\nk = v\n")
|
|
33
|
+
assert cfg == {"s": {"k": "v"}}
|
|
34
|
+
|
|
35
|
+
def test_empty(self):
|
|
36
|
+
assert load_config("") == {}
|
|
37
|
+
|
|
38
|
+
def test_get_with_default(self):
|
|
39
|
+
cfg = load_config("[s]\nk = v\n")
|
|
40
|
+
assert get(cfg, "s", "k") == "v"
|
|
41
|
+
assert get(cfg, "s", "missing", "fb") == "fb"
|
|
42
|
+
assert get(cfg, "nope", "k", "fb") == "fb"
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class TestErrorHandling:
|
|
46
|
+
def test_key_without_section_raises(self):
|
|
47
|
+
"""A key=value line before any [section] must raise ConfigError."""
|
|
48
|
+
with pytest.raises(ConfigError):
|
|
49
|
+
load_config("key = value\n[section]\n")
|
|
50
|
+
|
|
51
|
+
def test_duplicate_section_raises(self):
|
|
52
|
+
"""The same [section] appearing twice must raise ConfigError."""
|
|
53
|
+
with pytest.raises(ConfigError):
|
|
54
|
+
load_config("[s]\nk=v\n[s]\nk2=v2\n")
|
|
55
|
+
|
|
56
|
+
def test_malformed_line_raises(self):
|
|
57
|
+
"""A line that is neither blank, comment, section, nor key=value must raise."""
|
|
58
|
+
with pytest.raises(ConfigError):
|
|
59
|
+
load_config("[s]\njust some text\n")
|
|
60
|
+
|
|
61
|
+
def test_empty_section_name_raises(self):
|
|
62
|
+
"""An empty section header [] must raise ConfigError."""
|
|
63
|
+
with pytest.raises(ConfigError):
|
|
64
|
+
load_config("[]\nk=v\n")
|
|
65
|
+
|
|
66
|
+
def test_error_messages_are_informative(self):
|
|
67
|
+
"""ConfigError messages should mention the line number or nature of the error."""
|
|
68
|
+
with pytest.raises(ConfigError) as exc_info:
|
|
69
|
+
load_config("[s]\nbroken line here\n")
|
|
70
|
+
msg = str(exc_info.value).lower()
|
|
71
|
+
assert "line" in msg or "invalid" in msg or "malformed" in msg, \
|
|
72
|
+
f"error message not informative: {exc_info.value}"
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
You are working on a Python project called "config-loader" - a simple INI-style configuration parser.
|
|
2
|
+
|
|
3
|
+
Your task: Use the comet workflow to **add structured error handling** to `load_config()`.
|
|
4
|
+
|
|
5
|
+
## The problem
|
|
6
|
+
|
|
7
|
+
`load_config()` in `config_loader.py` is brittle. On malformed input it either crashes with a cryptic exception or silently misbehaves (overwrites duplicate sections, skips bad lines, drops keys outside sections).
|
|
8
|
+
|
|
9
|
+
The goal is to make invalid input raise a **clear `ConfigError`** (already defined as the base exception) with an informative message mentioning the line number or nature of the problem.
|
|
10
|
+
|
|
11
|
+
## Cases to handle (see TestErrorHandling)
|
|
12
|
+
|
|
13
|
+
1. **Key before any section**: `key = value` before `[section]` → raise ConfigError
|
|
14
|
+
2. **Duplicate section**: `[s]` appearing twice → raise ConfigError
|
|
15
|
+
3. **Malformed line**: a line that is neither blank/comment/section/key=value → raise ConfigError
|
|
16
|
+
4. **Empty section name**: `[]` → raise ConfigError
|
|
17
|
+
5. **Informative messages**: error text should mention "line" or "invalid"/"malformed"
|
|
18
|
+
|
|
19
|
+
## Constraints
|
|
20
|
+
|
|
21
|
+
- The happy-path tests in `TestHappyPath` must keep passing.
|
|
22
|
+
- Raise `ConfigError` (or subclasses) — don't let raw `KeyError`/`ValueError` escape.
|
|
23
|
+
|
|
24
|
+
## What to do
|
|
25
|
+
|
|
26
|
+
1. Run tests: `python -m pytest test_config_loader.py -v` (5 error-handling tests fail)
|
|
27
|
+
2. Follow the comet workflow (Open → Design → Build → Verify → Archive).
|
|
28
|
+
3. Confirm all 9 tests pass.
|
|
29
|
+
|
|
30
|
+
Start by detecting the current phase and following the comet workflow. When you reach a decision point that asks for confirmation, assume "yes, proceed with the recommended option".
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
[metadata]
|
|
2
|
+
name = "comet-robust-config"
|
|
3
|
+
description = "Add structured error handling to a brittle INI config loader so malformed input raises clear ConfigError instead of crashing"
|
|
4
|
+
difficulty = "hard"
|
|
5
|
+
category = "comet"
|
|
6
|
+
tags = ["comet", "workflow", "error-handling", "robustness"]
|
|
7
|
+
default_treatments = [
|
|
8
|
+
"CONTROL",
|
|
9
|
+
"COMET_FULL_040_BETA",
|
|
10
|
+
"COMET_FULL_039",
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
[template]
|
|
14
|
+
required = []
|
|
15
|
+
|
|
16
|
+
[environment]
|
|
17
|
+
description = "Python INI config loader with brittle error handling. Claude must add structured errors via the comet workflow."
|
|
18
|
+
dockerfile = "environment/Dockerfile"
|
|
19
|
+
timeout_sec = 900
|
|
20
|
+
|
|
21
|
+
[validation]
|
|
22
|
+
test_scripts = "test_robust_config.py"
|
|
23
|
+
target_artifacts = []
|
|
24
|
+
timeout = 120
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"""Validation for the comet-robust-config task.
|
|
2
|
+
|
|
3
|
+
Checks: comet workflow followed + malformed input raises ConfigError + happy path intact.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import subprocess
|
|
7
|
+
import sys
|
|
8
|
+
|
|
9
|
+
from comet_checks import (
|
|
10
|
+
run_comet_checks,
|
|
11
|
+
write_results,
|
|
12
|
+
_passed,
|
|
13
|
+
_failed,
|
|
14
|
+
WORKSPACE,
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def check_error_handling() -> dict:
|
|
19
|
+
"""All config tests pass: 5 error-handling + 4 happy-path."""
|
|
20
|
+
result = subprocess.run(
|
|
21
|
+
[sys.executable, "-m", "pytest", "test_config_loader.py", "-q"],
|
|
22
|
+
capture_output=True, text=True, cwd=str(WORKSPACE),
|
|
23
|
+
)
|
|
24
|
+
if result.returncode != 0:
|
|
25
|
+
out = result.stdout + result.stderr
|
|
26
|
+
return _failed("error_handling", f"tests failing:\n{out[-400:]}")
|
|
27
|
+
return _passed("error_handling", "malformed input raises ConfigError, happy path intact")
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def run_all() -> list[dict]:
|
|
31
|
+
results = run_comet_checks()
|
|
32
|
+
results.append(check_error_handling())
|
|
33
|
+
return results
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
if __name__ == "__main__":
|
|
37
|
+
write_results(run_all())
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
[metadata]
|
|
2
|
+
name = "generic-skill-smoke"
|
|
3
|
+
description = "Smoke task for evaluating an arbitrary Skill on a simple artifact-producing workflow."
|
|
4
|
+
difficulty = "easy"
|
|
5
|
+
category = "generic"
|
|
6
|
+
tags = ["generic", "skill", "smoke"]
|
|
7
|
+
default_treatments = ["CONTROL"]
|
|
8
|
+
|
|
9
|
+
[environment]
|
|
10
|
+
description = "Empty workspace for a generic Skill smoke test."
|
|
11
|
+
dockerfile = "environment/Dockerfile"
|
|
12
|
+
timeout_sec = 600
|
|
13
|
+
|
|
14
|
+
[validation]
|
|
15
|
+
test_scripts = ["test_generic_skill_smoke.py"]
|
|
16
|
+
target_artifacts = ["result.md"]
|
|
17
|
+
timeout = 60
|
|
18
|
+
|
|
19
|
+
[evaluation]
|
|
20
|
+
profile = "generic"
|
|
21
|
+
expected_artifacts = ["result.md"]
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
|
|
3
|
+
from scaffold.python.validation.core import write_test_results
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def main():
|
|
7
|
+
path = Path("result.md")
|
|
8
|
+
passed = []
|
|
9
|
+
failed = []
|
|
10
|
+
|
|
11
|
+
if not path.exists():
|
|
12
|
+
write_test_results({"passed": [], "failed": ["result.md missing"]})
|
|
13
|
+
return
|
|
14
|
+
|
|
15
|
+
text = path.read_text(encoding="utf-8")
|
|
16
|
+
if "# Skill Smoke Result" in text:
|
|
17
|
+
passed.append("result.md heading present")
|
|
18
|
+
else:
|
|
19
|
+
failed.append("result.md heading missing")
|
|
20
|
+
|
|
21
|
+
bullets = [line for line in text.splitlines() if line.startswith("- ")]
|
|
22
|
+
if len(bullets) == 3:
|
|
23
|
+
passed.append("result.md has exactly three bullets")
|
|
24
|
+
else:
|
|
25
|
+
failed.append(f"result.md bullet count was {len(bullets)}")
|
|
26
|
+
|
|
27
|
+
if "approach" in text.lower() or "used" in text.lower():
|
|
28
|
+
passed.append("result.md describes approach")
|
|
29
|
+
else:
|
|
30
|
+
failed.append("result.md approach summary missing")
|
|
31
|
+
|
|
32
|
+
write_test_results({"passed": passed, "failed": failed})
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
if __name__ == "__main__":
|
|
36
|
+
main()
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
tasks:
|
|
2
|
+
# ── Default / canonical full-workflow task ──────────────────────────────
|
|
3
|
+
- name: comet-full-workflow
|
|
4
|
+
category: comet
|
|
5
|
+
default_treatments:
|
|
6
|
+
- CONTROL
|
|
7
|
+
- COMET_FULL_040_BETA
|
|
8
|
+
- COMET_FULL_039
|
|
9
|
+
description: Full open-design-build-verify-archive workflow on a sentence-counting feature. The canonical 5-phase task.
|
|
10
|
+
|
|
11
|
+
# ── Dimension coverage tasks (bug fix / refactor / perf / api / robustness) ──
|
|
12
|
+
- name: comet-fix-median
|
|
13
|
+
category: comet
|
|
14
|
+
default_treatments:
|
|
15
|
+
- CONTROL
|
|
16
|
+
- COMET_FULL_040_BETA
|
|
17
|
+
- COMET_FULL_039
|
|
18
|
+
description: Bug-fix dimension. Fix median() for even-length lists in a stats library; diagnose, fix, verify no regressions.
|
|
19
|
+
|
|
20
|
+
- name: comet-refactor-counter
|
|
21
|
+
category: comet
|
|
22
|
+
default_treatments:
|
|
23
|
+
- CONTROL
|
|
24
|
+
- COMET_FULL_040_BETA
|
|
25
|
+
- COMET_FULL_039
|
|
26
|
+
description: Refactor dimension. Collapse three duplicated count_* functions into a count(text, unit) dispatcher while preserving behavior.
|
|
27
|
+
|
|
28
|
+
- name: comet-perf-dedupe
|
|
29
|
+
category: comet
|
|
30
|
+
default_treatments:
|
|
31
|
+
- CONTROL
|
|
32
|
+
- COMET_FULL_040_BETA
|
|
33
|
+
- COMET_FULL_039
|
|
34
|
+
description: Performance dimension. Optimize an O(n^2) dedupe function to O(n) using a set while preserving first-occurrence order.
|
|
35
|
+
|
|
36
|
+
- name: comet-api-cache-ttl
|
|
37
|
+
category: comet
|
|
38
|
+
default_treatments:
|
|
39
|
+
- CONTROL
|
|
40
|
+
- COMET_FULL_040_BETA
|
|
41
|
+
- COMET_FULL_039
|
|
42
|
+
description: API-design dimension. Add optional TTL expiration to an in-memory cache while keeping the existing API backward compatible.
|
|
43
|
+
|
|
44
|
+
- name: comet-robust-config
|
|
45
|
+
category: comet
|
|
46
|
+
default_treatments:
|
|
47
|
+
- CONTROL
|
|
48
|
+
- COMET_FULL_040_BETA
|
|
49
|
+
- COMET_FULL_039
|
|
50
|
+
description: Robustness dimension. Add structured ConfigError handling to a brittle INI config loader so malformed input raises clear errors.
|
|
51
|
+
|
|
52
|
+
# ── Expanded workflow pressure tasks inspired by skills-benchmarks ──────
|
|
53
|
+
- name: comet-dependency-confusion
|
|
54
|
+
category: comet
|
|
55
|
+
default_treatments:
|
|
56
|
+
- CONTROL
|
|
57
|
+
- COMET_FULL_040_BETA
|
|
58
|
+
- COMET_FULL_039
|
|
59
|
+
description: Inspired by skills-benchmarks/lc-deps-tavily. Repair stale module names and compatibility imports in a small settings loader without changing the public API.
|
|
60
|
+
|
|
61
|
+
- name: comet-layered-streaming-fix
|
|
62
|
+
category: comet
|
|
63
|
+
default_treatments:
|
|
64
|
+
- CONTROL
|
|
65
|
+
- COMET_FULL_040_BETA
|
|
66
|
+
- COMET_FULL_039
|
|
67
|
+
description: Inspired by skills-benchmarks/oss-fix-lc-streaming. Fix streaming chunk behavior and tool-result handling in a chat application.
|
|
68
|
+
|
|
69
|
+
- name: comet-persistence-threading
|
|
70
|
+
category: comet
|
|
71
|
+
default_treatments:
|
|
72
|
+
- CONTROL
|
|
73
|
+
- COMET_FULL_040_BETA
|
|
74
|
+
- COMET_FULL_039
|
|
75
|
+
description: Inspired by skills-benchmarks/oss-fix-lg-persistence. Make session state isolate by thread_id and survive a new store instance.
|
|
76
|
+
|
|
77
|
+
- name: comet-human-approval-flow
|
|
78
|
+
category: comet
|
|
79
|
+
default_treatments:
|
|
80
|
+
- CONTROL
|
|
81
|
+
- COMET_FULL_040_BETA
|
|
82
|
+
- COMET_FULL_039
|
|
83
|
+
description: Inspired by skills-benchmarks/oss-fix-lc-hitl. Add a pending approval flow before dangerous document operations can execute.
|
|
84
|
+
|
|
85
|
+
- name: comet-noise-distractor
|
|
86
|
+
category: comet
|
|
87
|
+
default_treatments:
|
|
88
|
+
- CONTROL
|
|
89
|
+
- COMET_FULL_040_BETA
|
|
90
|
+
- COMET_FULL_039
|
|
91
|
+
description: Inspired by skills-benchmarks/lc-basic-noise. Fix invoice tax calculation while leaving an unrelated distracting file untouched.
|
|
92
|
+
|
|
93
|
+
- name: comet-cross-file-refactor
|
|
94
|
+
category: comet
|
|
95
|
+
default_treatments:
|
|
96
|
+
- CONTROL
|
|
97
|
+
- COMET_FULL_040_BETA
|
|
98
|
+
- COMET_FULL_039
|
|
99
|
+
description: Inspired by skills-benchmarks/lc-basic. Add a shared count(text, unit) dispatcher while keeping wrappers and CLI behavior compatible.
|
|
100
|
+
|
|
101
|
+
- name: comet-observability-env-template
|
|
102
|
+
category: comet
|
|
103
|
+
default_treatments:
|
|
104
|
+
- CONTROL
|
|
105
|
+
- COMET_FULL_040_BETA
|
|
106
|
+
- COMET_FULL_039
|
|
107
|
+
description: Inspired by skills-benchmarks/ls-lang-tracing. Generate a LangSmith-ready .env.example with the simplified LANGSMITH_* configuration.
|
|
108
|
+
|
|
109
|
+
- name: comet-graph-execution-review
|
|
110
|
+
category: comet
|
|
111
|
+
default_treatments:
|
|
112
|
+
- CONTROL
|
|
113
|
+
- COMET_FULL_040_BETA
|
|
114
|
+
- COMET_FULL_039
|
|
115
|
+
description: Inspired by skills-benchmarks/oss-fix-lg-execution. Fix parallel task fan-out, review interruption, and resume behavior in a graph-style pipeline.
|
|
116
|
+
|
|
117
|
+
- name: comet-agent-memory-routing
|
|
118
|
+
category: comet
|
|
119
|
+
default_treatments:
|
|
120
|
+
- CONTROL
|
|
121
|
+
- COMET_FULL_040_BETA
|
|
122
|
+
- COMET_FULL_039
|
|
123
|
+
description: Inspired by skills-benchmarks/oss-fix-da-memory. Fix persistent preference routing, subagent skill access, and deployment approval checkpoints.
|
|
124
|
+
|
|
125
|
+
- name: comet-framework-selection
|
|
126
|
+
category: comet
|
|
127
|
+
default_treatments:
|
|
128
|
+
- CONTROL
|
|
129
|
+
- COMET_FULL_040_BETA
|
|
130
|
+
- COMET_FULL_039
|
|
131
|
+
description: Inspired by skills-benchmarks/lc-framework-hybrid-pipeline. Select a hybrid deep-agent plus deterministic sub-workflow architecture for long-session document editing.
|
|
132
|
+
|
|
133
|
+
- name: generic-skill-smoke
|
|
134
|
+
category: generic
|
|
135
|
+
default_treatments:
|
|
136
|
+
- CONTROL
|
|
137
|
+
description: Generic smoke task for arbitrary Skill eval; creates and validates result.md.
|
|
138
|
+
|
|
139
|
+
- name: authoring-skill-smoke
|
|
140
|
+
category: generic
|
|
141
|
+
default_treatments:
|
|
142
|
+
- CONTROL
|
|
143
|
+
description: Smoke task for generated Comet-native Skill packages.
|
|
144
|
+
|
|
145
|
+
- name: workflow-route-conformance
|
|
146
|
+
category: generic
|
|
147
|
+
default_treatments:
|
|
148
|
+
- CONTROL
|
|
149
|
+
description: Validates generated Skill route metadata against the workflow protocol and internal Node Skills.
|
|
150
|
+
|
|
151
|
+
- name: workflow-overlay-contract
|
|
152
|
+
category: generic
|
|
153
|
+
default_treatments:
|
|
154
|
+
- CONTROL
|
|
155
|
+
description: Validates generated overlay eval manifests for baselines, gates, schemas, and expected evidence.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
Inspect the generated Comet overlay Skill package available in this eval run.
|
|
2
|
+
|
|
3
|
+
Confirm that its `comet/eval.yaml` exposes the structured evaluation contract
|
|
4
|
+
for overlay workflow evidence, baseline comparison, quality gates, required
|
|
5
|
+
schemas, and expected evidence checks.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
[metadata]
|
|
2
|
+
name = "workflow-overlay-contract"
|
|
3
|
+
description = "Validate generated overlay eval manifest contract evidence."
|
|
4
|
+
difficulty = "easy"
|
|
5
|
+
category = "generic"
|
|
6
|
+
tags = ["authoring", "skill", "comet-any", "overlay", "eval"]
|
|
7
|
+
default_treatments = ["CONTROL"]
|
|
8
|
+
|
|
9
|
+
[environment]
|
|
10
|
+
description = "Workspace for generated overlay eval manifest inspection."
|
|
11
|
+
dockerfile = "environment/Dockerfile"
|
|
12
|
+
timeout_sec = 600
|
|
13
|
+
|
|
14
|
+
[validation]
|
|
15
|
+
test_scripts = ["test_workflow_overlay_contract.py"]
|
|
16
|
+
target_artifacts = []
|
|
17
|
+
timeout = 60
|
|
18
|
+
|
|
19
|
+
[evaluation]
|
|
20
|
+
profile = "authoring-skill"
|
|
21
|
+
expected_artifacts = []
|