@rpamis/comet 0.4.0-beta.6 → 0.4.0-beta.8
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 +209 -74
- package/assets/manifest.json +14 -5
- package/assets/skills/comet/SKILL.md +17 -282
- package/assets/skills/comet/reference/comet-yaml-fields.md +1 -1
- package/assets/skills/comet/reference/context-recovery.md +3 -3
- package/assets/skills/comet/reference/intent-frame.md +2 -2
- package/assets/skills/comet/reference/scripts.md +2 -2
- package/assets/skills/comet/rules/comet-workflow-guard.en.md +32 -0
- package/assets/skills/comet/rules/comet-workflow-guard.md +32 -0
- package/assets/skills/comet/scripts/comet-entry-runtime.mjs +7855 -0
- package/assets/skills/comet/scripts/comet-hook-router.mjs +10336 -0
- package/assets/skills/comet/scripts/comet-runtime.mjs +615 -501
- package/assets/skills/comet-any/SKILL.md +4 -4
- package/assets/skills/comet-any/reference/authoring-subagents.md +1 -1
- package/assets/skills/comet-any/reference/bundle-authoring.md +1 -1
- package/assets/skills/comet-any/reference/subagents/reference-author.md +1 -1
- package/assets/skills/comet-any/reference/subagents/script-author.md +1 -1
- package/assets/skills/comet-any/reference/subagents/skill-core-author.md +1 -1
- package/assets/skills/comet-any/reference/subagents/skill-reviewer.md +2 -2
- package/assets/skills/comet-any/reference/subagents/workflow-entry-author.md +3 -3
- package/assets/skills/comet-archive/SKILL.md +1 -2
- package/assets/skills/comet-build/SKILL.md +1 -1
- package/assets/skills/comet-classic/SKILL.md +293 -0
- package/assets/skills/comet-design/SKILL.md +1 -1
- package/assets/skills/comet-hotfix/SKILL.md +4 -4
- package/assets/skills/comet-native/SKILL.md +257 -0
- package/assets/skills/comet-native/reference/artifacts.md +204 -0
- package/assets/skills/comet-native/reference/commands.md +118 -0
- package/assets/skills/comet-native/reference/recovery.md +143 -0
- package/assets/skills/comet-native/scripts/comet-native-hook-guard.mjs +4 -0
- package/assets/skills/comet-native/scripts/comet-native-runtime.mjs +28969 -0
- package/assets/skills/comet-open/SKILL.md +4 -4
- package/assets/skills/comet-tweak/SKILL.md +7 -7
- package/assets/skills-zh/comet/SKILL.md +17 -270
- package/assets/skills-zh/comet/reference/comet-yaml-fields.md +1 -1
- package/assets/skills-zh/comet/reference/context-recovery.md +3 -3
- package/assets/skills-zh/comet/reference/intent-frame.md +2 -2
- package/assets/skills-zh/comet/reference/scripts.md +2 -2
- package/assets/skills-zh/comet-any/SKILL.md +4 -4
- package/assets/skills-zh/comet-any/reference/authoring-subagents.md +1 -1
- package/assets/skills-zh/comet-any/reference/bundle-authoring.md +1 -1
- package/assets/skills-zh/comet-any/reference/subagents/reference-author.md +1 -1
- package/assets/skills-zh/comet-any/reference/subagents/script-author.md +1 -1
- package/assets/skills-zh/comet-any/reference/subagents/skill-core-author.md +1 -1
- package/assets/skills-zh/comet-any/reference/subagents/skill-reviewer.md +2 -2
- package/assets/skills-zh/comet-any/reference/subagents/workflow-entry-author.md +3 -3
- package/assets/skills-zh/comet-archive/SKILL.md +1 -2
- package/assets/skills-zh/comet-build/SKILL.md +1 -1
- package/assets/skills-zh/comet-classic/SKILL.md +281 -0
- package/assets/skills-zh/comet-design/SKILL.md +1 -1
- package/assets/skills-zh/comet-hotfix/SKILL.md +4 -4
- package/assets/skills-zh/comet-native/SKILL.md +257 -0
- package/assets/skills-zh/comet-native/reference/artifacts.md +206 -0
- package/assets/skills-zh/comet-native/reference/commands.md +118 -0
- package/assets/skills-zh/comet-native/reference/recovery.md +143 -0
- package/assets/skills-zh/comet-open/SKILL.md +4 -4
- package/assets/skills-zh/comet-tweak/SKILL.md +7 -7
- package/dist/app/cli/index.js +59 -13
- package/dist/app/cli/index.js.map +1 -1
- package/dist/app/commands/command-result.d.ts +6 -0
- package/dist/app/commands/command-result.d.ts.map +1 -0
- package/dist/app/commands/command-result.js +4 -0
- package/dist/app/commands/command-result.js.map +1 -0
- package/dist/app/commands/doctor.d.ts +1 -0
- package/dist/app/commands/doctor.d.ts.map +1 -1
- package/dist/app/commands/doctor.js +201 -26
- package/dist/app/commands/doctor.js.map +1 -1
- package/dist/app/commands/eval.d.ts +3 -1
- package/dist/app/commands/eval.d.ts.map +1 -1
- package/dist/app/commands/eval.js +17 -7
- 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 +6 -2
- package/dist/app/commands/i18n.js.map +1 -1
- package/dist/app/commands/init.d.ts +10 -2
- package/dist/app/commands/init.d.ts.map +1 -1
- package/dist/app/commands/init.js +331 -50
- package/dist/app/commands/init.js.map +1 -1
- package/dist/app/commands/native.d.ts +2 -0
- package/dist/app/commands/native.d.ts.map +1 -0
- package/dist/app/commands/native.js +10 -0
- package/dist/app/commands/native.js.map +1 -0
- package/dist/app/commands/project-scope-selection.d.ts.map +1 -1
- package/dist/app/commands/project-scope-selection.js +2 -0
- package/dist/app/commands/project-scope-selection.js.map +1 -1
- package/dist/app/commands/resume-probe.d.ts.map +1 -1
- package/dist/app/commands/resume-probe.js +8 -2
- package/dist/app/commands/resume-probe.js.map +1 -1
- package/dist/app/commands/status.d.ts +0 -32
- package/dist/app/commands/status.d.ts.map +1 -1
- package/dist/app/commands/status.js +44 -177
- package/dist/app/commands/status.js.map +1 -1
- package/dist/app/commands/update.d.ts +20 -4
- package/dist/app/commands/update.d.ts.map +1 -1
- package/dist/app/commands/update.js +698 -90
- package/dist/app/commands/update.js.map +1 -1
- package/dist/app/commands/workflow.d.ts +6 -0
- package/dist/app/commands/workflow.d.ts.map +1 -0
- package/dist/app/commands/workflow.js +11 -0
- package/dist/app/commands/workflow.js.map +1 -0
- package/dist/config/repository-layout.json +21 -1
- package/dist/domains/bundle/bundle-platform.d.ts.map +1 -1
- package/dist/domains/bundle/bundle-platform.js +1 -1
- package/dist/domains/bundle/bundle-platform.js.map +1 -1
- package/dist/domains/comet-classic/classic-archive.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-archive.js +3 -0
- package/dist/domains/comet-classic/classic-archive.js.map +1 -1
- package/dist/domains/comet-classic/classic-current-change.d.ts +3 -5
- package/dist/domains/comet-classic/classic-current-change.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-current-change.js +31 -57
- package/dist/domains/comet-classic/classic-current-change.js.map +1 -1
- package/dist/domains/comet-classic/classic-guard.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-guard.js +3 -2
- package/dist/domains/comet-classic/classic-guard.js.map +1 -1
- package/dist/domains/comet-classic/classic-hook-guard.d.ts +9 -0
- package/dist/domains/comet-classic/classic-hook-guard.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-hook-guard.js +84 -11
- package/dist/domains/comet-classic/classic-hook-guard.js.map +1 -1
- package/dist/domains/comet-classic/classic-project-config.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-project-config.js +12 -8
- package/dist/domains/comet-classic/classic-project-config.js.map +1 -1
- package/dist/domains/comet-classic/classic-runtime-run.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-runtime-run.js +9 -1
- package/dist/domains/comet-classic/classic-runtime-run.js.map +1 -1
- package/dist/domains/comet-entry/current-selection-repair.d.ts +17 -0
- package/dist/domains/comet-entry/current-selection-repair.d.ts.map +1 -0
- package/dist/domains/comet-entry/current-selection-repair.js +19 -0
- package/dist/domains/comet-entry/current-selection-repair.js.map +1 -0
- package/dist/domains/comet-entry/current-selection.d.ts +28 -0
- package/dist/domains/comet-entry/current-selection.d.ts.map +1 -0
- package/dist/domains/comet-entry/current-selection.js +116 -0
- package/dist/domains/comet-entry/current-selection.js.map +1 -0
- package/dist/domains/comet-entry/entry-runtime-entry.d.ts +2 -0
- package/dist/domains/comet-entry/entry-runtime-entry.d.ts.map +1 -0
- package/dist/domains/comet-entry/entry-runtime-entry.js +3 -0
- package/dist/domains/comet-entry/entry-runtime-entry.js.map +1 -0
- package/dist/domains/comet-entry/entry-runtime.d.ts +7 -0
- package/dist/domains/comet-entry/entry-runtime.d.ts.map +1 -0
- package/dist/domains/comet-entry/entry-runtime.js +55 -0
- package/dist/domains/comet-entry/entry-runtime.js.map +1 -0
- package/dist/domains/comet-entry/hook-adapter.d.ts +6 -0
- package/dist/domains/comet-entry/hook-adapter.d.ts.map +1 -0
- package/dist/domains/comet-entry/hook-adapter.js +202 -0
- package/dist/domains/comet-entry/hook-adapter.js.map +1 -0
- package/dist/domains/comet-entry/hook-router-entry.d.ts +8 -0
- package/dist/domains/comet-entry/hook-router-entry.d.ts.map +1 -0
- package/dist/domains/comet-entry/hook-router-entry.js +92 -0
- package/dist/domains/comet-entry/hook-router-entry.js.map +1 -0
- package/dist/domains/comet-entry/hook-router.d.ts +32 -0
- package/dist/domains/comet-entry/hook-router.d.ts.map +1 -0
- package/dist/domains/comet-entry/hook-router.js +133 -0
- package/dist/domains/comet-entry/hook-router.js.map +1 -0
- package/dist/domains/comet-entry/hook-types.d.ts +20 -0
- package/dist/domains/comet-entry/hook-types.d.ts.map +1 -0
- package/dist/domains/comet-entry/hook-types.js +2 -0
- package/dist/domains/comet-entry/hook-types.js.map +1 -0
- package/dist/domains/comet-entry/init-workflow.d.ts +16 -0
- package/dist/domains/comet-entry/init-workflow.d.ts.map +1 -0
- package/dist/domains/comet-entry/init-workflow.js +103 -0
- package/dist/domains/comet-entry/init-workflow.js.map +1 -0
- package/dist/domains/comet-entry/project-status.d.ts +3 -0
- package/dist/domains/comet-entry/project-status.d.ts.map +1 -0
- package/dist/domains/comet-entry/project-status.js +222 -0
- package/dist/domains/comet-entry/project-status.js.map +1 -0
- package/dist/domains/comet-entry/resolve-entry.d.ts +3 -0
- package/dist/domains/comet-entry/resolve-entry.d.ts.map +1 -0
- package/dist/domains/comet-entry/resolve-entry.js +22 -0
- package/dist/domains/comet-entry/resolve-entry.js.map +1 -0
- package/dist/domains/comet-entry/resume-probe.d.ts +34 -0
- package/dist/domains/comet-entry/resume-probe.d.ts.map +1 -0
- package/dist/domains/comet-entry/resume-probe.js +458 -0
- package/dist/domains/comet-entry/resume-probe.js.map +1 -0
- package/dist/domains/comet-entry/types.d.ts +59 -0
- package/dist/domains/comet-entry/types.d.ts.map +1 -0
- package/dist/domains/comet-entry/types.js +2 -0
- package/dist/domains/comet-entry/types.js.map +1 -0
- package/dist/domains/comet-entry/workflow-resolution.d.ts +8 -0
- package/dist/domains/comet-entry/workflow-resolution.d.ts.map +1 -0
- package/dist/domains/comet-entry/workflow-resolution.js +16 -0
- package/dist/domains/comet-entry/workflow-resolution.js.map +1 -0
- package/dist/domains/comet-native/index.d.ts +35 -0
- package/dist/domains/comet-native/index.d.ts.map +1 -0
- package/dist/domains/comet-native/index.js +35 -0
- package/dist/domains/comet-native/index.js.map +1 -0
- package/dist/domains/comet-native/native-acceptance.d.ts +42 -0
- package/dist/domains/comet-native/native-acceptance.d.ts.map +1 -0
- package/dist/domains/comet-native/native-acceptance.js +503 -0
- package/dist/domains/comet-native/native-acceptance.js.map +1 -0
- package/dist/domains/comet-native/native-archive-content.d.ts +26 -0
- package/dist/domains/comet-native/native-archive-content.d.ts.map +1 -0
- package/dist/domains/comet-native/native-archive-content.js +159 -0
- package/dist/domains/comet-native/native-archive-content.js.map +1 -0
- package/dist/domains/comet-native/native-archive-inspection.d.ts +9 -0
- package/dist/domains/comet-native/native-archive-inspection.d.ts.map +1 -0
- package/dist/domains/comet-native/native-archive-inspection.js +94 -0
- package/dist/domains/comet-native/native-archive-inspection.js.map +1 -0
- package/dist/domains/comet-native/native-archive-preflight.d.ts +52 -0
- package/dist/domains/comet-native/native-archive-preflight.d.ts.map +1 -0
- package/dist/domains/comet-native/native-archive-preflight.js +214 -0
- package/dist/domains/comet-native/native-archive-preflight.js.map +1 -0
- package/dist/domains/comet-native/native-archive-transaction.d.ts +19 -0
- package/dist/domains/comet-native/native-archive-transaction.d.ts.map +1 -0
- package/dist/domains/comet-native/native-archive-transaction.js +1180 -0
- package/dist/domains/comet-native/native-archive-transaction.js.map +1 -0
- package/dist/domains/comet-native/native-archive.d.ts +36 -0
- package/dist/domains/comet-native/native-archive.d.ts.map +1 -0
- package/dist/domains/comet-native/native-archive.js +403 -0
- package/dist/domains/comet-native/native-archive.js.map +1 -0
- package/dist/domains/comet-native/native-artifacts.d.ts +10 -0
- package/dist/domains/comet-native/native-artifacts.d.ts.map +1 -0
- package/dist/domains/comet-native/native-artifacts.js +204 -0
- package/dist/domains/comet-native/native-artifacts.js.map +1 -0
- package/dist/domains/comet-native/native-atomic-file.d.ts +10 -0
- package/dist/domains/comet-native/native-atomic-file.d.ts.map +1 -0
- package/dist/domains/comet-native/native-atomic-file.js +179 -0
- package/dist/domains/comet-native/native-atomic-file.js.map +1 -0
- package/dist/domains/comet-native/native-bounded-file.d.ts +19 -0
- package/dist/domains/comet-native/native-bounded-file.d.ts.map +1 -0
- package/dist/domains/comet-native/native-bounded-file.js +184 -0
- package/dist/domains/comet-native/native-bounded-file.js.map +1 -0
- package/dist/domains/comet-native/native-build-evidence.d.ts +42 -0
- package/dist/domains/comet-native/native-build-evidence.d.ts.map +1 -0
- package/dist/domains/comet-native/native-build-evidence.js +257 -0
- package/dist/domains/comet-native/native-build-evidence.js.map +1 -0
- package/dist/domains/comet-native/native-canonical-hash.d.ts +10 -0
- package/dist/domains/comet-native/native-canonical-hash.d.ts.map +1 -0
- package/dist/domains/comet-native/native-canonical-hash.js +100 -0
- package/dist/domains/comet-native/native-canonical-hash.js.map +1 -0
- package/dist/domains/comet-native/native-change-recovery.d.ts +11 -0
- package/dist/domains/comet-native/native-change-recovery.d.ts.map +1 -0
- package/dist/domains/comet-native/native-change-recovery.js +15 -0
- package/dist/domains/comet-native/native-change-recovery.js.map +1 -0
- package/dist/domains/comet-native/native-change.d.ts +61 -0
- package/dist/domains/comet-native/native-change.d.ts.map +1 -0
- package/dist/domains/comet-native/native-change.js +696 -0
- package/dist/domains/comet-native/native-change.js.map +1 -0
- package/dist/domains/comet-native/native-check-receipt-model.d.ts +63 -0
- package/dist/domains/comet-native/native-check-receipt-model.d.ts.map +1 -0
- package/dist/domains/comet-native/native-check-receipt-model.js +347 -0
- package/dist/domains/comet-native/native-check-receipt-model.js.map +1 -0
- package/dist/domains/comet-native/native-check-receipt-storage.d.ts +10 -0
- package/dist/domains/comet-native/native-check-receipt-storage.d.ts.map +1 -0
- package/dist/domains/comet-native/native-check-receipt-storage.js +200 -0
- package/dist/domains/comet-native/native-check-receipt-storage.js.map +1 -0
- package/dist/domains/comet-native/native-check-receipt.d.ts +19 -0
- package/dist/domains/comet-native/native-check-receipt.d.ts.map +1 -0
- package/dist/domains/comet-native/native-check-receipt.js +449 -0
- package/dist/domains/comet-native/native-check-receipt.js.map +1 -0
- package/dist/domains/comet-native/native-check.d.ts +18 -0
- package/dist/domains/comet-native/native-check.d.ts.map +1 -0
- package/dist/domains/comet-native/native-check.js +29 -0
- package/dist/domains/comet-native/native-check.js.map +1 -0
- package/dist/domains/comet-native/native-checkpoint-journal.d.ts +13 -0
- package/dist/domains/comet-native/native-checkpoint-journal.d.ts.map +1 -0
- package/dist/domains/comet-native/native-checkpoint-journal.js +53 -0
- package/dist/domains/comet-native/native-checkpoint-journal.js.map +1 -0
- package/dist/domains/comet-native/native-checkpoint-storage.d.ts +43 -0
- package/dist/domains/comet-native/native-checkpoint-storage.d.ts.map +1 -0
- package/dist/domains/comet-native/native-checkpoint-storage.js +487 -0
- package/dist/domains/comet-native/native-checkpoint-storage.js.map +1 -0
- package/dist/domains/comet-native/native-cli-entry.d.ts +2 -0
- package/dist/domains/comet-native/native-cli-entry.d.ts.map +1 -0
- package/dist/domains/comet-native/native-cli-entry.js +18 -0
- package/dist/domains/comet-native/native-cli-entry.js.map +1 -0
- package/dist/domains/comet-native/native-cli.d.ts +7 -0
- package/dist/domains/comet-native/native-cli.d.ts.map +1 -0
- package/dist/domains/comet-native/native-cli.js +642 -0
- package/dist/domains/comet-native/native-cli.js.map +1 -0
- package/dist/domains/comet-native/native-config.d.ts +15 -0
- package/dist/domains/comet-native/native-config.d.ts.map +1 -0
- package/dist/domains/comet-native/native-config.js +281 -0
- package/dist/domains/comet-native/native-config.js.map +1 -0
- package/dist/domains/comet-native/native-conflict-inspection.d.ts +17 -0
- package/dist/domains/comet-native/native-conflict-inspection.d.ts.map +1 -0
- package/dist/domains/comet-native/native-conflict-inspection.js +90 -0
- package/dist/domains/comet-native/native-conflict-inspection.js.map +1 -0
- package/dist/domains/comet-native/native-conflict-radar.d.ts +75 -0
- package/dist/domains/comet-native/native-conflict-radar.d.ts.map +1 -0
- package/dist/domains/comet-native/native-conflict-radar.js +326 -0
- package/dist/domains/comet-native/native-conflict-radar.js.map +1 -0
- package/dist/domains/comet-native/native-continuation.d.ts +9 -0
- package/dist/domains/comet-native/native-continuation.d.ts.map +1 -0
- package/dist/domains/comet-native/native-continuation.js +146 -0
- package/dist/domains/comet-native/native-continuation.js.map +1 -0
- package/dist/domains/comet-native/native-contract-files.d.ts +24 -0
- package/dist/domains/comet-native/native-contract-files.d.ts.map +1 -0
- package/dist/domains/comet-native/native-contract-files.js +66 -0
- package/dist/domains/comet-native/native-contract-files.js.map +1 -0
- package/dist/domains/comet-native/native-contract.d.ts +41 -0
- package/dist/domains/comet-native/native-contract.d.ts.map +1 -0
- package/dist/domains/comet-native/native-contract.js +141 -0
- package/dist/domains/comet-native/native-contract.js.map +1 -0
- package/dist/domains/comet-native/native-diagnostics.d.ts +18 -0
- package/dist/domains/comet-native/native-diagnostics.d.ts.map +1 -0
- package/dist/domains/comet-native/native-diagnostics.js +522 -0
- package/dist/domains/comet-native/native-diagnostics.js.map +1 -0
- package/dist/domains/comet-native/native-doctor.d.ts +12 -0
- package/dist/domains/comet-native/native-doctor.d.ts.map +1 -0
- package/dist/domains/comet-native/native-doctor.js +768 -0
- package/dist/domains/comet-native/native-doctor.js.map +1 -0
- package/dist/domains/comet-native/native-evidence-retention.d.ts +37 -0
- package/dist/domains/comet-native/native-evidence-retention.d.ts.map +1 -0
- package/dist/domains/comet-native/native-evidence-retention.js +887 -0
- package/dist/domains/comet-native/native-evidence-retention.js.map +1 -0
- package/dist/domains/comet-native/native-evidence-storage.d.ts +41 -0
- package/dist/domains/comet-native/native-evidence-storage.d.ts.map +1 -0
- package/dist/domains/comet-native/native-evidence-storage.js +355 -0
- package/dist/domains/comet-native/native-evidence-storage.js.map +1 -0
- package/dist/domains/comet-native/native-file-identity.d.ts +9 -0
- package/dist/domains/comet-native/native-file-identity.d.ts.map +1 -0
- package/dist/domains/comet-native/native-file-identity.js +21 -0
- package/dist/domains/comet-native/native-file-identity.js.map +1 -0
- package/dist/domains/comet-native/native-findings.d.ts +8 -0
- package/dist/domains/comet-native/native-findings.d.ts.map +1 -0
- package/dist/domains/comet-native/native-findings.js +238 -0
- package/dist/domains/comet-native/native-findings.js.map +1 -0
- package/dist/domains/comet-native/native-guards.d.ts +7 -0
- package/dist/domains/comet-native/native-guards.d.ts.map +1 -0
- package/dist/domains/comet-native/native-guards.js +126 -0
- package/dist/domains/comet-native/native-guards.js.map +1 -0
- package/dist/domains/comet-native/native-hash.d.ts +3 -0
- package/dist/domains/comet-native/native-hash.d.ts.map +1 -0
- package/dist/domains/comet-native/native-hash.js +12 -0
- package/dist/domains/comet-native/native-hash.js.map +1 -0
- package/dist/domains/comet-native/native-hook-guard.d.ts +17 -0
- package/dist/domains/comet-native/native-hook-guard.d.ts.map +1 -0
- package/dist/domains/comet-native/native-hook-guard.js +154 -0
- package/dist/domains/comet-native/native-hook-guard.js.map +1 -0
- package/dist/domains/comet-native/native-lock.d.ts +47 -0
- package/dist/domains/comet-native/native-lock.d.ts.map +1 -0
- package/dist/domains/comet-native/native-lock.js +398 -0
- package/dist/domains/comet-native/native-lock.js.map +1 -0
- package/dist/domains/comet-native/native-mutation-lock.d.ts +5 -0
- package/dist/domains/comet-native/native-mutation-lock.d.ts.map +1 -0
- package/dist/domains/comet-native/native-mutation-lock.js +66 -0
- package/dist/domains/comet-native/native-mutation-lock.js.map +1 -0
- package/dist/domains/comet-native/native-paths.d.ts +10 -0
- package/dist/domains/comet-native/native-paths.d.ts.map +1 -0
- package/dist/domains/comet-native/native-paths.js +171 -0
- package/dist/domains/comet-native/native-paths.js.map +1 -0
- package/dist/domains/comet-native/native-progress-checkpoint.d.ts +13 -0
- package/dist/domains/comet-native/native-progress-checkpoint.d.ts.map +1 -0
- package/dist/domains/comet-native/native-progress-checkpoint.js +104 -0
- package/dist/domains/comet-native/native-progress-checkpoint.js.map +1 -0
- package/dist/domains/comet-native/native-protected-file.d.ts +113 -0
- package/dist/domains/comet-native/native-protected-file.d.ts.map +1 -0
- package/dist/domains/comet-native/native-protected-file.js +510 -0
- package/dist/domains/comet-native/native-protected-file.js.map +1 -0
- package/dist/domains/comet-native/native-redaction.d.ts +2 -0
- package/dist/domains/comet-native/native-redaction.d.ts.map +1 -0
- package/dist/domains/comet-native/native-redaction.js +18 -0
- package/dist/domains/comet-native/native-redaction.js.map +1 -0
- package/dist/domains/comet-native/native-repair-integration.d.ts +42 -0
- package/dist/domains/comet-native/native-repair-integration.d.ts.map +1 -0
- package/dist/domains/comet-native/native-repair-integration.js +184 -0
- package/dist/domains/comet-native/native-repair-integration.js.map +1 -0
- package/dist/domains/comet-native/native-repair-runtime.d.ts +73 -0
- package/dist/domains/comet-native/native-repair-runtime.d.ts.map +1 -0
- package/dist/domains/comet-native/native-repair-runtime.js +509 -0
- package/dist/domains/comet-native/native-repair-runtime.js.map +1 -0
- package/dist/domains/comet-native/native-repair-stagnation.d.ts +85 -0
- package/dist/domains/comet-native/native-repair-stagnation.d.ts.map +1 -0
- package/dist/domains/comet-native/native-repair-stagnation.js +256 -0
- package/dist/domains/comet-native/native-repair-stagnation.js.map +1 -0
- package/dist/domains/comet-native/native-resume-view.d.ts +14 -0
- package/dist/domains/comet-native/native-resume-view.d.ts.map +1 -0
- package/dist/domains/comet-native/native-resume-view.js +105 -0
- package/dist/domains/comet-native/native-resume-view.js.map +1 -0
- package/dist/domains/comet-native/native-revision.d.ts +20 -0
- package/dist/domains/comet-native/native-revision.d.ts.map +1 -0
- package/dist/domains/comet-native/native-revision.js +32 -0
- package/dist/domains/comet-native/native-revision.js.map +1 -0
- package/dist/domains/comet-native/native-root-move.d.ts +20 -0
- package/dist/domains/comet-native/native-root-move.d.ts.map +1 -0
- package/dist/domains/comet-native/native-root-move.js +812 -0
- package/dist/domains/comet-native/native-root-move.js.map +1 -0
- package/dist/domains/comet-native/native-run-consistency.d.ts +3 -0
- package/dist/domains/comet-native/native-run-consistency.d.ts.map +1 -0
- package/dist/domains/comet-native/native-run-consistency.js +136 -0
- package/dist/domains/comet-native/native-run-consistency.js.map +1 -0
- package/dist/domains/comet-native/native-run-store.d.ts +41 -0
- package/dist/domains/comet-native/native-run-store.d.ts.map +1 -0
- package/dist/domains/comet-native/native-run-store.js +452 -0
- package/dist/domains/comet-native/native-run-store.js.map +1 -0
- package/dist/domains/comet-native/native-runtime-package.d.ts +16 -0
- package/dist/domains/comet-native/native-runtime-package.d.ts.map +1 -0
- package/dist/domains/comet-native/native-runtime-package.js +72 -0
- package/dist/domains/comet-native/native-runtime-package.js.map +1 -0
- package/dist/domains/comet-native/native-schema-migration.d.ts +11 -0
- package/dist/domains/comet-native/native-schema-migration.d.ts.map +1 -0
- package/dist/domains/comet-native/native-schema-migration.js +899 -0
- package/dist/domains/comet-native/native-schema-migration.js.map +1 -0
- package/dist/domains/comet-native/native-selection.d.ts +12 -0
- package/dist/domains/comet-native/native-selection.d.ts.map +1 -0
- package/dist/domains/comet-native/native-selection.js +52 -0
- package/dist/domains/comet-native/native-selection.js.map +1 -0
- package/dist/domains/comet-native/native-sensitive-paths.d.ts +7 -0
- package/dist/domains/comet-native/native-sensitive-paths.d.ts.map +1 -0
- package/dist/domains/comet-native/native-sensitive-paths.js +69 -0
- package/dist/domains/comet-native/native-sensitive-paths.js.map +1 -0
- package/dist/domains/comet-native/native-snapshot.d.ts +74 -0
- package/dist/domains/comet-native/native-snapshot.d.ts.map +1 -0
- package/dist/domains/comet-native/native-snapshot.js +2312 -0
- package/dist/domains/comet-native/native-snapshot.js.map +1 -0
- package/dist/domains/comet-native/native-specs.d.ts +12 -0
- package/dist/domains/comet-native/native-specs.d.ts.map +1 -0
- package/dist/domains/comet-native/native-specs.js +270 -0
- package/dist/domains/comet-native/native-specs.js.map +1 -0
- package/dist/domains/comet-native/native-trajectory-limits.d.ts +7 -0
- package/dist/domains/comet-native/native-trajectory-limits.d.ts.map +1 -0
- package/dist/domains/comet-native/native-trajectory-limits.js +13 -0
- package/dist/domains/comet-native/native-trajectory-limits.js.map +1 -0
- package/dist/domains/comet-native/native-trajectory-recovery.d.ts +37 -0
- package/dist/domains/comet-native/native-trajectory-recovery.d.ts.map +1 -0
- package/dist/domains/comet-native/native-trajectory-recovery.js +133 -0
- package/dist/domains/comet-native/native-trajectory-recovery.js.map +1 -0
- package/dist/domains/comet-native/native-trajectory.d.ts +16 -0
- package/dist/domains/comet-native/native-trajectory.d.ts.map +1 -0
- package/dist/domains/comet-native/native-trajectory.js +27 -0
- package/dist/domains/comet-native/native-trajectory.js.map +1 -0
- package/dist/domains/comet-native/native-transaction.d.ts +45 -0
- package/dist/domains/comet-native/native-transaction.d.ts.map +1 -0
- package/dist/domains/comet-native/native-transaction.js +846 -0
- package/dist/domains/comet-native/native-transaction.js.map +1 -0
- package/dist/domains/comet-native/native-transition-evidence.d.ts +4 -0
- package/dist/domains/comet-native/native-transition-evidence.d.ts.map +1 -0
- package/dist/domains/comet-native/native-transition-evidence.js +20 -0
- package/dist/domains/comet-native/native-transition-evidence.js.map +1 -0
- package/dist/domains/comet-native/native-transition-journal.d.ts +30 -0
- package/dist/domains/comet-native/native-transition-journal.d.ts.map +1 -0
- package/dist/domains/comet-native/native-transition-journal.js +819 -0
- package/dist/domains/comet-native/native-transition-journal.js.map +1 -0
- package/dist/domains/comet-native/native-transitions.d.ts +13 -0
- package/dist/domains/comet-native/native-transitions.d.ts.map +1 -0
- package/dist/domains/comet-native/native-transitions.js +632 -0
- package/dist/domains/comet-native/native-transitions.js.map +1 -0
- package/dist/domains/comet-native/native-types.d.ts +547 -0
- package/dist/domains/comet-native/native-types.d.ts.map +1 -0
- package/dist/domains/comet-native/native-types.js +8 -0
- package/dist/domains/comet-native/native-types.js.map +1 -0
- package/dist/domains/comet-native/native-verification-evidence.d.ts +86 -0
- package/dist/domains/comet-native/native-verification-evidence.d.ts.map +1 -0
- package/dist/domains/comet-native/native-verification-evidence.js +480 -0
- package/dist/domains/comet-native/native-verification-evidence.js.map +1 -0
- package/dist/domains/comet-native/native-verification-runtime.d.ts +58 -0
- package/dist/domains/comet-native/native-verification-runtime.d.ts.map +1 -0
- package/dist/domains/comet-native/native-verification-runtime.js +321 -0
- package/dist/domains/comet-native/native-verification-runtime.js.map +1 -0
- package/dist/domains/comet-native/native-verification-scope.d.ts +117 -0
- package/dist/domains/comet-native/native-verification-scope.d.ts.map +1 -0
- package/dist/domains/comet-native/native-verification-scope.js +1040 -0
- package/dist/domains/comet-native/native-verification-scope.js.map +1 -0
- package/dist/domains/comet-native/native-workspace.d.ts +46 -0
- package/dist/domains/comet-native/native-workspace.d.ts.map +1 -0
- package/dist/domains/comet-native/native-workspace.js +276 -0
- package/dist/domains/comet-native/native-workspace.js.map +1 -0
- package/dist/domains/dashboard/collector.d.ts.map +1 -1
- package/dist/domains/dashboard/collector.js +9 -1
- package/dist/domains/dashboard/collector.js.map +1 -1
- package/dist/domains/dashboard/native-adapter.d.ts +157 -0
- package/dist/domains/dashboard/native-adapter.d.ts.map +1 -0
- package/dist/domains/dashboard/native-adapter.js +302 -0
- package/dist/domains/dashboard/native-adapter.js.map +1 -0
- package/dist/domains/dashboard/native-collector.d.ts +6 -0
- package/dist/domains/dashboard/native-collector.d.ts.map +1 -0
- package/dist/domains/dashboard/native-collector.js +285 -0
- package/dist/domains/dashboard/native-collector.js.map +1 -0
- package/dist/domains/dashboard/types.d.ts +5 -0
- package/dist/domains/dashboard/types.d.ts.map +1 -1
- package/dist/domains/dashboard/web/assets/{arc-TGVUG2WN.js → arc-CxdiLJ50.js} +1 -1
- package/dist/domains/dashboard/web/assets/{architectureDiagram-3BPJPVTR-ASHmiHoP.js → architectureDiagram-3BPJPVTR-D5YCQu4e.js} +1 -1
- package/dist/domains/dashboard/web/assets/{blockDiagram-GPEHLZMM-CwASxBKe.js → blockDiagram-GPEHLZMM-8NfdCOQ8.js} +1 -1
- package/dist/domains/dashboard/web/assets/{c4Diagram-AAUBKEIU-BU8z_WNk.js → c4Diagram-AAUBKEIU-B3cFnNT7.js} +1 -1
- package/dist/domains/dashboard/web/assets/channel-B6AFly29.js +1 -0
- package/dist/domains/dashboard/web/assets/{chunk-2J33WTMH-CBGlUx4_.js → chunk-2J33WTMH-CBNfW-Dr.js} +1 -1
- package/dist/domains/dashboard/web/assets/{chunk-4BX2VUAB-CS-iGcFz.js → chunk-4BX2VUAB-vWyemRBr.js} +1 -1
- package/dist/domains/dashboard/web/assets/{chunk-55IACEB6-BUtCVJat.js → chunk-55IACEB6-H6haOo2C.js} +1 -1
- package/dist/domains/dashboard/web/assets/{chunk-727SXJPM-C94tj_pf.js → chunk-727SXJPM-D02UjGND.js} +1 -1
- package/dist/domains/dashboard/web/assets/{chunk-AQP2D5EJ-BFOKcpdG.js → chunk-AQP2D5EJ-wKsbOw_T.js} +1 -1
- package/dist/domains/dashboard/web/assets/{chunk-FMBD7UC4-Dmx8B-st.js → chunk-FMBD7UC4-eYFEZimP.js} +1 -1
- package/dist/domains/dashboard/web/assets/{chunk-ND2GUHAM-DYV00CNn.js → chunk-ND2GUHAM-fMaIDDI2.js} +1 -1
- package/dist/domains/dashboard/web/assets/{chunk-QZHKN3VN-DMJJyQnw.js → chunk-QZHKN3VN-C9rhF6Hm.js} +1 -1
- package/dist/domains/dashboard/web/assets/classDiagram-4FO5ZUOK-BcnrxOTt.js +1 -0
- package/dist/domains/dashboard/web/assets/classDiagram-v2-Q7XG4LA2-BcnrxOTt.js +1 -0
- package/dist/domains/dashboard/web/assets/{cose-bilkent-S5V4N54A-P4nE2rea.js → cose-bilkent-S5V4N54A-CbaShPub.js} +1 -1
- package/dist/domains/dashboard/web/assets/{cynefin-VYW2F7L2-C-R1HXDv.js → cynefin-VYW2F7L2-DN4emAQv.js} +1 -1
- package/dist/domains/dashboard/web/assets/{dagre-BM42HDAG-BH8d-C9z.js → dagre-BM42HDAG-BpSzbk_V.js} +1 -1
- package/dist/domains/dashboard/web/assets/demo-BuVau32v.js +25 -0
- package/dist/domains/dashboard/web/assets/{diagram-2AECGRRQ-DpXTgQIH.js → diagram-2AECGRRQ-CfXwGGpQ.js} +1 -1
- package/dist/domains/dashboard/web/assets/{diagram-5GNKFQAL-DSiFJzSw.js → diagram-5GNKFQAL-DMp0Zmot.js} +1 -1
- package/dist/domains/dashboard/web/assets/{diagram-KO2AKTUF-DULMkben.js → diagram-KO2AKTUF-C7ZvofsM.js} +1 -1
- package/dist/domains/dashboard/web/assets/{diagram-LMA3HP47-Pi8m_NO9.js → diagram-LMA3HP47-BjmxFnap.js} +1 -1
- package/dist/domains/dashboard/web/assets/{diagram-OG6HWLK6-BSe6bCWm.js → diagram-OG6HWLK6-DFBG1Iqy.js} +1 -1
- package/dist/domains/dashboard/web/assets/{erDiagram-TEJ5UH35-zb-FEcbq.js → erDiagram-TEJ5UH35-MpNT7dzt.js} +1 -1
- package/dist/domains/dashboard/web/assets/{flowDiagram-I6XJVG4X-Dr-Gk0z2.js → flowDiagram-I6XJVG4X-_1wAR6c1.js} +1 -1
- package/dist/domains/dashboard/web/assets/{ganttDiagram-6RSMTGT7-qs6Zb2A6.js → ganttDiagram-6RSMTGT7-DJKjDeWl.js} +1 -1
- package/dist/domains/dashboard/web/assets/{gitGraphDiagram-PVQCEYII-BQ314orT.js → gitGraphDiagram-PVQCEYII-BL7yUEn-.js} +1 -1
- package/dist/domains/dashboard/web/assets/index-CjE9mHGb.js +24 -0
- package/dist/domains/dashboard/web/assets/index-D-AGxvI4.css +1 -0
- package/dist/domains/dashboard/web/assets/{infoDiagram-5YYISTIA-O0bQp98A.js → infoDiagram-5YYISTIA-Bt5fqrOd.js} +1 -1
- package/dist/domains/dashboard/web/assets/{ishikawaDiagram-YF4QCWOH-BPC7wbKh.js → ishikawaDiagram-YF4QCWOH-COCMcjBM.js} +1 -1
- package/dist/domains/dashboard/web/assets/{journeyDiagram-JHISSGLW-ohViOd4b.js → journeyDiagram-JHISSGLW-DGcpcWny.js} +1 -1
- package/dist/domains/dashboard/web/assets/{kanban-definition-UN3LZRKU-CHleNdbG.js → kanban-definition-UN3LZRKU-QSBNsWMP.js} +1 -1
- package/dist/domains/dashboard/web/assets/{linear-CyqiW--Q.js → linear-9uyeeBZf.js} +1 -1
- package/dist/domains/dashboard/web/assets/{mermaid.core-qS9XvtaK.js → mermaid.core-CkNdB471.js} +4 -4
- package/dist/domains/dashboard/web/assets/{mindmap-definition-RKZ34NQL-oaGkqO9l.js → mindmap-definition-RKZ34NQL-CiNxI0gP.js} +1 -1
- package/dist/domains/dashboard/web/assets/{pieDiagram-4H26LBE5-CPcB-AFh.js → pieDiagram-4H26LBE5-BLJ6QnRO.js} +1 -1
- package/dist/domains/dashboard/web/assets/{quadrantDiagram-W4KKPZXB-LFy52Qtj.js → quadrantDiagram-W4KKPZXB-CflW-eFH.js} +1 -1
- package/dist/domains/dashboard/web/assets/{requirementDiagram-4Y6WPE33-BdjeaYP_.js → requirementDiagram-4Y6WPE33-B9HLmRWH.js} +1 -1
- package/dist/domains/dashboard/web/assets/{sankeyDiagram-5OEKKPKP-DDJ4styL.js → sankeyDiagram-5OEKKPKP-6xnco5k5.js} +1 -1
- package/dist/domains/dashboard/web/assets/{sequenceDiagram-3UESZ5HK-BL5bFNoz.js → sequenceDiagram-3UESZ5HK-Dp1rujNZ.js} +1 -1
- package/dist/domains/dashboard/web/assets/{stateDiagram-AJRCARHV-BNUfikui.js → stateDiagram-AJRCARHV-C1Xc90ek.js} +1 -1
- package/dist/domains/dashboard/web/assets/stateDiagram-v2-BHNVJYJU-p-qmzXyE.js +1 -0
- package/dist/domains/dashboard/web/assets/{timeline-definition-PNZ67QCA--ps2uu6L.js → timeline-definition-PNZ67QCA-g9s-m5Z4.js} +1 -1
- package/dist/domains/dashboard/web/assets/{vennDiagram-CIIHVFJN-C2q8q26c.js → vennDiagram-CIIHVFJN-rkEyhyCc.js} +1 -1
- package/dist/domains/dashboard/web/assets/{wardleyDiagram-YWT4CUSO-BUH9gXqd.js → wardleyDiagram-YWT4CUSO-CJLrWGXc.js} +1 -1
- package/dist/domains/dashboard/web/assets/{xychartDiagram-2RQKCTM6-B-DielEy.js → xychartDiagram-2RQKCTM6-BxJvPNqo.js} +1 -1
- package/dist/domains/dashboard/web/index.html +16 -16
- package/dist/domains/engine/storage-layout.d.ts +14 -0
- package/dist/domains/engine/storage-layout.d.ts.map +1 -0
- package/dist/domains/engine/storage-layout.js +32 -0
- package/dist/domains/engine/storage-layout.js.map +1 -0
- package/dist/domains/engine/storage-run.d.ts +9 -0
- package/dist/domains/engine/storage-run.d.ts.map +1 -0
- package/dist/domains/engine/storage-run.js +116 -0
- package/dist/domains/engine/storage-run.js.map +1 -0
- package/dist/domains/factory/package.d.ts.map +1 -1
- package/dist/domains/factory/package.js +5 -3
- package/dist/domains/factory/package.js.map +1 -1
- package/dist/domains/integrations/openspec.d.ts.map +1 -1
- package/dist/domains/integrations/openspec.js +8 -6
- package/dist/domains/integrations/openspec.js.map +1 -1
- package/dist/domains/skill/platform-inspect.d.ts +6 -2
- package/dist/domains/skill/platform-inspect.d.ts.map +1 -1
- package/dist/domains/skill/platform-inspect.js +52 -8
- package/dist/domains/skill/platform-inspect.js.map +1 -1
- package/dist/domains/skill/platform-install.d.ts +18 -7
- package/dist/domains/skill/platform-install.d.ts.map +1 -1
- package/dist/domains/skill/platform-install.js +338 -71
- package/dist/domains/skill/platform-install.js.map +1 -1
- package/dist/domains/skill/project-instructions.d.ts.map +1 -1
- package/dist/domains/skill/project-instructions.js +12 -6
- package/dist/domains/skill/project-instructions.js.map +1 -1
- package/dist/domains/skill/uninstall.d.ts.map +1 -1
- package/dist/domains/skill/uninstall.js +15 -3
- package/dist/domains/skill/uninstall.js.map +1 -1
- package/dist/domains/workflow-contract/builtins.d.ts +6 -0
- package/dist/domains/workflow-contract/builtins.d.ts.map +1 -1
- package/dist/domains/workflow-contract/builtins.js +137 -0
- package/dist/domains/workflow-contract/builtins.js.map +1 -1
- package/dist/domains/workflow-contract/index.d.ts +3 -1
- package/dist/domains/workflow-contract/index.d.ts.map +1 -1
- package/dist/domains/workflow-contract/index.js +2 -1
- package/dist/domains/workflow-contract/index.js.map +1 -1
- package/dist/domains/workflow-contract/normalize.d.ts.map +1 -1
- package/dist/domains/workflow-contract/normalize.js +28 -10
- package/dist/domains/workflow-contract/normalize.js.map +1 -1
- package/dist/domains/workflow-contract/project-config.d.ts +7 -0
- package/dist/domains/workflow-contract/project-config.d.ts.map +1 -0
- package/dist/domains/workflow-contract/project-config.js +110 -0
- package/dist/domains/workflow-contract/project-config.js.map +1 -0
- package/dist/domains/workflow-contract/types.d.ts +4 -2
- package/dist/domains/workflow-contract/types.d.ts.map +1 -1
- package/dist/domains/workflow-contract/validation.d.ts.map +1 -1
- package/dist/domains/workflow-contract/validation.js +14 -5
- package/dist/domains/workflow-contract/validation.js.map +1 -1
- package/dist/platform/install/detect.d.ts +3 -1
- package/dist/platform/install/detect.d.ts.map +1 -1
- package/dist/platform/install/detect.js +4 -1
- package/dist/platform/install/detect.js.map +1 -1
- package/dist/platform/install/project-registry.js +2 -2
- package/dist/platform/install/project-registry.js.map +1 -1
- package/dist/platform/paths/repository-layout.d.ts +16 -0
- package/dist/platform/paths/repository-layout.d.ts.map +1 -1
- package/dist/platform/paths/repository-layout.js.map +1 -1
- package/eval/local/README.md +50 -0
- package/eval/local/scripts/compare_baselines.py +127 -1
- package/eval/local/scripts/regression_check.py +3 -4
- package/eval/local/tasks/comet-native-clarification/environment/Dockerfile +27 -0
- package/eval/local/tasks/comet-native-clarification/environment/test_wordcount.py +25 -0
- package/eval/local/tasks/comet-native-clarification/environment/wordcount.py +36 -0
- package/eval/local/tasks/comet-native-clarification/instruction.md +7 -0
- package/eval/local/tasks/comet-native-clarification/task.toml +40 -0
- package/eval/local/tasks/comet-native-clarification/validation/test_native_clarification.py +193 -0
- package/eval/local/tasks/comet-native-clarification-modes/environment/Dockerfile +27 -0
- package/eval/local/tasks/comet-native-clarification-modes/environment/test_wordcount.py +25 -0
- package/eval/local/tasks/comet-native-clarification-modes/environment/wordcount.py +36 -0
- package/eval/local/tasks/comet-native-clarification-modes/instruction.md +13 -0
- package/eval/local/tasks/comet-native-clarification-modes/task.toml +39 -0
- package/eval/local/tasks/comet-native-clarification-modes/validation/test_native_clarification_modes.py +235 -0
- package/eval/local/tasks/comet-native-interrupted-transition/environment/.comet/config.yaml +6 -0
- package/eval/local/tasks/comet-native-interrupted-transition/environment/Dockerfile +28 -0
- package/eval/local/tasks/comet-native-interrupted-transition/environment/docs/comet/changes/add-character-counting/brief.md +17 -0
- package/eval/local/tasks/comet-native-interrupted-transition/environment/docs/comet/changes/add-character-counting/comet-state.yaml +12 -0
- package/eval/local/tasks/comet-native-interrupted-transition/environment/docs/comet/changes/add-character-counting/runtime/transition.json +69 -0
- package/eval/local/tasks/comet-native-interrupted-transition/environment/docs/comet/changes/add-character-counting/specs/character-counting/spec.md +3 -0
- package/eval/local/tasks/comet-native-interrupted-transition/environment/test_wordcount.py +20 -0
- package/eval/local/tasks/comet-native-interrupted-transition/environment/wordcount.py +27 -0
- package/eval/local/tasks/comet-native-interrupted-transition/instruction.md +7 -0
- package/eval/local/tasks/comet-native-interrupted-transition/task.toml +35 -0
- package/eval/local/tasks/comet-native-interrupted-transition/validation/test_native_interrupted_transition.py +63 -0
- package/eval/local/tasks/comet-native-repository-fact/environment/Dockerfile +26 -0
- package/eval/local/tasks/comet-native-repository-fact/environment/PRODUCT_RULES.md +3 -0
- package/eval/local/tasks/comet-native-repository-fact/environment/test_wordcount.py +20 -0
- package/eval/local/tasks/comet-native-repository-fact/environment/wordcount.py +27 -0
- package/eval/local/tasks/comet-native-repository-fact/instruction.md +7 -0
- package/eval/local/tasks/comet-native-repository-fact/task.toml +35 -0
- package/eval/local/tasks/comet-native-repository-fact/validation/test_native_repository_fact.py +53 -0
- package/eval/local/tasks/comet-native-wave-b-decision-resume/environment/Dockerfile +27 -0
- package/eval/local/tasks/comet-native-wave-b-decision-resume/environment/test_wordcount.py +27 -0
- package/eval/local/tasks/comet-native-wave-b-decision-resume/environment/wordcount.py +36 -0
- package/eval/local/tasks/comet-native-wave-b-decision-resume/instruction.md +9 -0
- package/eval/local/tasks/comet-native-wave-b-decision-resume/task.toml +40 -0
- package/eval/local/tasks/comet-native-wave-b-decision-resume/validation/test_native_wave_b_decision_resume.py +208 -0
- package/eval/local/tasks/comet-native-wave-c-verification-integrity/environment/Dockerfile +27 -0
- package/eval/local/tasks/comet-native-wave-c-verification-integrity/environment/test_wordcount.py +27 -0
- package/eval/local/tasks/comet-native-wave-c-verification-integrity/environment/wordcount.py +36 -0
- package/eval/local/tasks/comet-native-wave-c-verification-integrity/instruction.md +11 -0
- package/eval/local/tasks/comet-native-wave-c-verification-integrity/task.toml +36 -0
- package/eval/local/tasks/comet-native-wave-c-verification-integrity/validation/test_native_wave_c_verification_integrity.py +344 -0
- package/eval/local/tasks/comet-native-wave-d-stagnation-stop/environment/Dockerfile +27 -0
- package/eval/local/tasks/comet-native-wave-d-stagnation-stop/environment/test_wordcount.py +27 -0
- package/eval/local/tasks/comet-native-wave-d-stagnation-stop/environment/wordcount.py +36 -0
- package/eval/local/tasks/comet-native-wave-d-stagnation-stop/instruction.md +11 -0
- package/eval/local/tasks/comet-native-wave-d-stagnation-stop/task.toml +37 -0
- package/eval/local/tasks/comet-native-wave-d-stagnation-stop/validation/test_native_wave_d_stagnation_stop.py +284 -0
- package/eval/local/tasks/comet-native-wave-e-parallel-safety/environment/.include-trusted-native-runtime +1 -0
- package/eval/local/tasks/comet-native-wave-e-parallel-safety/environment/Dockerfile +27 -0
- package/eval/local/tasks/comet-native-wave-e-parallel-safety/environment/test_wordcount.py +27 -0
- package/eval/local/tasks/comet-native-wave-e-parallel-safety/environment/wordcount.py +36 -0
- package/eval/local/tasks/comet-native-wave-e-parallel-safety/instruction.md +9 -0
- package/eval/local/tasks/comet-native-wave-e-parallel-safety/task.toml +37 -0
- package/eval/local/tasks/comet-native-wave-e-parallel-safety/validation/test_native_wave_e_parallel_safety.py +309 -0
- package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/environment/.include-current-comet-cli +1 -0
- package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/environment/Dockerfile +31 -0
- package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/environment/current-comet-package.json +18 -0
- package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/environment/current-comet.sh +14 -0
- package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/environment/test_wordcount.py +27 -0
- package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/environment/wordcount.py +36 -0
- package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/instruction.md +7 -0
- package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/task.toml +36 -0
- package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/validation/test_native_wave_f_dashboard_readonly.py +469 -0
- package/eval/local/tasks/comet-native-workflow/environment/Dockerfile +27 -0
- package/eval/local/tasks/comet-native-workflow/environment/test_wordcount.py +25 -0
- package/eval/local/tasks/comet-native-workflow/environment/wordcount.py +36 -0
- package/eval/local/tasks/comet-native-workflow/instruction.md +14 -0
- package/eval/local/tasks/comet-native-workflow/task.toml +36 -0
- package/eval/local/tasks/comet-native-workflow/validation/test_native_workflow.py +149 -0
- package/eval/local/tasks/index.yaml +61 -0
- package/eval/local/tests/conftest.py +407 -22
- package/eval/local/tests/scaffold/test_aligned_comparison.py +1012 -0
- package/eval/local/tests/scaffold/test_conftest_helpers.py +187 -7
- package/eval/local/tests/scaffold/test_logging.py +135 -1
- package/eval/local/tests/scaffold/test_manifests.py +2 -0
- package/eval/local/tests/scaffold/test_native_aligned_eval.py +346 -0
- package/eval/local/tests/scaffold/test_native_wave_evaluations.py +1889 -0
- package/eval/local/tests/scaffold/test_profiles.py +33 -0
- package/eval/local/tests/scaffold/test_sample_quality.py +57 -0
- package/eval/local/tests/scaffold/test_tasks.py +377 -1
- package/eval/local/tests/scaffold/test_treatments.py +59 -13
- package/eval/local/tests/scaffold/test_utils.py +277 -4
- package/eval/local/tests/tasks/__init__.py +1 -0
- package/eval/local/tests/tasks/test_tasks.py +104 -78
- package/eval/local/tests/tasks/test_validation_scripts.py +37 -0
- package/eval/local/treatments/comet/comet_native_phase1.yaml +66 -0
- package/eval/pyproject.toml +4 -4
- package/eval/scaffold/python/aligned_comparison.py +1631 -0
- package/eval/scaffold/python/generic_llm_judge.py +3 -1
- package/eval/scaffold/python/llm_judge.py +0 -3
- package/eval/scaffold/python/logging.py +115 -16
- package/eval/scaffold/python/manifests.py +2 -0
- package/eval/scaffold/python/native_eval.py +138 -0
- package/eval/scaffold/python/pass_at_k.py +0 -1
- package/eval/scaffold/python/report_outputs.py +226 -44
- package/eval/scaffold/python/sample_quality.py +45 -2
- package/eval/scaffold/python/tasks.py +11 -0
- package/eval/scaffold/python/utils.py +108 -20
- package/eval/scaffold/python/validation/__init__.py +15 -5
- package/eval/scaffold/python/validation/comet_workflow.py +10 -5
- package/eval/scaffold/python/validation/generic_rubric.py +1 -2
- package/eval/scaffold/python/validation/native_wave.py +2154 -0
- package/eval/scaffold/python/validation/native_workflow.py +252 -0
- package/eval/scaffold/python/validation/rubric.py +0 -2
- package/eval/scaffold/shell/completion-point.sh +18 -0
- package/eval/scaffold/shell/decision-point.sh +35 -0
- package/eval/scaffold/shell/docker.sh +150 -9
- package/eval/scaffold/shell/run-claude-loop.sh +57 -27
- package/package.json +26 -5
- package/dist/domains/dashboard/web/assets/channel-kp6Ng2JJ.js +0 -1
- package/dist/domains/dashboard/web/assets/classDiagram-4FO5ZUOK-yBDjgMY_.js +0 -1
- package/dist/domains/dashboard/web/assets/classDiagram-v2-Q7XG4LA2-yBDjgMY_.js +0 -1
- package/dist/domains/dashboard/web/assets/demo-DQyfozbi.js +0 -1
- package/dist/domains/dashboard/web/assets/index-BLAfkNTu.css +0 -1
- package/dist/domains/dashboard/web/assets/index-DtLUOcAW.js +0 -24
- package/dist/domains/dashboard/web/assets/stateDiagram-v2-BHNVJYJU-DGrsmWts.js +0 -1
- package/eval/.env.example +0 -52
- package/eval/langsmith/.env.example +0 -16
package/eval/local/README.md
CHANGED
|
@@ -17,6 +17,24 @@ uv run pytest local/tests/tasks/test_tasks.py -v
|
|
|
17
17
|
uv run pytest local/tests/tasks/test_tasks.py --task=generic-skill-smoke --treatment=CONTROL -v
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
+
运行只安装 Comet Native、自包含且不注入 OpenSpec / Superpowers 的完整流程评估:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
uv run pytest local/tests/tasks/test_tasks.py \
|
|
24
|
+
--task=comet-native-workflow \
|
|
25
|
+
--treatment=COMET_NATIVE_PHASE1 -v
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
将 Native 与 0.4.0 基线按相同的 16 个 canonical Comet 任务、每任务 3 次对齐运行:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
uv run pytest local/tests/tasks/test_tasks.py::test_task_treatment \
|
|
32
|
+
--treatment=COMET_NATIVE_PHASE1 --count=3 -n 4 \
|
|
33
|
+
-k "not comet-native and not generic-skill-smoke and not authoring-skill-smoke and not workflow-route-conformance and not workflow-overlay-contract" -v
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
对齐评估保留每个任务原有的业务 validator,但会把 Classic/OpenSpec 专属流程检查替换为 Native 的 Skill 隔离、配置、终态 change、验证归档和安全 trajectory 检查。调用 `/comet` 或其他外部 Skill、留下活动 change、缺少完整规格/验证证据,都会作为真实 Native workflow failure 进入 pass@k,而不会被当成环境噪声排除。
|
|
37
|
+
|
|
20
38
|
运行生成 Skill 的 authoring smoke 任务:
|
|
21
39
|
|
|
22
40
|
```bash
|
|
@@ -73,6 +91,38 @@ uv run pytest local/tests/tasks/test_tasks.py --report-config report-config.json
|
|
|
73
91
|
uv run python local/scripts/compare_baselines.py --report-config report-config.json
|
|
74
92
|
```
|
|
75
93
|
|
|
94
|
+
Native 与 0.4.0 的 pass@3 来自两个独立 experiment 时,使用严格对齐模式:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
uv run python local/scripts/compare_baselines.py \
|
|
98
|
+
--candidate-experiment local/logs/experiments/experiment_NATIVE \
|
|
99
|
+
--candidate-treatment COMET_NATIVE_PHASE1 \
|
|
100
|
+
--baseline-experiment langsmith/logs/experiments/experiment_040_PASS3 \
|
|
101
|
+
--baseline-treatment COMET_FULL_040_BETA \
|
|
102
|
+
--ks 1,2,3
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
pytest 会在模型运行前把收集到的 `task + treatment + repetition` 写入 experiment 的
|
|
106
|
+
expected case matrix;严格比较按两侧目标 treatment 的矩阵检查 coverage,因此即使某个
|
|
107
|
+
样本在两侧都没有留下 report,也会被列为缺失,而不是从报告并集中无声消失。对 v2
|
|
108
|
+
报告,只有 `task + repetition + case_hash` 全部一致才会配对;`case_hash` 同时绑定任务、
|
|
109
|
+
验证器、runner/controller 源码、不可变 Docker image、Claude 工具版本以及 model /
|
|
110
|
+
interaction 配置。某个 task 缺少 repetition 时,报告会降低该 k 的 coverage 并列出
|
|
111
|
+
缺失项,不会把 pass@3 偷换成 pass@2。
|
|
112
|
+
|
|
113
|
+
历史耗时会从 raw stdout 按当前的累加 parser 重算;缺少 raw duration 的运行只计入
|
|
114
|
+
缺失 coverage,不会和已有耗时混合平均。没有 expected matrix 的旧 experiment 会明确
|
|
115
|
+
标为 observed-report fallback;v1 或缺失 case manifest 的运行最多只能按任务核心 hash
|
|
116
|
+
兼容比较,并明确标注无法证明当时的 runner、image、tool、model 或 interaction 身份,
|
|
117
|
+
不会把比较时一致误写成历史 checkout 与执行环境已被精确证明一致。
|
|
118
|
+
|
|
119
|
+
严格对齐报告还会从 raw stdout 重算成对效率指标,包括模型启动/恢复次数、Agent 轮次、
|
|
120
|
+
工具调用、累计耗时、输入/输出/cache token、总 token、模型成本和上下文压力。主要视图只
|
|
121
|
+
统计两侧都通过的同一 `task + repetition + case_hash`,避免把未完成任务的低消耗误当成
|
|
122
|
+
效率提升。多次恢复产生的顶层 `result` 按调用累加;流式 assistant 事件按 message id 去重。
|
|
123
|
+
上下文指标只有在两侧都保存逐消息 usage 时才可比较,coverage 过低时报告会明确提示,不能
|
|
124
|
+
据此宣传 workflow 间的上下文改进。
|
|
125
|
+
|
|
76
126
|
也可以设置 `COMET_EVAL_REPORT_CONFIG=/path/to/report-config.json`。
|
|
77
127
|
|
|
78
128
|
每次运行的报告都会包含 profile、Skill 来源元数据、run id、产物引用,以及结构化失败归因。归因桶包括 `harness`、`workflow`、`task` 和 `model`。
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# ruff: noqa: E402
|
|
1
2
|
"""Compare comet baseline treatments across the rubric dimensions.
|
|
2
3
|
|
|
3
4
|
Reads experiment reports from ``local/logs/experiments/<id>/reports/*.json`` and
|
|
@@ -31,8 +32,10 @@ if hasattr(sys.stdout, "reconfigure"):
|
|
|
31
32
|
if hasattr(sys.stderr, "reconfigure"):
|
|
32
33
|
sys.stderr.reconfigure(encoding="utf-8")
|
|
33
34
|
|
|
35
|
+
from scaffold.python.aligned_comparison import build_aligned_report
|
|
34
36
|
from scaffold.python.paths import get_logs_dir
|
|
35
37
|
from scaffold.python.report_outputs import (
|
|
38
|
+
localize_eval_markdown,
|
|
36
39
|
load_report_output_config,
|
|
37
40
|
write_report_outputs,
|
|
38
41
|
)
|
|
@@ -59,6 +62,7 @@ RUBRIC_DIMENSION_GUIDE = {
|
|
|
59
62
|
# Treatments we compare. CONTROL is included for context but not used in the
|
|
60
63
|
# pass/fail decision.
|
|
61
64
|
TREATMENTS = ("CONTROL", "COMET_FULL_040_BETA", "COMET_FULL_039")
|
|
65
|
+
KNOWN_TREATMENTS = (*TREATMENTS, "COMET_NATIVE_PHASE1")
|
|
62
66
|
WORKFLOW = "COMET_FULL_040_BETA"
|
|
63
67
|
BASELINE = "COMET_FULL_039"
|
|
64
68
|
|
|
@@ -72,7 +76,7 @@ class ReportPartitions:
|
|
|
72
76
|
|
|
73
77
|
|
|
74
78
|
def _treatment_from_report_name(raw_name: str) -> str:
|
|
75
|
-
for treatment in sorted(
|
|
79
|
+
for treatment in sorted(KNOWN_TREATMENTS, key=len, reverse=True):
|
|
76
80
|
if re.search(rf"(?:^|-){re.escape(treatment)}(?:-r\d+)?$", raw_name):
|
|
77
81
|
return treatment
|
|
78
82
|
return raw_name
|
|
@@ -86,6 +90,35 @@ def _latest_experiment(logs: Path) -> Path | None:
|
|
|
86
90
|
return dirs[-1] if dirs else None
|
|
87
91
|
|
|
88
92
|
|
|
93
|
+
def _resolve_experiment(value: str, logs: Path) -> Path:
|
|
94
|
+
"""Resolve an experiment id or an explicit local/langsmith experiment path."""
|
|
95
|
+
supplied = Path(value).expanduser()
|
|
96
|
+
candidates = [
|
|
97
|
+
supplied,
|
|
98
|
+
EVAL_ROOT / supplied,
|
|
99
|
+
logs / "experiments" / value,
|
|
100
|
+
EVAL_ROOT / "local" / "logs" / "experiments" / value,
|
|
101
|
+
EVAL_ROOT / "langsmith" / "logs" / "experiments" / value,
|
|
102
|
+
]
|
|
103
|
+
matches: list[Path] = []
|
|
104
|
+
seen: set[Path] = set()
|
|
105
|
+
for candidate in candidates:
|
|
106
|
+
try:
|
|
107
|
+
resolved = candidate.resolve()
|
|
108
|
+
except OSError:
|
|
109
|
+
continue
|
|
110
|
+
if resolved in seen or not (resolved / "reports").is_dir():
|
|
111
|
+
continue
|
|
112
|
+
seen.add(resolved)
|
|
113
|
+
matches.append(resolved)
|
|
114
|
+
if not matches:
|
|
115
|
+
raise FileNotFoundError(f"Experiment not found: {value}")
|
|
116
|
+
if len(matches) > 1:
|
|
117
|
+
rendered = ", ".join(str(path) for path in matches)
|
|
118
|
+
raise ValueError(f"Experiment id is ambiguous; pass an explicit path: {rendered}")
|
|
119
|
+
return matches[0]
|
|
120
|
+
|
|
121
|
+
|
|
89
122
|
def _run_passed(report: dict) -> bool:
|
|
90
123
|
"""A run 'passes' when its task-level validator has zero failures.
|
|
91
124
|
|
|
@@ -984,9 +1017,102 @@ def main(argv: list[str] | None = None) -> int:
|
|
|
984
1017
|
help="Output path (defaults to <experiment>/comparison_report.md)",
|
|
985
1018
|
)
|
|
986
1019
|
parser.add_argument("--report-config", default=None, help="JSON/YAML config for report outputs")
|
|
1020
|
+
parser.add_argument(
|
|
1021
|
+
"--language",
|
|
1022
|
+
choices=("en", "zh"),
|
|
1023
|
+
default="en",
|
|
1024
|
+
help="Language used by generated Markdown and HTML report bodies",
|
|
1025
|
+
)
|
|
1026
|
+
parser.add_argument(
|
|
1027
|
+
"--candidate-experiment",
|
|
1028
|
+
default=None,
|
|
1029
|
+
help="Candidate experiment id or path for strict two-experiment alignment",
|
|
1030
|
+
)
|
|
1031
|
+
parser.add_argument(
|
|
1032
|
+
"--baseline-experiment",
|
|
1033
|
+
default=None,
|
|
1034
|
+
help="Baseline experiment id or path for strict two-experiment alignment",
|
|
1035
|
+
)
|
|
1036
|
+
parser.add_argument(
|
|
1037
|
+
"--candidate-treatment",
|
|
1038
|
+
default="COMET_NATIVE_PHASE1",
|
|
1039
|
+
help="Treatment selected from the candidate experiment",
|
|
1040
|
+
)
|
|
1041
|
+
parser.add_argument(
|
|
1042
|
+
"--baseline-treatment",
|
|
1043
|
+
default="COMET_FULL_040_BETA",
|
|
1044
|
+
help="Treatment selected from the baseline experiment",
|
|
1045
|
+
)
|
|
1046
|
+
parser.add_argument(
|
|
1047
|
+
"--ks",
|
|
1048
|
+
default="1,2,3",
|
|
1049
|
+
help="Comma-separated k values for strict task-macro pass metrics",
|
|
1050
|
+
)
|
|
987
1051
|
args = parser.parse_args(argv)
|
|
988
1052
|
|
|
989
1053
|
logs = get_logs_dir()
|
|
1054
|
+
aligned_mode = bool(args.candidate_experiment or args.baseline_experiment)
|
|
1055
|
+
if aligned_mode:
|
|
1056
|
+
if not args.candidate_experiment or not args.baseline_experiment:
|
|
1057
|
+
print(
|
|
1058
|
+
"--candidate-experiment and --baseline-experiment must be provided together",
|
|
1059
|
+
file=sys.stderr,
|
|
1060
|
+
)
|
|
1061
|
+
return 2
|
|
1062
|
+
if args.experiment:
|
|
1063
|
+
print(
|
|
1064
|
+
"--experiment cannot be combined with two-experiment alignment",
|
|
1065
|
+
file=sys.stderr,
|
|
1066
|
+
)
|
|
1067
|
+
return 2
|
|
1068
|
+
try:
|
|
1069
|
+
ks = tuple(int(item.strip()) for item in args.ks.split(",") if item.strip())
|
|
1070
|
+
except ValueError:
|
|
1071
|
+
print("--ks must be a comma-separated list of integers", file=sys.stderr)
|
|
1072
|
+
return 2
|
|
1073
|
+
if not ks or any(k < 1 for k in ks):
|
|
1074
|
+
print("--ks must contain positive integers", file=sys.stderr)
|
|
1075
|
+
return 2
|
|
1076
|
+
try:
|
|
1077
|
+
candidate_dir = _resolve_experiment(args.candidate_experiment, logs)
|
|
1078
|
+
baseline_dir = _resolve_experiment(args.baseline_experiment, logs)
|
|
1079
|
+
except (FileNotFoundError, ValueError) as exc:
|
|
1080
|
+
print(str(exc), file=sys.stderr)
|
|
1081
|
+
return 1
|
|
1082
|
+
try:
|
|
1083
|
+
report = build_aligned_report(
|
|
1084
|
+
candidate_dir,
|
|
1085
|
+
baseline_dir,
|
|
1086
|
+
candidate_treatment=args.candidate_treatment,
|
|
1087
|
+
baseline_treatment=args.baseline_treatment,
|
|
1088
|
+
tasks_dir=EVAL_ROOT / "local" / "tasks",
|
|
1089
|
+
ks=ks,
|
|
1090
|
+
)
|
|
1091
|
+
except ValueError as exc:
|
|
1092
|
+
print(str(exc), file=sys.stderr)
|
|
1093
|
+
return 1
|
|
1094
|
+
html_report = report
|
|
1095
|
+
if args.language == "zh":
|
|
1096
|
+
report = localize_eval_markdown(report)
|
|
1097
|
+
out_path = Path(args.out) if args.out else candidate_dir / "aligned_comparison_report.md"
|
|
1098
|
+
outputs = write_report_outputs(
|
|
1099
|
+
report,
|
|
1100
|
+
out_path,
|
|
1101
|
+
load_report_output_config(args.report_config),
|
|
1102
|
+
title=(
|
|
1103
|
+
"Comet 对齐实验对比报告"
|
|
1104
|
+
if args.language == "zh"
|
|
1105
|
+
else "Comet Aligned Experiment Comparison Report"
|
|
1106
|
+
),
|
|
1107
|
+
html_markdown=html_report,
|
|
1108
|
+
)
|
|
1109
|
+
print(report)
|
|
1110
|
+
if outputs:
|
|
1111
|
+
print("\nWrote: " + ", ".join(str(path) for path in outputs.values()))
|
|
1112
|
+
else:
|
|
1113
|
+
print("\nReport outputs disabled by report config")
|
|
1114
|
+
return 0
|
|
1115
|
+
|
|
990
1116
|
if args.experiment:
|
|
991
1117
|
experiment_dir = logs / "experiments" / args.experiment
|
|
992
1118
|
if not experiment_dir.exists():
|
|
@@ -33,9 +33,9 @@ EVAL_ROOT = Path(__file__).resolve().parents[2]
|
|
|
33
33
|
if str(EVAL_ROOT) not in sys.path:
|
|
34
34
|
sys.path.insert(0, str(EVAL_ROOT))
|
|
35
35
|
|
|
36
|
-
from scaffold.python.paths import get_logs_dir
|
|
37
|
-
from scaffold.python.validation.rubric import RUBRIC_DIMENSIONS
|
|
38
|
-
from local.scripts.compare_baselines import (
|
|
36
|
+
from scaffold.python.paths import get_logs_dir # noqa: E402
|
|
37
|
+
from scaffold.python.validation.rubric import RUBRIC_DIMENSIONS # noqa: E402
|
|
38
|
+
from local.scripts.compare_baselines import ( # noqa: E402
|
|
39
39
|
BASELINE,
|
|
40
40
|
WORKFLOW,
|
|
41
41
|
_aggregate,
|
|
@@ -85,7 +85,6 @@ def _run_eval(count: int, treatments: str) -> str:
|
|
|
85
85
|
f"--count={count}",
|
|
86
86
|
"-v",
|
|
87
87
|
]
|
|
88
|
-
env_runner = "BENCH_LOOP_MAX_TURNS"
|
|
89
88
|
print(f"[regression] running eval: {' '.join(cmd)}", file=sys.stderr)
|
|
90
89
|
result = subprocess.run(cmd, capture_output=False)
|
|
91
90
|
if result.returncode != 0:
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
FROM python:3.12-slim
|
|
2
|
+
|
|
3
|
+
WORKDIR /workspace
|
|
4
|
+
|
|
5
|
+
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
6
|
+
git nodejs npm ca-certificates && \
|
|
7
|
+
rm -rf /var/lib/apt/lists/*
|
|
8
|
+
|
|
9
|
+
RUN npm config set registry https://registry.npmmirror.com && \
|
|
10
|
+
npm install -g @anthropic-ai/claude-code@latest && \
|
|
11
|
+
npm config delete registry
|
|
12
|
+
|
|
13
|
+
RUN pip install --no-cache-dir pyyaml pytest
|
|
14
|
+
|
|
15
|
+
COPY wordcount.py /workspace/wordcount.py
|
|
16
|
+
COPY test_wordcount.py /workspace/test_wordcount.py
|
|
17
|
+
|
|
18
|
+
RUN useradd --create-home --shell /bin/bash agent && \
|
|
19
|
+
chown -R agent:agent /workspace
|
|
20
|
+
USER agent
|
|
21
|
+
ENV HOME=/home/agent
|
|
22
|
+
ENV PYTHONPATH=/workspace
|
|
23
|
+
RUN git config --global user.email "agent@eval.local" && \
|
|
24
|
+
git config --global user.name "Comet Native Clarification Eval Agent" && \
|
|
25
|
+
git config --global init.defaultBranch master
|
|
26
|
+
|
|
27
|
+
CMD ["bash"]
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"""Baseline tests for the word-count CLI."""
|
|
2
|
+
|
|
3
|
+
import subprocess
|
|
4
|
+
import sys
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def run_cli(*args: str, input_text: str) -> str:
|
|
8
|
+
result = subprocess.run(
|
|
9
|
+
[sys.executable, "wordcount.py", *args],
|
|
10
|
+
input=input_text,
|
|
11
|
+
capture_output=True,
|
|
12
|
+
text=True,
|
|
13
|
+
check=True,
|
|
14
|
+
)
|
|
15
|
+
return result.stdout
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def test_count_words():
|
|
19
|
+
assert "Words: 3" in run_cli(input_text="hello world foo")
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def test_count_lines():
|
|
23
|
+
output = run_cli("--lines", input_text="hello\nworld\nfoo")
|
|
24
|
+
assert "Words: 3" in output
|
|
25
|
+
assert "Lines: 3" in output
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"""Simple word count CLI tool."""
|
|
2
|
+
|
|
3
|
+
import argparse
|
|
4
|
+
import sys
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def count_words(text: str) -> int:
|
|
8
|
+
"""Count words in text."""
|
|
9
|
+
return len(text.split())
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def count_lines(text: str) -> int:
|
|
13
|
+
"""Count lines in text."""
|
|
14
|
+
return len(text.splitlines())
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def main():
|
|
18
|
+
parser = argparse.ArgumentParser(description="Count words and lines in text")
|
|
19
|
+
parser.add_argument("file", nargs="?", help="Input file (reads stdin if omitted)")
|
|
20
|
+
parser.add_argument("--lines", action="store_true", help="Also count lines")
|
|
21
|
+
parser.add_argument("--words", action="store_true", default=True, help="Count words (default)")
|
|
22
|
+
args = parser.parse_args()
|
|
23
|
+
|
|
24
|
+
if args.file:
|
|
25
|
+
with open(args.file) as source:
|
|
26
|
+
text = source.read()
|
|
27
|
+
else:
|
|
28
|
+
text = sys.stdin.read()
|
|
29
|
+
|
|
30
|
+
print(f"Words: {count_words(text)}")
|
|
31
|
+
if args.lines:
|
|
32
|
+
print(f"Lines: {count_lines(text)}")
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
if __name__ == "__main__":
|
|
36
|
+
main()
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
You are working on a Python project named `wordcount-cli`.
|
|
2
|
+
|
|
3
|
+
Begin by invoking the `/comet-native` Skill. Initialize Native under `docs/comet/`, create a change, and add a `--sentences` CLI flag that prints `Sentences: N` while preserving the existing word and line counters.
|
|
4
|
+
|
|
5
|
+
Sentence terminators include `.`, `!`, and `?`. Product requirements intentionally do not specify how abbreviations such as `e.g.` and `Dr.` affect sentence boundaries. Do not guess how abbreviations should behave. This decision changes user-visible counts, so ask the user before finalizing Shape. Ask only the single highest-value question, with a recommendation and practical impact. Do not begin implementation before the user answers.
|
|
6
|
+
|
|
7
|
+
After the answer, record it in the brief, use Native's explicit confirmation path, write a complete target specification, implement focused tests including abbreviations, verify, and archive. Use no other workflow Skill.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
[metadata]
|
|
2
|
+
name = "comet-native-clarification"
|
|
3
|
+
description = "Test the Native one-question clarification boundary and confirmed resume"
|
|
4
|
+
difficulty = "hard"
|
|
5
|
+
category = "comet-native"
|
|
6
|
+
tags = ["comet-native", "clarification", "confirmation", "multi-turn"]
|
|
7
|
+
default_treatments = ["COMET_NATIVE_PHASE1"]
|
|
8
|
+
|
|
9
|
+
[template]
|
|
10
|
+
required = []
|
|
11
|
+
|
|
12
|
+
[environment]
|
|
13
|
+
description = "Python word-count workspace with only the self-contained Comet Native Skill available."
|
|
14
|
+
dockerfile = "environment/Dockerfile"
|
|
15
|
+
timeout_sec = 900
|
|
16
|
+
|
|
17
|
+
[validation]
|
|
18
|
+
test_scripts = "test_native_clarification.py"
|
|
19
|
+
target_artifacts = ["docs/comet/archive", "docs/comet/specs"]
|
|
20
|
+
timeout = 120
|
|
21
|
+
|
|
22
|
+
[evaluation]
|
|
23
|
+
profile = "generic"
|
|
24
|
+
required_skills = ["comet-native"]
|
|
25
|
+
expected_artifacts = [".comet/config.yaml", "docs/comet/archive", "docs/comet/specs"]
|
|
26
|
+
require_skill_invocation = true
|
|
27
|
+
rubric_criteria = [
|
|
28
|
+
"Before implementation, asks exactly one highest-value question about abbreviation behavior",
|
|
29
|
+
"Does not ask the user for repository facts or implementation-method choices",
|
|
30
|
+
"Records the supplied abbreviation decision in the brief and leaves Shape with explicit confirmation",
|
|
31
|
+
"Completes Build, Verify, and Archive using only the Comet Native Skill and bundled runtime",
|
|
32
|
+
]
|
|
33
|
+
|
|
34
|
+
[interaction]
|
|
35
|
+
mode = "auto_user"
|
|
36
|
+
max_turns = 4
|
|
37
|
+
simulator_prompt = """You are the developer user in a Comet Native eval. The assistant should ask one highest-value question about how abbreviations affect sentence boundaries. Answer that question in one sentence: Abbreviations such as e.g. and Dr. do not end a sentence; use a small explicit abbreviation list. If the assistant asks multiple questions, answer only the abbreviation question and remind it to handle one decision at a time. Do not write code or choose implementation tooling."""
|
|
38
|
+
decision_patterns = ["abbreviation", "e.g.", "Dr.", "sentence boundary"]
|
|
39
|
+
decision_reply = "Abbreviations such as e.g. and Dr. do not end a sentence; use a small explicit abbreviation list."
|
|
40
|
+
continue_prompt = "Please verify the Native status from disk and continue until the same change is actually archived with its canonical specification."
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
"""Validate Native clarification, confirmation, implementation, and archive artifacts."""
|
|
2
|
+
|
|
3
|
+
import json
|
|
4
|
+
import os
|
|
5
|
+
import subprocess
|
|
6
|
+
import sys
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
|
|
9
|
+
import yaml
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
WORKSPACE = Path("/workspace")
|
|
13
|
+
RESULTS_FILE = os.environ.get("BENCH_TEST_RESULTS", "_test_results.json")
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def passed(name: str):
|
|
17
|
+
return {"check": name, "status": "passed"}
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def failed(name: str, reason: str):
|
|
21
|
+
return {"check": name, "status": "failed", "reason": reason}
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def archive_directories():
|
|
25
|
+
root = WORKSPACE / "docs" / "comet" / "archive"
|
|
26
|
+
return sorted(path for path in root.glob("*-*") if path.is_dir())
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def archive_directory():
|
|
30
|
+
candidates = archive_directories()
|
|
31
|
+
return candidates[-1] if candidates else None
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def canonical_spec_files():
|
|
35
|
+
root = WORKSPACE / "docs" / "comet" / "specs"
|
|
36
|
+
return sorted(root.glob("*/spec.md"))
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def active_change_directories():
|
|
40
|
+
root = WORKSPACE / "docs" / "comet" / "changes"
|
|
41
|
+
return sorted(path for path in root.glob("*") if path.is_dir())
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def read_interaction():
|
|
45
|
+
context = WORKSPACE / "_test_context.json"
|
|
46
|
+
if not context.is_file():
|
|
47
|
+
return {}
|
|
48
|
+
return json.loads(context.read_text(encoding="utf-8")).get("interaction") or {}
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def check_behavior():
|
|
52
|
+
try:
|
|
53
|
+
subprocess.run(
|
|
54
|
+
[sys.executable, "-m", "pytest", "-q"],
|
|
55
|
+
cwd=WORKSPACE,
|
|
56
|
+
capture_output=True,
|
|
57
|
+
text=True,
|
|
58
|
+
timeout=30,
|
|
59
|
+
check=True,
|
|
60
|
+
)
|
|
61
|
+
result = subprocess.run(
|
|
62
|
+
[sys.executable, "wordcount.py", "--sentences"],
|
|
63
|
+
cwd=WORKSPACE,
|
|
64
|
+
input="Use e.g. examples. Ask Dr. Smith!",
|
|
65
|
+
capture_output=True,
|
|
66
|
+
text=True,
|
|
67
|
+
timeout=10,
|
|
68
|
+
check=True,
|
|
69
|
+
)
|
|
70
|
+
except Exception as error:
|
|
71
|
+
return failed("clarified_behavior", str(error))
|
|
72
|
+
if "Sentences: 2" not in result.stdout:
|
|
73
|
+
return failed("clarified_behavior", f"Expected Sentences: 2, got {result.stdout!r}")
|
|
74
|
+
return passed("clarified_behavior")
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def check_confirmed_archive():
|
|
78
|
+
active = active_change_directories()
|
|
79
|
+
if active:
|
|
80
|
+
return failed(
|
|
81
|
+
"confirmed_archive",
|
|
82
|
+
f"Expected no active change after archive, found {len(active)}",
|
|
83
|
+
)
|
|
84
|
+
archives = archive_directories()
|
|
85
|
+
if len(archives) != 1:
|
|
86
|
+
return failed(
|
|
87
|
+
"confirmed_archive",
|
|
88
|
+
f"Expected exactly one Native archive for the clarified change, found {len(archives)}",
|
|
89
|
+
)
|
|
90
|
+
archived = archives[0]
|
|
91
|
+
state_file = archived / "comet-state.yaml"
|
|
92
|
+
if not state_file.is_file():
|
|
93
|
+
return failed("confirmed_archive", "Archived comet-state.yaml is missing")
|
|
94
|
+
state = yaml.safe_load(state_file.read_text(encoding="utf-8")) or {}
|
|
95
|
+
if state.get("phase") != "archive" or state.get("archived") is not True:
|
|
96
|
+
return failed("confirmed_archive", "Archived state is not terminal")
|
|
97
|
+
if state.get("approval") != "confirmed":
|
|
98
|
+
return failed("confirmed_archive", "Shape did not record explicit confirmation")
|
|
99
|
+
if state.get("verification_result") != "pass":
|
|
100
|
+
return failed("confirmed_archive", "Verify did not record a passing result")
|
|
101
|
+
brief_file = archived / "brief.md"
|
|
102
|
+
if not brief_file.is_file():
|
|
103
|
+
return failed("confirmed_archive", "Archived brief is missing")
|
|
104
|
+
brief = brief_file.read_text(encoding="utf-8").lower()
|
|
105
|
+
if not all(marker in brief for marker in ("abbreviation", "e.g.", "dr.")):
|
|
106
|
+
return failed("confirmed_archive", "The confirmed abbreviation decision is missing")
|
|
107
|
+
|
|
108
|
+
spec_changes = state.get("spec_changes") or []
|
|
109
|
+
if len(spec_changes) != 1 or not isinstance(spec_changes[0], dict):
|
|
110
|
+
return failed("confirmed_archive", "Expected exactly one linked capability change")
|
|
111
|
+
spec_change = spec_changes[0]
|
|
112
|
+
capability = spec_change.get("capability")
|
|
113
|
+
expected_source = f"specs/{capability}/spec.md"
|
|
114
|
+
if not capability or spec_change.get("source") != expected_source:
|
|
115
|
+
return failed("confirmed_archive", "Archived spec change is not linked to its capability")
|
|
116
|
+
|
|
117
|
+
canonical_specs = canonical_spec_files()
|
|
118
|
+
canonical_path = WORKSPACE / "docs" / "comet" / "specs" / capability / "spec.md"
|
|
119
|
+
if canonical_specs != [canonical_path]:
|
|
120
|
+
return failed(
|
|
121
|
+
"confirmed_archive",
|
|
122
|
+
"Canonical specification does not match the archived capability",
|
|
123
|
+
)
|
|
124
|
+
archived_spec = archived / expected_source
|
|
125
|
+
if not archived_spec.is_file():
|
|
126
|
+
return failed("confirmed_archive", "Archived target specification is missing")
|
|
127
|
+
canonical_source = canonical_path.read_text(encoding="utf-8")
|
|
128
|
+
if canonical_source != archived_spec.read_text(encoding="utf-8"):
|
|
129
|
+
return failed("confirmed_archive", "Archived and canonical specifications differ")
|
|
130
|
+
canonical = canonical_source.lower()
|
|
131
|
+
if "--sentences" not in canonical or not any(
|
|
132
|
+
marker in canonical for marker in ("abbreviation", "e.g.", "dr.")
|
|
133
|
+
):
|
|
134
|
+
return failed(
|
|
135
|
+
"confirmed_archive",
|
|
136
|
+
"The canonical target specification does not cover sentence counting and abbreviations",
|
|
137
|
+
)
|
|
138
|
+
|
|
139
|
+
report_name = state.get("verification_report")
|
|
140
|
+
report_file = archived / str(report_name or "")
|
|
141
|
+
if report_name != "verification.md" or not report_file.is_file():
|
|
142
|
+
return failed("confirmed_archive", "Verification evidence is missing")
|
|
143
|
+
report = report_file.read_text(encoding="utf-8").lower()
|
|
144
|
+
if "pass" not in report or "pytest" not in report:
|
|
145
|
+
return failed("confirmed_archive", "Verification evidence does not record passing tests")
|
|
146
|
+
|
|
147
|
+
trajectory_file = archived / "runtime" / "trajectory.jsonl"
|
|
148
|
+
if not trajectory_file.is_file():
|
|
149
|
+
return failed("confirmed_archive", "Native trajectory is missing")
|
|
150
|
+
transitions = []
|
|
151
|
+
for line in trajectory_file.read_text(encoding="utf-8").splitlines():
|
|
152
|
+
event = json.loads(line)
|
|
153
|
+
if event.get("type") == "state_transitioned":
|
|
154
|
+
data = event.get("data") or {}
|
|
155
|
+
transitions.append((data.get("previousPhase"), data.get("nextPhase")))
|
|
156
|
+
expected_transitions = [
|
|
157
|
+
("shape", "build"),
|
|
158
|
+
("build", "verify"),
|
|
159
|
+
("verify", "archive"),
|
|
160
|
+
("archive", None),
|
|
161
|
+
]
|
|
162
|
+
if transitions != expected_transitions:
|
|
163
|
+
return failed("confirmed_archive", "Native trajectory does not cover every phase exactly once")
|
|
164
|
+
|
|
165
|
+
interaction = read_interaction()
|
|
166
|
+
if interaction.get("mode") != "auto_user":
|
|
167
|
+
return failed("confirmed_archive", "Clarification interaction metadata is missing")
|
|
168
|
+
if interaction.get("decision_points") != 1 or interaction.get("deterministic_replies") != 1:
|
|
169
|
+
return failed("confirmed_archive", "Expected exactly one deterministic clarification reply")
|
|
170
|
+
turns = interaction.get("actual_turns")
|
|
171
|
+
maximum = interaction.get("max_turns")
|
|
172
|
+
if not isinstance(turns, int) or not isinstance(maximum, int) or not (2 <= turns <= maximum):
|
|
173
|
+
return failed("confirmed_archive", "Clarification driver turn count is invalid")
|
|
174
|
+
return passed("confirmed_archive")
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
def main():
|
|
178
|
+
results = [check_behavior(), check_confirmed_archive()]
|
|
179
|
+
output = {
|
|
180
|
+
"passed": [result["check"] for result in results if result["status"] == "passed"],
|
|
181
|
+
"failed": [
|
|
182
|
+
f'{result["check"]}: {result.get("reason", "")}'
|
|
183
|
+
for result in results
|
|
184
|
+
if result["status"] == "failed"
|
|
185
|
+
],
|
|
186
|
+
}
|
|
187
|
+
(WORKSPACE / RESULTS_FILE).write_text(json.dumps(output, indent=2), encoding="utf-8")
|
|
188
|
+
print(json.dumps(output))
|
|
189
|
+
return 0 if not output["failed"] else 1
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
if __name__ == "__main__":
|
|
193
|
+
raise SystemExit(main())
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
FROM python:3.12-slim
|
|
2
|
+
|
|
3
|
+
WORKDIR /workspace
|
|
4
|
+
|
|
5
|
+
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
6
|
+
git nodejs npm ca-certificates && \
|
|
7
|
+
rm -rf /var/lib/apt/lists/*
|
|
8
|
+
|
|
9
|
+
RUN npm config set registry https://registry.npmmirror.com && \
|
|
10
|
+
npm install -g @anthropic-ai/claude-code@latest && \
|
|
11
|
+
npm config delete registry
|
|
12
|
+
|
|
13
|
+
RUN pip install --no-cache-dir pyyaml pytest
|
|
14
|
+
|
|
15
|
+
COPY wordcount.py /workspace/wordcount.py
|
|
16
|
+
COPY test_wordcount.py /workspace/test_wordcount.py
|
|
17
|
+
|
|
18
|
+
RUN useradd --create-home --shell /bin/bash agent && \
|
|
19
|
+
chown -R agent:agent /workspace
|
|
20
|
+
USER agent
|
|
21
|
+
ENV HOME=/home/agent
|
|
22
|
+
ENV PYTHONPATH=/workspace
|
|
23
|
+
RUN git config --global user.email "agent@eval.local" && \
|
|
24
|
+
git config --global user.name "Comet Native Clarification Modes Eval Agent" && \
|
|
25
|
+
git config --global init.defaultBranch master
|
|
26
|
+
|
|
27
|
+
CMD ["bash"]
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"""Baseline tests for the word-count CLI."""
|
|
2
|
+
|
|
3
|
+
import subprocess
|
|
4
|
+
import sys
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def run_cli(*args: str, input_text: str) -> str:
|
|
8
|
+
result = subprocess.run(
|
|
9
|
+
[sys.executable, "wordcount.py", *args],
|
|
10
|
+
input=input_text,
|
|
11
|
+
capture_output=True,
|
|
12
|
+
text=True,
|
|
13
|
+
check=True,
|
|
14
|
+
)
|
|
15
|
+
return result.stdout
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def test_count_words():
|
|
19
|
+
assert "Words: 3" in run_cli(input_text="hello world foo")
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def test_count_lines():
|
|
23
|
+
output = run_cli("--lines", input_text="hello\nworld\nfoo")
|
|
24
|
+
assert "Words: 3" in output
|
|
25
|
+
assert "Lines: 3" in output
|