@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,40 @@
|
|
|
1
|
+
class StateBackend:
|
|
2
|
+
persistent = False
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class StoreBackend:
|
|
6
|
+
persistent = True
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class MemorySaver:
|
|
10
|
+
pass
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def resolve_backend(routes, path):
|
|
14
|
+
matches = [prefix for prefix in routes if path.startswith(prefix)]
|
|
15
|
+
if not matches:
|
|
16
|
+
return None
|
|
17
|
+
prefix = max(matches, key=len)
|
|
18
|
+
return routes[prefix]
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def create_agent_config():
|
|
22
|
+
routes = {
|
|
23
|
+
"/memory": StoreBackend(),
|
|
24
|
+
"/memory/preferences": StateBackend(),
|
|
25
|
+
"/session": StateBackend(),
|
|
26
|
+
}
|
|
27
|
+
return {
|
|
28
|
+
"backend_routes": routes,
|
|
29
|
+
"checkpointer": None,
|
|
30
|
+
"subagents": [
|
|
31
|
+
{
|
|
32
|
+
"name": "researcher",
|
|
33
|
+
"description": "Research project docs",
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"name": "deployer",
|
|
37
|
+
"description": "Deploy services",
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import agent_system
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def test_preferences_route_to_persistent_backend():
|
|
5
|
+
config = agent_system.create_agent_config()
|
|
6
|
+
backend = agent_system.resolve_backend(
|
|
7
|
+
config["backend_routes"],
|
|
8
|
+
"/memory/preferences/theme",
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
assert backend is not None
|
|
12
|
+
assert backend.persistent is True
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def test_researcher_subagent_has_explicit_doc_skill():
|
|
16
|
+
config = agent_system.create_agent_config()
|
|
17
|
+
researcher = next(sub for sub in config["subagents"] if sub["name"] == "researcher")
|
|
18
|
+
|
|
19
|
+
assert "skills" in researcher
|
|
20
|
+
assert "project-docs" in researcher["skills"]
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def test_deployment_interrupt_has_checkpointer():
|
|
24
|
+
config = agent_system.create_agent_config()
|
|
25
|
+
deployer = next(sub for sub in config["subagents"] if sub["name"] == "deployer")
|
|
26
|
+
|
|
27
|
+
assert config["checkpointer"] is not None
|
|
28
|
+
assert "interrupt_on" in deployer
|
|
29
|
+
assert "deploy_production" in deployer["interrupt_on"]
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
You are working on a Python project called "doc-agent-system".
|
|
2
|
+
|
|
3
|
+
Your task: Use the comet workflow to fix a multi-agent configuration.
|
|
4
|
+
|
|
5
|
+
This task is adapted from `skills-benchmarks/oss-fix-da-memory`.
|
|
6
|
+
|
|
7
|
+
## Bug reports
|
|
8
|
+
|
|
9
|
+
1. User preferences disappear after restarting because the preferences path routes to ephemeral state.
|
|
10
|
+
2. The researcher subagent cannot read project documentation because it does not receive explicit skills.
|
|
11
|
+
3. Production deployments execute without human approval because interrupt handling is incomplete.
|
|
12
|
+
|
|
13
|
+
## What to do
|
|
14
|
+
|
|
15
|
+
1. Run `python -m pytest test_agent_system.py -q` to confirm the failures.
|
|
16
|
+
2. Follow the comet workflow phases from open through archive.
|
|
17
|
+
3. Keep the simple in-repo backend classes; do not add heavyweight external dependencies.
|
|
18
|
+
4. Verify that preference routing, researcher skills, and approval checkpoint configuration all pass.
|
|
19
|
+
|
|
20
|
+
When the workflow asks for confirmation, assume "yes, proceed with the recommended option".
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
[metadata]
|
|
2
|
+
name = "comet-agent-memory-routing"
|
|
3
|
+
description = "Fix persistent preference routing, subagent skill access, and deployment approval checkpoints"
|
|
4
|
+
difficulty = "hard"
|
|
5
|
+
category = "comet"
|
|
6
|
+
tags = ["comet", "workflow", "memory", "subagents", "approval"]
|
|
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 workspace with a multi-agent config whose memory, subagent, and approval settings are subtly wrong."
|
|
18
|
+
dockerfile = "environment/Dockerfile"
|
|
19
|
+
timeout_sec = 900
|
|
20
|
+
|
|
21
|
+
[validation]
|
|
22
|
+
test_scripts = "test_agent_memory_routing.py"
|
|
23
|
+
target_artifacts = []
|
|
24
|
+
timeout = 120
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import subprocess
|
|
2
|
+
import sys
|
|
3
|
+
|
|
4
|
+
from comet_checks import WORKSPACE, _failed, _passed, run_comet_checks, write_results
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def _tail(result: subprocess.CompletedProcess) -> str:
|
|
8
|
+
return "\n".join(part.strip() for part in (result.stdout, result.stderr) if part and part.strip())[-600:]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def check_agent_memory_routing() -> dict:
|
|
12
|
+
result = subprocess.run(
|
|
13
|
+
[sys.executable, "-m", "pytest", "test_agent_system.py", "-q"],
|
|
14
|
+
capture_output=True,
|
|
15
|
+
text=True,
|
|
16
|
+
cwd=str(WORKSPACE),
|
|
17
|
+
)
|
|
18
|
+
if result.returncode != 0:
|
|
19
|
+
return _failed("agent_memory_routing", _tail(result))
|
|
20
|
+
return _passed("agent_memory_routing", "preferences persist, researcher has docs, and deployment approval is checkpointed")
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
if __name__ == "__main__":
|
|
24
|
+
write_results([*run_comet_checks(), check_agent_memory_routing()])
|
|
@@ -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 cache.py /workspace/cache.py
|
|
22
|
+
COPY test_cache.py /workspace/test_cache.py
|
|
23
|
+
|
|
24
|
+
RUN mkdir -p wordcount-cli && \
|
|
25
|
+
echo '# Cache Lib' > 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,39 @@
|
|
|
1
|
+
"""cache-lib: a simple in-memory key-value cache.
|
|
2
|
+
|
|
3
|
+
Currently supports set/get/delete with no expiration. The task is to add
|
|
4
|
+
optional TTL (time-to-live) support while keeping the existing API backward
|
|
5
|
+
compatible.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
from typing import Any, Optional
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class Cache:
|
|
14
|
+
"""A simple in-memory cache. Thread-safety is out of scope."""
|
|
15
|
+
|
|
16
|
+
def __init__(self) -> None:
|
|
17
|
+
self._store: dict[str, Any] = {}
|
|
18
|
+
|
|
19
|
+
def set(self, key: str, value: Any) -> None:
|
|
20
|
+
"""Store a value. Overwrites any existing value (no expiry)."""
|
|
21
|
+
self._store[key] = value
|
|
22
|
+
|
|
23
|
+
def get(self, key: str, default: Any = None) -> Any:
|
|
24
|
+
"""Retrieve a value, or `default` if the key is absent."""
|
|
25
|
+
return self._store.get(key, default)
|
|
26
|
+
|
|
27
|
+
def delete(self, key: str) -> bool:
|
|
28
|
+
"""Remove a key. Returns True if it existed, False otherwise."""
|
|
29
|
+
return self._store.pop(key, None) is not None
|
|
30
|
+
|
|
31
|
+
def clear(self) -> None:
|
|
32
|
+
"""Remove all entries."""
|
|
33
|
+
self._store.clear()
|
|
34
|
+
|
|
35
|
+
def __len__(self) -> int:
|
|
36
|
+
return len(self._store)
|
|
37
|
+
|
|
38
|
+
def __contains__(self, key: object) -> bool:
|
|
39
|
+
return key in self._store
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"""Tests for cache-lib.
|
|
2
|
+
|
|
3
|
+
The TTL tests currently FAIL because TTL is not yet implemented.
|
|
4
|
+
The basic tests all pass and must continue to pass (backward compatibility).
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import time
|
|
8
|
+
|
|
9
|
+
import pytest
|
|
10
|
+
|
|
11
|
+
from cache import Cache
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class TestBasic:
|
|
15
|
+
def test_set_get(self):
|
|
16
|
+
c = Cache()
|
|
17
|
+
c.set("k", "v")
|
|
18
|
+
assert c.get("k") == "v"
|
|
19
|
+
|
|
20
|
+
def test_get_missing_default(self):
|
|
21
|
+
c = Cache()
|
|
22
|
+
assert c.get("nope") is None
|
|
23
|
+
assert c.get("nope", "fallback") == "fallback"
|
|
24
|
+
|
|
25
|
+
def test_overwrite(self):
|
|
26
|
+
c = Cache()
|
|
27
|
+
c.set("k", 1)
|
|
28
|
+
c.set("k", 2)
|
|
29
|
+
assert c.get("k") == 2
|
|
30
|
+
|
|
31
|
+
def test_delete(self):
|
|
32
|
+
c = Cache()
|
|
33
|
+
c.set("k", "v")
|
|
34
|
+
assert c.delete("k") is True
|
|
35
|
+
assert c.delete("k") is False
|
|
36
|
+
assert c.get("k") is None
|
|
37
|
+
|
|
38
|
+
def test_clear(self):
|
|
39
|
+
c = Cache()
|
|
40
|
+
c.set("a", 1)
|
|
41
|
+
c.set("b", 2)
|
|
42
|
+
c.clear()
|
|
43
|
+
assert len(c) == 0
|
|
44
|
+
|
|
45
|
+
def test_contains(self):
|
|
46
|
+
c = Cache()
|
|
47
|
+
c.set("k", "v")
|
|
48
|
+
assert "k" in c
|
|
49
|
+
assert "x" not in c
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
class TestTTL:
|
|
53
|
+
def test_set_with_ttl_expires(self):
|
|
54
|
+
"""A key set with a TTL should return the default after expiry."""
|
|
55
|
+
c = Cache()
|
|
56
|
+
c.set("temp", "value", ttl=0.1)
|
|
57
|
+
assert c.get("temp") == "value" # immediately available
|
|
58
|
+
time.sleep(0.2)
|
|
59
|
+
assert c.get("temp") is None # expired
|
|
60
|
+
|
|
61
|
+
def test_no_ttl_does_not_expire(self):
|
|
62
|
+
"""A key set without TTL must not expire (backward compat)."""
|
|
63
|
+
c = Cache()
|
|
64
|
+
c.set("perm", "value")
|
|
65
|
+
time.sleep(0.1)
|
|
66
|
+
assert c.get("perm") == "value"
|
|
67
|
+
|
|
68
|
+
def test_ttl_overwrite_without_ttl(self):
|
|
69
|
+
"""Overwriting a TTL key without TTL should remove the expiry."""
|
|
70
|
+
c = Cache()
|
|
71
|
+
c.set("k", 1, ttl=0.05)
|
|
72
|
+
c.set("k", 2) # no ttl -> permanent
|
|
73
|
+
time.sleep(0.1)
|
|
74
|
+
assert c.get("k") == 2
|
|
75
|
+
|
|
76
|
+
def test_ttl_zero_means_no_expiry(self):
|
|
77
|
+
"""ttl=0 (or omitted) means the key never expires."""
|
|
78
|
+
c = Cache()
|
|
79
|
+
c.set("k", "v", ttl=0)
|
|
80
|
+
time.sleep(0.05)
|
|
81
|
+
assert c.get("k") == "v"
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
You are working on a Python project called "cache-lib" - a simple in-memory key-value cache.
|
|
2
|
+
|
|
3
|
+
Your task: Use the comet workflow to **add TTL (time-to-live) support** to the `Cache` class.
|
|
4
|
+
|
|
5
|
+
## The requirement
|
|
6
|
+
|
|
7
|
+
Add an optional `ttl` parameter to `set()`:
|
|
8
|
+
|
|
9
|
+
```python
|
|
10
|
+
def set(self, key: str, value: Any, ttl: Optional[float] = None) -> None:
|
|
11
|
+
"""Store a value. If ttl is given (seconds), the key expires after that long.
|
|
12
|
+
ttl=0 or None means the key never expires."""
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
After a key's TTL elapses, `get()` must return the default (as if the key were absent). The existing behavior (no TTL) must not change.
|
|
16
|
+
|
|
17
|
+
## Design decisions to make (use brainstorming)
|
|
18
|
+
|
|
19
|
+
- **Lazy vs active eviction**: check expiry on `get()` (lazy, simple) vs a background sweep (active, complex). Lazy is recommended for this scope.
|
|
20
|
+
- **Overwrite semantics**: setting a key again without TTL should clear any prior expiry.
|
|
21
|
+
- **`__contains__` / `__len__`**: should expired keys count? (Expired keys should not appear present.)
|
|
22
|
+
|
|
23
|
+
## Tests
|
|
24
|
+
|
|
25
|
+
`test_cache.py` has a `TestTTL` class with 4 tests that currently FAIL. Plus 6 basic tests that must keep passing.
|
|
26
|
+
|
|
27
|
+
## What to do
|
|
28
|
+
|
|
29
|
+
1. Run tests to confirm: `python -m pytest test_cache.py -v`
|
|
30
|
+
2. Follow the comet workflow (Open → Design → Build → Verify → Archive).
|
|
31
|
+
3. Confirm all 10 tests pass after implementation.
|
|
32
|
+
|
|
33
|
+
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-api-cache-ttl"
|
|
3
|
+
description = "Add optional TTL (time-to-live) expiration to an in-memory cache while keeping the API backward compatible"
|
|
4
|
+
difficulty = "hard"
|
|
5
|
+
category = "comet"
|
|
6
|
+
tags = ["comet", "workflow", "api-design", "backward-compat"]
|
|
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 in-memory cache. Claude must add TTL support via the comet workflow."
|
|
18
|
+
dockerfile = "environment/Dockerfile"
|
|
19
|
+
timeout_sec = 900
|
|
20
|
+
|
|
21
|
+
[validation]
|
|
22
|
+
test_scripts = "test_api_cache_ttl.py"
|
|
23
|
+
target_artifacts = []
|
|
24
|
+
timeout = 120
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"""Validation for the comet-api-cache-ttl task.
|
|
2
|
+
|
|
3
|
+
Checks: comet workflow followed + set() accepts ttl + TTL tests pass + backward compat.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import inspect
|
|
7
|
+
import subprocess
|
|
8
|
+
import sys
|
|
9
|
+
|
|
10
|
+
from comet_checks import (
|
|
11
|
+
run_comet_checks,
|
|
12
|
+
write_results,
|
|
13
|
+
_passed,
|
|
14
|
+
_failed,
|
|
15
|
+
WORKSPACE,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def _subprocess_output(result: subprocess.CompletedProcess) -> str:
|
|
20
|
+
output = "\n".join(
|
|
21
|
+
part.strip()
|
|
22
|
+
for part in (result.stdout or "", result.stderr or "")
|
|
23
|
+
if part and part.strip()
|
|
24
|
+
)
|
|
25
|
+
return output[-600:]
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def check_ttl_implementation() -> dict:
|
|
29
|
+
"""set() has a ttl param and all tests pass (TTL + backward compat)."""
|
|
30
|
+
# set() must accept a ttl parameter.
|
|
31
|
+
sig_result = subprocess.run(
|
|
32
|
+
[sys.executable, "-c",
|
|
33
|
+
"import inspect,cache; sig=inspect.signature(cache.Cache.set); print(list(sig.parameters))"],
|
|
34
|
+
capture_output=True, text=True, cwd=str(WORKSPACE),
|
|
35
|
+
)
|
|
36
|
+
if sig_result.returncode != 0:
|
|
37
|
+
return _failed("ttl_implementation", f"cannot inspect cache.Cache.set: {sig_result.stderr[:150]}")
|
|
38
|
+
if "ttl" not in sig_result.stdout:
|
|
39
|
+
return _failed("ttl_implementation", "Cache.set() has no 'ttl' parameter")
|
|
40
|
+
|
|
41
|
+
# All tests must pass (TTL + backward compat).
|
|
42
|
+
test_result = subprocess.run(
|
|
43
|
+
[sys.executable, "-m", "pytest", "test_cache.py", "-q"],
|
|
44
|
+
capture_output=True, text=True, cwd=str(WORKSPACE),
|
|
45
|
+
)
|
|
46
|
+
if test_result.returncode != 0:
|
|
47
|
+
return _failed("ttl_implementation", f"tests failing:\n{_subprocess_output(test_result)}")
|
|
48
|
+
return _passed("ttl_implementation", "set(ttl=...) works, all 10 tests pass")
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def run_all() -> list[dict]:
|
|
52
|
+
results = run_comet_checks()
|
|
53
|
+
results.append(check_ttl_implementation())
|
|
54
|
+
return results
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
if __name__ == "__main__":
|
|
58
|
+
write_results(run_all())
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
FROM python:3.12-slim
|
|
2
|
+
|
|
3
|
+
WORKDIR /workspace
|
|
4
|
+
|
|
5
|
+
RUN apt-get update && apt-get install -y --no-install-recommends bash git curl jq ca-certificates nodejs npm && rm -rf /var/lib/apt/lists/*
|
|
6
|
+
RUN pip install --no-cache-dir pyyaml pytest
|
|
7
|
+
RUN npm config set registry https://registry.npmmirror.com && npm install -g @fission-ai/openspec@1.3.1 && npm install -g @anthropic-ai/claude-code@latest && npm config delete registry
|
|
8
|
+
COPY . /workspace/
|
|
9
|
+
RUN mkdir -p openspec/changes
|
|
10
|
+
RUN useradd --create-home --shell /bin/bash agent && chown -R agent:agent /workspace
|
|
11
|
+
USER agent
|
|
12
|
+
ENV HOME=/home/agent
|
|
13
|
+
ENV PYTHONPATH=/workspace
|
|
14
|
+
RUN git config --global user.email "agent@eval.local" && git config --global user.name "Comet Eval Agent" && git config --global init.defaultBranch master
|
|
15
|
+
CMD ["bash"]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from counting import count_chars, count_lines, count_words
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def run(text: str, unit: str) -> int:
|
|
7
|
+
if unit == "words":
|
|
8
|
+
return count_words(text)
|
|
9
|
+
if unit == "lines":
|
|
10
|
+
return count_lines(text)
|
|
11
|
+
if unit == "chars":
|
|
12
|
+
return count_chars(text)
|
|
13
|
+
raise ValueError(f"unsupported unit: {unit}")
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import cli
|
|
4
|
+
import counting
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def test_new_dispatcher_counts_all_units():
|
|
8
|
+
assert counting.count("hello world", "words") == 2
|
|
9
|
+
assert counting.count("a\nb", "lines") == 2
|
|
10
|
+
assert counting.count("abc", "chars") == 3
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def test_wrappers_remain_compatible():
|
|
14
|
+
assert counting.count_words("hello world") == 2
|
|
15
|
+
assert counting.count_lines("a\nb") == 2
|
|
16
|
+
assert counting.count_chars("abc") == 3
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def test_cli_uses_dispatcher():
|
|
20
|
+
assert cli.run("hello world", "words") == 2
|
|
21
|
+
assert cli.run("abc", "chars") == 3
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
You are working on a Python package called "textkit".
|
|
2
|
+
|
|
3
|
+
Your task: Use the comet workflow to refactor duplicated counting functions into a shared dispatcher.
|
|
4
|
+
|
|
5
|
+
This task is adapted from `skills-benchmarks/lc-basic`.
|
|
6
|
+
|
|
7
|
+
## Requirements
|
|
8
|
+
|
|
9
|
+
- Add `count(text, unit)` supporting `"words"`, `"lines"`, and `"chars"`.
|
|
10
|
+
- Keep existing wrappers `count_words`, `count_lines`, and `count_chars`.
|
|
11
|
+
- Update the CLI helper to use the shared dispatcher.
|
|
12
|
+
- Preserve existing behavior and tests.
|
|
13
|
+
|
|
14
|
+
Run `python -m pytest test_textkit.py -q`, follow the comet workflow, and archive the completed change.
|
|
15
|
+
|
|
16
|
+
When the workflow asks for confirmation, assume "yes, proceed with the recommended option".
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
[metadata]
|
|
2
|
+
name = "comet-cross-file-refactor"
|
|
3
|
+
description = "Add a shared count(text, unit) dispatcher while keeping wrappers and CLI behavior compatible"
|
|
4
|
+
difficulty = "hard"
|
|
5
|
+
category = "comet"
|
|
6
|
+
tags = ["comet", "workflow", "refactor", "cross-file"]
|
|
7
|
+
default_treatments = ["CONTROL", "COMET_FULL_040_BETA", "COMET_FULL_039"]
|
|
8
|
+
|
|
9
|
+
[template]
|
|
10
|
+
required = []
|
|
11
|
+
|
|
12
|
+
[environment]
|
|
13
|
+
description = "Python package split across counting and CLI modules. Claude must refactor without breaking compatibility."
|
|
14
|
+
dockerfile = "environment/Dockerfile"
|
|
15
|
+
timeout_sec = 900
|
|
16
|
+
|
|
17
|
+
[validation]
|
|
18
|
+
test_scripts = "test_cross_file_refactor.py"
|
|
19
|
+
target_artifacts = []
|
|
20
|
+
timeout = 120
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import subprocess
|
|
2
|
+
import sys
|
|
3
|
+
|
|
4
|
+
from comet_checks import run_comet_checks, write_results, _passed, _failed, WORKSPACE
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def check_cross_file_refactor() -> dict:
|
|
8
|
+
result = subprocess.run(
|
|
9
|
+
[sys.executable, "-m", "pytest", "test_textkit.py", "-q"],
|
|
10
|
+
capture_output=True,
|
|
11
|
+
text=True,
|
|
12
|
+
cwd=str(WORKSPACE),
|
|
13
|
+
)
|
|
14
|
+
if result.returncode != 0:
|
|
15
|
+
return _failed("cross_file_count_dispatcher", (result.stdout + result.stderr)[-600:])
|
|
16
|
+
return _passed("cross_file_count_dispatcher", "dispatcher, wrappers, and CLI all work")
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
if __name__ == "__main__":
|
|
20
|
+
write_results([*run_comet_checks(), check_cross_file_refactor()])
|
|
@@ -0,0 +1,28 @@
|
|
|
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 nodejs npm && \
|
|
7
|
+
rm -rf /var/lib/apt/lists/*
|
|
8
|
+
|
|
9
|
+
RUN pip install --no-cache-dir pyyaml pytest
|
|
10
|
+
|
|
11
|
+
RUN npm config set registry https://registry.npmmirror.com && \
|
|
12
|
+
npm install -g @fission-ai/openspec@1.3.1 && \
|
|
13
|
+
npm install -g @anthropic-ai/claude-code@latest && \
|
|
14
|
+
npm config delete registry
|
|
15
|
+
|
|
16
|
+
COPY . /workspace/
|
|
17
|
+
RUN mkdir -p openspec/changes
|
|
18
|
+
|
|
19
|
+
RUN useradd --create-home --shell /bin/bash agent && \
|
|
20
|
+
chown -R agent:agent /workspace
|
|
21
|
+
USER agent
|
|
22
|
+
ENV HOME=/home/agent
|
|
23
|
+
ENV PYTHONPATH=/workspace
|
|
24
|
+
RUN git config --global user.email "agent@eval.local" && \
|
|
25
|
+
git config --global user.name "Comet Eval Agent" && \
|
|
26
|
+
git config --global init.defaultBranch master
|
|
27
|
+
|
|
28
|
+
CMD ["bash"]
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
DEFAULTS = {
|
|
5
|
+
"host": "127.0.0.1",
|
|
6
|
+
"port": "8080",
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def load_config(overrides: dict[str, str] | None = None) -> dict[str, str]:
|
|
11
|
+
config = dict(DEFAULTS)
|
|
12
|
+
if overrides:
|
|
13
|
+
config.update(overrides)
|
|
14
|
+
return config
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import importlib
|
|
4
|
+
|
|
5
|
+
from app import connection_url
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def test_old_import_path_still_loads_settings():
|
|
9
|
+
legacy = importlib.import_module("legacy_settings")
|
|
10
|
+
assert legacy.load_settings({"port": "9000"})["port"] == "9000"
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def test_new_import_path_still_loads_config():
|
|
14
|
+
loader = importlib.import_module("settings_loader")
|
|
15
|
+
assert loader.load_config({"host": "localhost"})["host"] == "localhost"
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def test_app_connection_url_uses_compatible_loader():
|
|
19
|
+
assert connection_url({"host": "localhost", "port": "5000"}) == "http://localhost:5000"
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
You are working on a Python project called "settings-service".
|
|
2
|
+
|
|
3
|
+
Your task: Use the comet workflow to fix a compatibility regression caused by a module rename.
|
|
4
|
+
|
|
5
|
+
This task is adapted from `skills-benchmarks/lc-deps-tavily`.
|
|
6
|
+
|
|
7
|
+
## Problem
|
|
8
|
+
|
|
9
|
+
The project used to expose `legacy_settings.load_settings()`, but the implementation moved to `settings_loader.py`. Existing callers still import the old module name, and the app also imports a stale helper name. The current tests in `test_settings_service.py` fail.
|
|
10
|
+
|
|
11
|
+
## What to do
|
|
12
|
+
|
|
13
|
+
1. Run `python -m pytest test_settings_service.py -q` to confirm the failure.
|
|
14
|
+
2. Follow the comet workflow phases from open through archive.
|
|
15
|
+
3. Restore compatibility without deleting the new `settings_loader.py` implementation.
|
|
16
|
+
4. Verify that both old and new import paths work and all tests pass.
|
|
17
|
+
|
|
18
|
+
When the workflow asks for confirmation, assume "yes, proceed with the recommended option".
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
[metadata]
|
|
2
|
+
name = "comet-dependency-confusion"
|
|
3
|
+
description = "Repair stale module names and compatibility imports in a small settings loader"
|
|
4
|
+
difficulty = "medium"
|
|
5
|
+
category = "comet"
|
|
6
|
+
tags = ["comet", "workflow", "dependencies", "compatibility"]
|
|
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 workspace with stale imports after a module rename. Claude must use the comet workflow to restore compatibility."
|
|
18
|
+
dockerfile = "environment/Dockerfile"
|
|
19
|
+
timeout_sec = 900
|
|
20
|
+
|
|
21
|
+
[validation]
|
|
22
|
+
test_scripts = "test_dependency_confusion.py"
|
|
23
|
+
target_artifacts = []
|
|
24
|
+
timeout = 120
|