@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.
Files changed (699) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +209 -74
  3. package/assets/manifest.json +14 -5
  4. package/assets/skills/comet/SKILL.md +17 -282
  5. package/assets/skills/comet/reference/comet-yaml-fields.md +1 -1
  6. package/assets/skills/comet/reference/context-recovery.md +3 -3
  7. package/assets/skills/comet/reference/intent-frame.md +2 -2
  8. package/assets/skills/comet/reference/scripts.md +2 -2
  9. package/assets/skills/comet/rules/comet-workflow-guard.en.md +32 -0
  10. package/assets/skills/comet/rules/comet-workflow-guard.md +32 -0
  11. package/assets/skills/comet/scripts/comet-entry-runtime.mjs +7855 -0
  12. package/assets/skills/comet/scripts/comet-hook-router.mjs +10336 -0
  13. package/assets/skills/comet/scripts/comet-runtime.mjs +615 -501
  14. package/assets/skills/comet-any/SKILL.md +4 -4
  15. package/assets/skills/comet-any/reference/authoring-subagents.md +1 -1
  16. package/assets/skills/comet-any/reference/bundle-authoring.md +1 -1
  17. package/assets/skills/comet-any/reference/subagents/reference-author.md +1 -1
  18. package/assets/skills/comet-any/reference/subagents/script-author.md +1 -1
  19. package/assets/skills/comet-any/reference/subagents/skill-core-author.md +1 -1
  20. package/assets/skills/comet-any/reference/subagents/skill-reviewer.md +2 -2
  21. package/assets/skills/comet-any/reference/subagents/workflow-entry-author.md +3 -3
  22. package/assets/skills/comet-archive/SKILL.md +1 -2
  23. package/assets/skills/comet-build/SKILL.md +1 -1
  24. package/assets/skills/comet-classic/SKILL.md +293 -0
  25. package/assets/skills/comet-design/SKILL.md +1 -1
  26. package/assets/skills/comet-hotfix/SKILL.md +4 -4
  27. package/assets/skills/comet-native/SKILL.md +257 -0
  28. package/assets/skills/comet-native/reference/artifacts.md +204 -0
  29. package/assets/skills/comet-native/reference/commands.md +118 -0
  30. package/assets/skills/comet-native/reference/recovery.md +143 -0
  31. package/assets/skills/comet-native/scripts/comet-native-hook-guard.mjs +4 -0
  32. package/assets/skills/comet-native/scripts/comet-native-runtime.mjs +28969 -0
  33. package/assets/skills/comet-open/SKILL.md +4 -4
  34. package/assets/skills/comet-tweak/SKILL.md +7 -7
  35. package/assets/skills-zh/comet/SKILL.md +17 -270
  36. package/assets/skills-zh/comet/reference/comet-yaml-fields.md +1 -1
  37. package/assets/skills-zh/comet/reference/context-recovery.md +3 -3
  38. package/assets/skills-zh/comet/reference/intent-frame.md +2 -2
  39. package/assets/skills-zh/comet/reference/scripts.md +2 -2
  40. package/assets/skills-zh/comet-any/SKILL.md +4 -4
  41. package/assets/skills-zh/comet-any/reference/authoring-subagents.md +1 -1
  42. package/assets/skills-zh/comet-any/reference/bundle-authoring.md +1 -1
  43. package/assets/skills-zh/comet-any/reference/subagents/reference-author.md +1 -1
  44. package/assets/skills-zh/comet-any/reference/subagents/script-author.md +1 -1
  45. package/assets/skills-zh/comet-any/reference/subagents/skill-core-author.md +1 -1
  46. package/assets/skills-zh/comet-any/reference/subagents/skill-reviewer.md +2 -2
  47. package/assets/skills-zh/comet-any/reference/subagents/workflow-entry-author.md +3 -3
  48. package/assets/skills-zh/comet-archive/SKILL.md +1 -2
  49. package/assets/skills-zh/comet-build/SKILL.md +1 -1
  50. package/assets/skills-zh/comet-classic/SKILL.md +281 -0
  51. package/assets/skills-zh/comet-design/SKILL.md +1 -1
  52. package/assets/skills-zh/comet-hotfix/SKILL.md +4 -4
  53. package/assets/skills-zh/comet-native/SKILL.md +257 -0
  54. package/assets/skills-zh/comet-native/reference/artifacts.md +206 -0
  55. package/assets/skills-zh/comet-native/reference/commands.md +118 -0
  56. package/assets/skills-zh/comet-native/reference/recovery.md +143 -0
  57. package/assets/skills-zh/comet-open/SKILL.md +4 -4
  58. package/assets/skills-zh/comet-tweak/SKILL.md +7 -7
  59. package/dist/app/cli/index.js +59 -13
  60. package/dist/app/cli/index.js.map +1 -1
  61. package/dist/app/commands/command-result.d.ts +6 -0
  62. package/dist/app/commands/command-result.d.ts.map +1 -0
  63. package/dist/app/commands/command-result.js +4 -0
  64. package/dist/app/commands/command-result.js.map +1 -0
  65. package/dist/app/commands/doctor.d.ts +1 -0
  66. package/dist/app/commands/doctor.d.ts.map +1 -1
  67. package/dist/app/commands/doctor.js +201 -26
  68. package/dist/app/commands/doctor.js.map +1 -1
  69. package/dist/app/commands/eval.d.ts +3 -1
  70. package/dist/app/commands/eval.d.ts.map +1 -1
  71. package/dist/app/commands/eval.js +17 -7
  72. package/dist/app/commands/eval.js.map +1 -1
  73. package/dist/app/commands/i18n.d.ts +1 -1
  74. package/dist/app/commands/i18n.d.ts.map +1 -1
  75. package/dist/app/commands/i18n.js +6 -2
  76. package/dist/app/commands/i18n.js.map +1 -1
  77. package/dist/app/commands/init.d.ts +10 -2
  78. package/dist/app/commands/init.d.ts.map +1 -1
  79. package/dist/app/commands/init.js +331 -50
  80. package/dist/app/commands/init.js.map +1 -1
  81. package/dist/app/commands/native.d.ts +2 -0
  82. package/dist/app/commands/native.d.ts.map +1 -0
  83. package/dist/app/commands/native.js +10 -0
  84. package/dist/app/commands/native.js.map +1 -0
  85. package/dist/app/commands/project-scope-selection.d.ts.map +1 -1
  86. package/dist/app/commands/project-scope-selection.js +2 -0
  87. package/dist/app/commands/project-scope-selection.js.map +1 -1
  88. package/dist/app/commands/resume-probe.d.ts.map +1 -1
  89. package/dist/app/commands/resume-probe.js +8 -2
  90. package/dist/app/commands/resume-probe.js.map +1 -1
  91. package/dist/app/commands/status.d.ts +0 -32
  92. package/dist/app/commands/status.d.ts.map +1 -1
  93. package/dist/app/commands/status.js +44 -177
  94. package/dist/app/commands/status.js.map +1 -1
  95. package/dist/app/commands/update.d.ts +20 -4
  96. package/dist/app/commands/update.d.ts.map +1 -1
  97. package/dist/app/commands/update.js +698 -90
  98. package/dist/app/commands/update.js.map +1 -1
  99. package/dist/app/commands/workflow.d.ts +6 -0
  100. package/dist/app/commands/workflow.d.ts.map +1 -0
  101. package/dist/app/commands/workflow.js +11 -0
  102. package/dist/app/commands/workflow.js.map +1 -0
  103. package/dist/config/repository-layout.json +21 -1
  104. package/dist/domains/bundle/bundle-platform.d.ts.map +1 -1
  105. package/dist/domains/bundle/bundle-platform.js +1 -1
  106. package/dist/domains/bundle/bundle-platform.js.map +1 -1
  107. package/dist/domains/comet-classic/classic-archive.d.ts.map +1 -1
  108. package/dist/domains/comet-classic/classic-archive.js +3 -0
  109. package/dist/domains/comet-classic/classic-archive.js.map +1 -1
  110. package/dist/domains/comet-classic/classic-current-change.d.ts +3 -5
  111. package/dist/domains/comet-classic/classic-current-change.d.ts.map +1 -1
  112. package/dist/domains/comet-classic/classic-current-change.js +31 -57
  113. package/dist/domains/comet-classic/classic-current-change.js.map +1 -1
  114. package/dist/domains/comet-classic/classic-guard.d.ts.map +1 -1
  115. package/dist/domains/comet-classic/classic-guard.js +3 -2
  116. package/dist/domains/comet-classic/classic-guard.js.map +1 -1
  117. package/dist/domains/comet-classic/classic-hook-guard.d.ts +9 -0
  118. package/dist/domains/comet-classic/classic-hook-guard.d.ts.map +1 -1
  119. package/dist/domains/comet-classic/classic-hook-guard.js +84 -11
  120. package/dist/domains/comet-classic/classic-hook-guard.js.map +1 -1
  121. package/dist/domains/comet-classic/classic-project-config.d.ts.map +1 -1
  122. package/dist/domains/comet-classic/classic-project-config.js +12 -8
  123. package/dist/domains/comet-classic/classic-project-config.js.map +1 -1
  124. package/dist/domains/comet-classic/classic-runtime-run.d.ts.map +1 -1
  125. package/dist/domains/comet-classic/classic-runtime-run.js +9 -1
  126. package/dist/domains/comet-classic/classic-runtime-run.js.map +1 -1
  127. package/dist/domains/comet-entry/current-selection-repair.d.ts +17 -0
  128. package/dist/domains/comet-entry/current-selection-repair.d.ts.map +1 -0
  129. package/dist/domains/comet-entry/current-selection-repair.js +19 -0
  130. package/dist/domains/comet-entry/current-selection-repair.js.map +1 -0
  131. package/dist/domains/comet-entry/current-selection.d.ts +28 -0
  132. package/dist/domains/comet-entry/current-selection.d.ts.map +1 -0
  133. package/dist/domains/comet-entry/current-selection.js +116 -0
  134. package/dist/domains/comet-entry/current-selection.js.map +1 -0
  135. package/dist/domains/comet-entry/entry-runtime-entry.d.ts +2 -0
  136. package/dist/domains/comet-entry/entry-runtime-entry.d.ts.map +1 -0
  137. package/dist/domains/comet-entry/entry-runtime-entry.js +3 -0
  138. package/dist/domains/comet-entry/entry-runtime-entry.js.map +1 -0
  139. package/dist/domains/comet-entry/entry-runtime.d.ts +7 -0
  140. package/dist/domains/comet-entry/entry-runtime.d.ts.map +1 -0
  141. package/dist/domains/comet-entry/entry-runtime.js +55 -0
  142. package/dist/domains/comet-entry/entry-runtime.js.map +1 -0
  143. package/dist/domains/comet-entry/hook-adapter.d.ts +6 -0
  144. package/dist/domains/comet-entry/hook-adapter.d.ts.map +1 -0
  145. package/dist/domains/comet-entry/hook-adapter.js +202 -0
  146. package/dist/domains/comet-entry/hook-adapter.js.map +1 -0
  147. package/dist/domains/comet-entry/hook-router-entry.d.ts +8 -0
  148. package/dist/domains/comet-entry/hook-router-entry.d.ts.map +1 -0
  149. package/dist/domains/comet-entry/hook-router-entry.js +92 -0
  150. package/dist/domains/comet-entry/hook-router-entry.js.map +1 -0
  151. package/dist/domains/comet-entry/hook-router.d.ts +32 -0
  152. package/dist/domains/comet-entry/hook-router.d.ts.map +1 -0
  153. package/dist/domains/comet-entry/hook-router.js +133 -0
  154. package/dist/domains/comet-entry/hook-router.js.map +1 -0
  155. package/dist/domains/comet-entry/hook-types.d.ts +20 -0
  156. package/dist/domains/comet-entry/hook-types.d.ts.map +1 -0
  157. package/dist/domains/comet-entry/hook-types.js +2 -0
  158. package/dist/domains/comet-entry/hook-types.js.map +1 -0
  159. package/dist/domains/comet-entry/init-workflow.d.ts +16 -0
  160. package/dist/domains/comet-entry/init-workflow.d.ts.map +1 -0
  161. package/dist/domains/comet-entry/init-workflow.js +103 -0
  162. package/dist/domains/comet-entry/init-workflow.js.map +1 -0
  163. package/dist/domains/comet-entry/project-status.d.ts +3 -0
  164. package/dist/domains/comet-entry/project-status.d.ts.map +1 -0
  165. package/dist/domains/comet-entry/project-status.js +222 -0
  166. package/dist/domains/comet-entry/project-status.js.map +1 -0
  167. package/dist/domains/comet-entry/resolve-entry.d.ts +3 -0
  168. package/dist/domains/comet-entry/resolve-entry.d.ts.map +1 -0
  169. package/dist/domains/comet-entry/resolve-entry.js +22 -0
  170. package/dist/domains/comet-entry/resolve-entry.js.map +1 -0
  171. package/dist/domains/comet-entry/resume-probe.d.ts +34 -0
  172. package/dist/domains/comet-entry/resume-probe.d.ts.map +1 -0
  173. package/dist/domains/comet-entry/resume-probe.js +458 -0
  174. package/dist/domains/comet-entry/resume-probe.js.map +1 -0
  175. package/dist/domains/comet-entry/types.d.ts +59 -0
  176. package/dist/domains/comet-entry/types.d.ts.map +1 -0
  177. package/dist/domains/comet-entry/types.js +2 -0
  178. package/dist/domains/comet-entry/types.js.map +1 -0
  179. package/dist/domains/comet-entry/workflow-resolution.d.ts +8 -0
  180. package/dist/domains/comet-entry/workflow-resolution.d.ts.map +1 -0
  181. package/dist/domains/comet-entry/workflow-resolution.js +16 -0
  182. package/dist/domains/comet-entry/workflow-resolution.js.map +1 -0
  183. package/dist/domains/comet-native/index.d.ts +35 -0
  184. package/dist/domains/comet-native/index.d.ts.map +1 -0
  185. package/dist/domains/comet-native/index.js +35 -0
  186. package/dist/domains/comet-native/index.js.map +1 -0
  187. package/dist/domains/comet-native/native-acceptance.d.ts +42 -0
  188. package/dist/domains/comet-native/native-acceptance.d.ts.map +1 -0
  189. package/dist/domains/comet-native/native-acceptance.js +503 -0
  190. package/dist/domains/comet-native/native-acceptance.js.map +1 -0
  191. package/dist/domains/comet-native/native-archive-content.d.ts +26 -0
  192. package/dist/domains/comet-native/native-archive-content.d.ts.map +1 -0
  193. package/dist/domains/comet-native/native-archive-content.js +159 -0
  194. package/dist/domains/comet-native/native-archive-content.js.map +1 -0
  195. package/dist/domains/comet-native/native-archive-inspection.d.ts +9 -0
  196. package/dist/domains/comet-native/native-archive-inspection.d.ts.map +1 -0
  197. package/dist/domains/comet-native/native-archive-inspection.js +94 -0
  198. package/dist/domains/comet-native/native-archive-inspection.js.map +1 -0
  199. package/dist/domains/comet-native/native-archive-preflight.d.ts +52 -0
  200. package/dist/domains/comet-native/native-archive-preflight.d.ts.map +1 -0
  201. package/dist/domains/comet-native/native-archive-preflight.js +214 -0
  202. package/dist/domains/comet-native/native-archive-preflight.js.map +1 -0
  203. package/dist/domains/comet-native/native-archive-transaction.d.ts +19 -0
  204. package/dist/domains/comet-native/native-archive-transaction.d.ts.map +1 -0
  205. package/dist/domains/comet-native/native-archive-transaction.js +1180 -0
  206. package/dist/domains/comet-native/native-archive-transaction.js.map +1 -0
  207. package/dist/domains/comet-native/native-archive.d.ts +36 -0
  208. package/dist/domains/comet-native/native-archive.d.ts.map +1 -0
  209. package/dist/domains/comet-native/native-archive.js +403 -0
  210. package/dist/domains/comet-native/native-archive.js.map +1 -0
  211. package/dist/domains/comet-native/native-artifacts.d.ts +10 -0
  212. package/dist/domains/comet-native/native-artifacts.d.ts.map +1 -0
  213. package/dist/domains/comet-native/native-artifacts.js +204 -0
  214. package/dist/domains/comet-native/native-artifacts.js.map +1 -0
  215. package/dist/domains/comet-native/native-atomic-file.d.ts +10 -0
  216. package/dist/domains/comet-native/native-atomic-file.d.ts.map +1 -0
  217. package/dist/domains/comet-native/native-atomic-file.js +179 -0
  218. package/dist/domains/comet-native/native-atomic-file.js.map +1 -0
  219. package/dist/domains/comet-native/native-bounded-file.d.ts +19 -0
  220. package/dist/domains/comet-native/native-bounded-file.d.ts.map +1 -0
  221. package/dist/domains/comet-native/native-bounded-file.js +184 -0
  222. package/dist/domains/comet-native/native-bounded-file.js.map +1 -0
  223. package/dist/domains/comet-native/native-build-evidence.d.ts +42 -0
  224. package/dist/domains/comet-native/native-build-evidence.d.ts.map +1 -0
  225. package/dist/domains/comet-native/native-build-evidence.js +257 -0
  226. package/dist/domains/comet-native/native-build-evidence.js.map +1 -0
  227. package/dist/domains/comet-native/native-canonical-hash.d.ts +10 -0
  228. package/dist/domains/comet-native/native-canonical-hash.d.ts.map +1 -0
  229. package/dist/domains/comet-native/native-canonical-hash.js +100 -0
  230. package/dist/domains/comet-native/native-canonical-hash.js.map +1 -0
  231. package/dist/domains/comet-native/native-change-recovery.d.ts +11 -0
  232. package/dist/domains/comet-native/native-change-recovery.d.ts.map +1 -0
  233. package/dist/domains/comet-native/native-change-recovery.js +15 -0
  234. package/dist/domains/comet-native/native-change-recovery.js.map +1 -0
  235. package/dist/domains/comet-native/native-change.d.ts +61 -0
  236. package/dist/domains/comet-native/native-change.d.ts.map +1 -0
  237. package/dist/domains/comet-native/native-change.js +696 -0
  238. package/dist/domains/comet-native/native-change.js.map +1 -0
  239. package/dist/domains/comet-native/native-check-receipt-model.d.ts +63 -0
  240. package/dist/domains/comet-native/native-check-receipt-model.d.ts.map +1 -0
  241. package/dist/domains/comet-native/native-check-receipt-model.js +347 -0
  242. package/dist/domains/comet-native/native-check-receipt-model.js.map +1 -0
  243. package/dist/domains/comet-native/native-check-receipt-storage.d.ts +10 -0
  244. package/dist/domains/comet-native/native-check-receipt-storage.d.ts.map +1 -0
  245. package/dist/domains/comet-native/native-check-receipt-storage.js +200 -0
  246. package/dist/domains/comet-native/native-check-receipt-storage.js.map +1 -0
  247. package/dist/domains/comet-native/native-check-receipt.d.ts +19 -0
  248. package/dist/domains/comet-native/native-check-receipt.d.ts.map +1 -0
  249. package/dist/domains/comet-native/native-check-receipt.js +449 -0
  250. package/dist/domains/comet-native/native-check-receipt.js.map +1 -0
  251. package/dist/domains/comet-native/native-check.d.ts +18 -0
  252. package/dist/domains/comet-native/native-check.d.ts.map +1 -0
  253. package/dist/domains/comet-native/native-check.js +29 -0
  254. package/dist/domains/comet-native/native-check.js.map +1 -0
  255. package/dist/domains/comet-native/native-checkpoint-journal.d.ts +13 -0
  256. package/dist/domains/comet-native/native-checkpoint-journal.d.ts.map +1 -0
  257. package/dist/domains/comet-native/native-checkpoint-journal.js +53 -0
  258. package/dist/domains/comet-native/native-checkpoint-journal.js.map +1 -0
  259. package/dist/domains/comet-native/native-checkpoint-storage.d.ts +43 -0
  260. package/dist/domains/comet-native/native-checkpoint-storage.d.ts.map +1 -0
  261. package/dist/domains/comet-native/native-checkpoint-storage.js +487 -0
  262. package/dist/domains/comet-native/native-checkpoint-storage.js.map +1 -0
  263. package/dist/domains/comet-native/native-cli-entry.d.ts +2 -0
  264. package/dist/domains/comet-native/native-cli-entry.d.ts.map +1 -0
  265. package/dist/domains/comet-native/native-cli-entry.js +18 -0
  266. package/dist/domains/comet-native/native-cli-entry.js.map +1 -0
  267. package/dist/domains/comet-native/native-cli.d.ts +7 -0
  268. package/dist/domains/comet-native/native-cli.d.ts.map +1 -0
  269. package/dist/domains/comet-native/native-cli.js +642 -0
  270. package/dist/domains/comet-native/native-cli.js.map +1 -0
  271. package/dist/domains/comet-native/native-config.d.ts +15 -0
  272. package/dist/domains/comet-native/native-config.d.ts.map +1 -0
  273. package/dist/domains/comet-native/native-config.js +281 -0
  274. package/dist/domains/comet-native/native-config.js.map +1 -0
  275. package/dist/domains/comet-native/native-conflict-inspection.d.ts +17 -0
  276. package/dist/domains/comet-native/native-conflict-inspection.d.ts.map +1 -0
  277. package/dist/domains/comet-native/native-conflict-inspection.js +90 -0
  278. package/dist/domains/comet-native/native-conflict-inspection.js.map +1 -0
  279. package/dist/domains/comet-native/native-conflict-radar.d.ts +75 -0
  280. package/dist/domains/comet-native/native-conflict-radar.d.ts.map +1 -0
  281. package/dist/domains/comet-native/native-conflict-radar.js +326 -0
  282. package/dist/domains/comet-native/native-conflict-radar.js.map +1 -0
  283. package/dist/domains/comet-native/native-continuation.d.ts +9 -0
  284. package/dist/domains/comet-native/native-continuation.d.ts.map +1 -0
  285. package/dist/domains/comet-native/native-continuation.js +146 -0
  286. package/dist/domains/comet-native/native-continuation.js.map +1 -0
  287. package/dist/domains/comet-native/native-contract-files.d.ts +24 -0
  288. package/dist/domains/comet-native/native-contract-files.d.ts.map +1 -0
  289. package/dist/domains/comet-native/native-contract-files.js +66 -0
  290. package/dist/domains/comet-native/native-contract-files.js.map +1 -0
  291. package/dist/domains/comet-native/native-contract.d.ts +41 -0
  292. package/dist/domains/comet-native/native-contract.d.ts.map +1 -0
  293. package/dist/domains/comet-native/native-contract.js +141 -0
  294. package/dist/domains/comet-native/native-contract.js.map +1 -0
  295. package/dist/domains/comet-native/native-diagnostics.d.ts +18 -0
  296. package/dist/domains/comet-native/native-diagnostics.d.ts.map +1 -0
  297. package/dist/domains/comet-native/native-diagnostics.js +522 -0
  298. package/dist/domains/comet-native/native-diagnostics.js.map +1 -0
  299. package/dist/domains/comet-native/native-doctor.d.ts +12 -0
  300. package/dist/domains/comet-native/native-doctor.d.ts.map +1 -0
  301. package/dist/domains/comet-native/native-doctor.js +768 -0
  302. package/dist/domains/comet-native/native-doctor.js.map +1 -0
  303. package/dist/domains/comet-native/native-evidence-retention.d.ts +37 -0
  304. package/dist/domains/comet-native/native-evidence-retention.d.ts.map +1 -0
  305. package/dist/domains/comet-native/native-evidence-retention.js +887 -0
  306. package/dist/domains/comet-native/native-evidence-retention.js.map +1 -0
  307. package/dist/domains/comet-native/native-evidence-storage.d.ts +41 -0
  308. package/dist/domains/comet-native/native-evidence-storage.d.ts.map +1 -0
  309. package/dist/domains/comet-native/native-evidence-storage.js +355 -0
  310. package/dist/domains/comet-native/native-evidence-storage.js.map +1 -0
  311. package/dist/domains/comet-native/native-file-identity.d.ts +9 -0
  312. package/dist/domains/comet-native/native-file-identity.d.ts.map +1 -0
  313. package/dist/domains/comet-native/native-file-identity.js +21 -0
  314. package/dist/domains/comet-native/native-file-identity.js.map +1 -0
  315. package/dist/domains/comet-native/native-findings.d.ts +8 -0
  316. package/dist/domains/comet-native/native-findings.d.ts.map +1 -0
  317. package/dist/domains/comet-native/native-findings.js +238 -0
  318. package/dist/domains/comet-native/native-findings.js.map +1 -0
  319. package/dist/domains/comet-native/native-guards.d.ts +7 -0
  320. package/dist/domains/comet-native/native-guards.d.ts.map +1 -0
  321. package/dist/domains/comet-native/native-guards.js +126 -0
  322. package/dist/domains/comet-native/native-guards.js.map +1 -0
  323. package/dist/domains/comet-native/native-hash.d.ts +3 -0
  324. package/dist/domains/comet-native/native-hash.d.ts.map +1 -0
  325. package/dist/domains/comet-native/native-hash.js +12 -0
  326. package/dist/domains/comet-native/native-hash.js.map +1 -0
  327. package/dist/domains/comet-native/native-hook-guard.d.ts +17 -0
  328. package/dist/domains/comet-native/native-hook-guard.d.ts.map +1 -0
  329. package/dist/domains/comet-native/native-hook-guard.js +154 -0
  330. package/dist/domains/comet-native/native-hook-guard.js.map +1 -0
  331. package/dist/domains/comet-native/native-lock.d.ts +47 -0
  332. package/dist/domains/comet-native/native-lock.d.ts.map +1 -0
  333. package/dist/domains/comet-native/native-lock.js +398 -0
  334. package/dist/domains/comet-native/native-lock.js.map +1 -0
  335. package/dist/domains/comet-native/native-mutation-lock.d.ts +5 -0
  336. package/dist/domains/comet-native/native-mutation-lock.d.ts.map +1 -0
  337. package/dist/domains/comet-native/native-mutation-lock.js +66 -0
  338. package/dist/domains/comet-native/native-mutation-lock.js.map +1 -0
  339. package/dist/domains/comet-native/native-paths.d.ts +10 -0
  340. package/dist/domains/comet-native/native-paths.d.ts.map +1 -0
  341. package/dist/domains/comet-native/native-paths.js +171 -0
  342. package/dist/domains/comet-native/native-paths.js.map +1 -0
  343. package/dist/domains/comet-native/native-progress-checkpoint.d.ts +13 -0
  344. package/dist/domains/comet-native/native-progress-checkpoint.d.ts.map +1 -0
  345. package/dist/domains/comet-native/native-progress-checkpoint.js +104 -0
  346. package/dist/domains/comet-native/native-progress-checkpoint.js.map +1 -0
  347. package/dist/domains/comet-native/native-protected-file.d.ts +113 -0
  348. package/dist/domains/comet-native/native-protected-file.d.ts.map +1 -0
  349. package/dist/domains/comet-native/native-protected-file.js +510 -0
  350. package/dist/domains/comet-native/native-protected-file.js.map +1 -0
  351. package/dist/domains/comet-native/native-redaction.d.ts +2 -0
  352. package/dist/domains/comet-native/native-redaction.d.ts.map +1 -0
  353. package/dist/domains/comet-native/native-redaction.js +18 -0
  354. package/dist/domains/comet-native/native-redaction.js.map +1 -0
  355. package/dist/domains/comet-native/native-repair-integration.d.ts +42 -0
  356. package/dist/domains/comet-native/native-repair-integration.d.ts.map +1 -0
  357. package/dist/domains/comet-native/native-repair-integration.js +184 -0
  358. package/dist/domains/comet-native/native-repair-integration.js.map +1 -0
  359. package/dist/domains/comet-native/native-repair-runtime.d.ts +73 -0
  360. package/dist/domains/comet-native/native-repair-runtime.d.ts.map +1 -0
  361. package/dist/domains/comet-native/native-repair-runtime.js +509 -0
  362. package/dist/domains/comet-native/native-repair-runtime.js.map +1 -0
  363. package/dist/domains/comet-native/native-repair-stagnation.d.ts +85 -0
  364. package/dist/domains/comet-native/native-repair-stagnation.d.ts.map +1 -0
  365. package/dist/domains/comet-native/native-repair-stagnation.js +256 -0
  366. package/dist/domains/comet-native/native-repair-stagnation.js.map +1 -0
  367. package/dist/domains/comet-native/native-resume-view.d.ts +14 -0
  368. package/dist/domains/comet-native/native-resume-view.d.ts.map +1 -0
  369. package/dist/domains/comet-native/native-resume-view.js +105 -0
  370. package/dist/domains/comet-native/native-resume-view.js.map +1 -0
  371. package/dist/domains/comet-native/native-revision.d.ts +20 -0
  372. package/dist/domains/comet-native/native-revision.d.ts.map +1 -0
  373. package/dist/domains/comet-native/native-revision.js +32 -0
  374. package/dist/domains/comet-native/native-revision.js.map +1 -0
  375. package/dist/domains/comet-native/native-root-move.d.ts +20 -0
  376. package/dist/domains/comet-native/native-root-move.d.ts.map +1 -0
  377. package/dist/domains/comet-native/native-root-move.js +812 -0
  378. package/dist/domains/comet-native/native-root-move.js.map +1 -0
  379. package/dist/domains/comet-native/native-run-consistency.d.ts +3 -0
  380. package/dist/domains/comet-native/native-run-consistency.d.ts.map +1 -0
  381. package/dist/domains/comet-native/native-run-consistency.js +136 -0
  382. package/dist/domains/comet-native/native-run-consistency.js.map +1 -0
  383. package/dist/domains/comet-native/native-run-store.d.ts +41 -0
  384. package/dist/domains/comet-native/native-run-store.d.ts.map +1 -0
  385. package/dist/domains/comet-native/native-run-store.js +452 -0
  386. package/dist/domains/comet-native/native-run-store.js.map +1 -0
  387. package/dist/domains/comet-native/native-runtime-package.d.ts +16 -0
  388. package/dist/domains/comet-native/native-runtime-package.d.ts.map +1 -0
  389. package/dist/domains/comet-native/native-runtime-package.js +72 -0
  390. package/dist/domains/comet-native/native-runtime-package.js.map +1 -0
  391. package/dist/domains/comet-native/native-schema-migration.d.ts +11 -0
  392. package/dist/domains/comet-native/native-schema-migration.d.ts.map +1 -0
  393. package/dist/domains/comet-native/native-schema-migration.js +899 -0
  394. package/dist/domains/comet-native/native-schema-migration.js.map +1 -0
  395. package/dist/domains/comet-native/native-selection.d.ts +12 -0
  396. package/dist/domains/comet-native/native-selection.d.ts.map +1 -0
  397. package/dist/domains/comet-native/native-selection.js +52 -0
  398. package/dist/domains/comet-native/native-selection.js.map +1 -0
  399. package/dist/domains/comet-native/native-sensitive-paths.d.ts +7 -0
  400. package/dist/domains/comet-native/native-sensitive-paths.d.ts.map +1 -0
  401. package/dist/domains/comet-native/native-sensitive-paths.js +69 -0
  402. package/dist/domains/comet-native/native-sensitive-paths.js.map +1 -0
  403. package/dist/domains/comet-native/native-snapshot.d.ts +74 -0
  404. package/dist/domains/comet-native/native-snapshot.d.ts.map +1 -0
  405. package/dist/domains/comet-native/native-snapshot.js +2312 -0
  406. package/dist/domains/comet-native/native-snapshot.js.map +1 -0
  407. package/dist/domains/comet-native/native-specs.d.ts +12 -0
  408. package/dist/domains/comet-native/native-specs.d.ts.map +1 -0
  409. package/dist/domains/comet-native/native-specs.js +270 -0
  410. package/dist/domains/comet-native/native-specs.js.map +1 -0
  411. package/dist/domains/comet-native/native-trajectory-limits.d.ts +7 -0
  412. package/dist/domains/comet-native/native-trajectory-limits.d.ts.map +1 -0
  413. package/dist/domains/comet-native/native-trajectory-limits.js +13 -0
  414. package/dist/domains/comet-native/native-trajectory-limits.js.map +1 -0
  415. package/dist/domains/comet-native/native-trajectory-recovery.d.ts +37 -0
  416. package/dist/domains/comet-native/native-trajectory-recovery.d.ts.map +1 -0
  417. package/dist/domains/comet-native/native-trajectory-recovery.js +133 -0
  418. package/dist/domains/comet-native/native-trajectory-recovery.js.map +1 -0
  419. package/dist/domains/comet-native/native-trajectory.d.ts +16 -0
  420. package/dist/domains/comet-native/native-trajectory.d.ts.map +1 -0
  421. package/dist/domains/comet-native/native-trajectory.js +27 -0
  422. package/dist/domains/comet-native/native-trajectory.js.map +1 -0
  423. package/dist/domains/comet-native/native-transaction.d.ts +45 -0
  424. package/dist/domains/comet-native/native-transaction.d.ts.map +1 -0
  425. package/dist/domains/comet-native/native-transaction.js +846 -0
  426. package/dist/domains/comet-native/native-transaction.js.map +1 -0
  427. package/dist/domains/comet-native/native-transition-evidence.d.ts +4 -0
  428. package/dist/domains/comet-native/native-transition-evidence.d.ts.map +1 -0
  429. package/dist/domains/comet-native/native-transition-evidence.js +20 -0
  430. package/dist/domains/comet-native/native-transition-evidence.js.map +1 -0
  431. package/dist/domains/comet-native/native-transition-journal.d.ts +30 -0
  432. package/dist/domains/comet-native/native-transition-journal.d.ts.map +1 -0
  433. package/dist/domains/comet-native/native-transition-journal.js +819 -0
  434. package/dist/domains/comet-native/native-transition-journal.js.map +1 -0
  435. package/dist/domains/comet-native/native-transitions.d.ts +13 -0
  436. package/dist/domains/comet-native/native-transitions.d.ts.map +1 -0
  437. package/dist/domains/comet-native/native-transitions.js +632 -0
  438. package/dist/domains/comet-native/native-transitions.js.map +1 -0
  439. package/dist/domains/comet-native/native-types.d.ts +547 -0
  440. package/dist/domains/comet-native/native-types.d.ts.map +1 -0
  441. package/dist/domains/comet-native/native-types.js +8 -0
  442. package/dist/domains/comet-native/native-types.js.map +1 -0
  443. package/dist/domains/comet-native/native-verification-evidence.d.ts +86 -0
  444. package/dist/domains/comet-native/native-verification-evidence.d.ts.map +1 -0
  445. package/dist/domains/comet-native/native-verification-evidence.js +480 -0
  446. package/dist/domains/comet-native/native-verification-evidence.js.map +1 -0
  447. package/dist/domains/comet-native/native-verification-runtime.d.ts +58 -0
  448. package/dist/domains/comet-native/native-verification-runtime.d.ts.map +1 -0
  449. package/dist/domains/comet-native/native-verification-runtime.js +321 -0
  450. package/dist/domains/comet-native/native-verification-runtime.js.map +1 -0
  451. package/dist/domains/comet-native/native-verification-scope.d.ts +117 -0
  452. package/dist/domains/comet-native/native-verification-scope.d.ts.map +1 -0
  453. package/dist/domains/comet-native/native-verification-scope.js +1040 -0
  454. package/dist/domains/comet-native/native-verification-scope.js.map +1 -0
  455. package/dist/domains/comet-native/native-workspace.d.ts +46 -0
  456. package/dist/domains/comet-native/native-workspace.d.ts.map +1 -0
  457. package/dist/domains/comet-native/native-workspace.js +276 -0
  458. package/dist/domains/comet-native/native-workspace.js.map +1 -0
  459. package/dist/domains/dashboard/collector.d.ts.map +1 -1
  460. package/dist/domains/dashboard/collector.js +9 -1
  461. package/dist/domains/dashboard/collector.js.map +1 -1
  462. package/dist/domains/dashboard/native-adapter.d.ts +157 -0
  463. package/dist/domains/dashboard/native-adapter.d.ts.map +1 -0
  464. package/dist/domains/dashboard/native-adapter.js +302 -0
  465. package/dist/domains/dashboard/native-adapter.js.map +1 -0
  466. package/dist/domains/dashboard/native-collector.d.ts +6 -0
  467. package/dist/domains/dashboard/native-collector.d.ts.map +1 -0
  468. package/dist/domains/dashboard/native-collector.js +285 -0
  469. package/dist/domains/dashboard/native-collector.js.map +1 -0
  470. package/dist/domains/dashboard/types.d.ts +5 -0
  471. package/dist/domains/dashboard/types.d.ts.map +1 -1
  472. package/dist/domains/dashboard/web/assets/{arc-TGVUG2WN.js → arc-CxdiLJ50.js} +1 -1
  473. package/dist/domains/dashboard/web/assets/{architectureDiagram-3BPJPVTR-ASHmiHoP.js → architectureDiagram-3BPJPVTR-D5YCQu4e.js} +1 -1
  474. package/dist/domains/dashboard/web/assets/{blockDiagram-GPEHLZMM-CwASxBKe.js → blockDiagram-GPEHLZMM-8NfdCOQ8.js} +1 -1
  475. package/dist/domains/dashboard/web/assets/{c4Diagram-AAUBKEIU-BU8z_WNk.js → c4Diagram-AAUBKEIU-B3cFnNT7.js} +1 -1
  476. package/dist/domains/dashboard/web/assets/channel-B6AFly29.js +1 -0
  477. package/dist/domains/dashboard/web/assets/{chunk-2J33WTMH-CBGlUx4_.js → chunk-2J33WTMH-CBNfW-Dr.js} +1 -1
  478. package/dist/domains/dashboard/web/assets/{chunk-4BX2VUAB-CS-iGcFz.js → chunk-4BX2VUAB-vWyemRBr.js} +1 -1
  479. package/dist/domains/dashboard/web/assets/{chunk-55IACEB6-BUtCVJat.js → chunk-55IACEB6-H6haOo2C.js} +1 -1
  480. package/dist/domains/dashboard/web/assets/{chunk-727SXJPM-C94tj_pf.js → chunk-727SXJPM-D02UjGND.js} +1 -1
  481. package/dist/domains/dashboard/web/assets/{chunk-AQP2D5EJ-BFOKcpdG.js → chunk-AQP2D5EJ-wKsbOw_T.js} +1 -1
  482. package/dist/domains/dashboard/web/assets/{chunk-FMBD7UC4-Dmx8B-st.js → chunk-FMBD7UC4-eYFEZimP.js} +1 -1
  483. package/dist/domains/dashboard/web/assets/{chunk-ND2GUHAM-DYV00CNn.js → chunk-ND2GUHAM-fMaIDDI2.js} +1 -1
  484. package/dist/domains/dashboard/web/assets/{chunk-QZHKN3VN-DMJJyQnw.js → chunk-QZHKN3VN-C9rhF6Hm.js} +1 -1
  485. package/dist/domains/dashboard/web/assets/classDiagram-4FO5ZUOK-BcnrxOTt.js +1 -0
  486. package/dist/domains/dashboard/web/assets/classDiagram-v2-Q7XG4LA2-BcnrxOTt.js +1 -0
  487. package/dist/domains/dashboard/web/assets/{cose-bilkent-S5V4N54A-P4nE2rea.js → cose-bilkent-S5V4N54A-CbaShPub.js} +1 -1
  488. package/dist/domains/dashboard/web/assets/{cynefin-VYW2F7L2-C-R1HXDv.js → cynefin-VYW2F7L2-DN4emAQv.js} +1 -1
  489. package/dist/domains/dashboard/web/assets/{dagre-BM42HDAG-BH8d-C9z.js → dagre-BM42HDAG-BpSzbk_V.js} +1 -1
  490. package/dist/domains/dashboard/web/assets/demo-BuVau32v.js +25 -0
  491. package/dist/domains/dashboard/web/assets/{diagram-2AECGRRQ-DpXTgQIH.js → diagram-2AECGRRQ-CfXwGGpQ.js} +1 -1
  492. package/dist/domains/dashboard/web/assets/{diagram-5GNKFQAL-DSiFJzSw.js → diagram-5GNKFQAL-DMp0Zmot.js} +1 -1
  493. package/dist/domains/dashboard/web/assets/{diagram-KO2AKTUF-DULMkben.js → diagram-KO2AKTUF-C7ZvofsM.js} +1 -1
  494. package/dist/domains/dashboard/web/assets/{diagram-LMA3HP47-Pi8m_NO9.js → diagram-LMA3HP47-BjmxFnap.js} +1 -1
  495. package/dist/domains/dashboard/web/assets/{diagram-OG6HWLK6-BSe6bCWm.js → diagram-OG6HWLK6-DFBG1Iqy.js} +1 -1
  496. package/dist/domains/dashboard/web/assets/{erDiagram-TEJ5UH35-zb-FEcbq.js → erDiagram-TEJ5UH35-MpNT7dzt.js} +1 -1
  497. package/dist/domains/dashboard/web/assets/{flowDiagram-I6XJVG4X-Dr-Gk0z2.js → flowDiagram-I6XJVG4X-_1wAR6c1.js} +1 -1
  498. package/dist/domains/dashboard/web/assets/{ganttDiagram-6RSMTGT7-qs6Zb2A6.js → ganttDiagram-6RSMTGT7-DJKjDeWl.js} +1 -1
  499. package/dist/domains/dashboard/web/assets/{gitGraphDiagram-PVQCEYII-BQ314orT.js → gitGraphDiagram-PVQCEYII-BL7yUEn-.js} +1 -1
  500. package/dist/domains/dashboard/web/assets/index-CjE9mHGb.js +24 -0
  501. package/dist/domains/dashboard/web/assets/index-D-AGxvI4.css +1 -0
  502. package/dist/domains/dashboard/web/assets/{infoDiagram-5YYISTIA-O0bQp98A.js → infoDiagram-5YYISTIA-Bt5fqrOd.js} +1 -1
  503. package/dist/domains/dashboard/web/assets/{ishikawaDiagram-YF4QCWOH-BPC7wbKh.js → ishikawaDiagram-YF4QCWOH-COCMcjBM.js} +1 -1
  504. package/dist/domains/dashboard/web/assets/{journeyDiagram-JHISSGLW-ohViOd4b.js → journeyDiagram-JHISSGLW-DGcpcWny.js} +1 -1
  505. package/dist/domains/dashboard/web/assets/{kanban-definition-UN3LZRKU-CHleNdbG.js → kanban-definition-UN3LZRKU-QSBNsWMP.js} +1 -1
  506. package/dist/domains/dashboard/web/assets/{linear-CyqiW--Q.js → linear-9uyeeBZf.js} +1 -1
  507. package/dist/domains/dashboard/web/assets/{mermaid.core-qS9XvtaK.js → mermaid.core-CkNdB471.js} +4 -4
  508. package/dist/domains/dashboard/web/assets/{mindmap-definition-RKZ34NQL-oaGkqO9l.js → mindmap-definition-RKZ34NQL-CiNxI0gP.js} +1 -1
  509. package/dist/domains/dashboard/web/assets/{pieDiagram-4H26LBE5-CPcB-AFh.js → pieDiagram-4H26LBE5-BLJ6QnRO.js} +1 -1
  510. package/dist/domains/dashboard/web/assets/{quadrantDiagram-W4KKPZXB-LFy52Qtj.js → quadrantDiagram-W4KKPZXB-CflW-eFH.js} +1 -1
  511. package/dist/domains/dashboard/web/assets/{requirementDiagram-4Y6WPE33-BdjeaYP_.js → requirementDiagram-4Y6WPE33-B9HLmRWH.js} +1 -1
  512. package/dist/domains/dashboard/web/assets/{sankeyDiagram-5OEKKPKP-DDJ4styL.js → sankeyDiagram-5OEKKPKP-6xnco5k5.js} +1 -1
  513. package/dist/domains/dashboard/web/assets/{sequenceDiagram-3UESZ5HK-BL5bFNoz.js → sequenceDiagram-3UESZ5HK-Dp1rujNZ.js} +1 -1
  514. package/dist/domains/dashboard/web/assets/{stateDiagram-AJRCARHV-BNUfikui.js → stateDiagram-AJRCARHV-C1Xc90ek.js} +1 -1
  515. package/dist/domains/dashboard/web/assets/stateDiagram-v2-BHNVJYJU-p-qmzXyE.js +1 -0
  516. package/dist/domains/dashboard/web/assets/{timeline-definition-PNZ67QCA--ps2uu6L.js → timeline-definition-PNZ67QCA-g9s-m5Z4.js} +1 -1
  517. package/dist/domains/dashboard/web/assets/{vennDiagram-CIIHVFJN-C2q8q26c.js → vennDiagram-CIIHVFJN-rkEyhyCc.js} +1 -1
  518. package/dist/domains/dashboard/web/assets/{wardleyDiagram-YWT4CUSO-BUH9gXqd.js → wardleyDiagram-YWT4CUSO-CJLrWGXc.js} +1 -1
  519. package/dist/domains/dashboard/web/assets/{xychartDiagram-2RQKCTM6-B-DielEy.js → xychartDiagram-2RQKCTM6-BxJvPNqo.js} +1 -1
  520. package/dist/domains/dashboard/web/index.html +16 -16
  521. package/dist/domains/engine/storage-layout.d.ts +14 -0
  522. package/dist/domains/engine/storage-layout.d.ts.map +1 -0
  523. package/dist/domains/engine/storage-layout.js +32 -0
  524. package/dist/domains/engine/storage-layout.js.map +1 -0
  525. package/dist/domains/engine/storage-run.d.ts +9 -0
  526. package/dist/domains/engine/storage-run.d.ts.map +1 -0
  527. package/dist/domains/engine/storage-run.js +116 -0
  528. package/dist/domains/engine/storage-run.js.map +1 -0
  529. package/dist/domains/factory/package.d.ts.map +1 -1
  530. package/dist/domains/factory/package.js +5 -3
  531. package/dist/domains/factory/package.js.map +1 -1
  532. package/dist/domains/integrations/openspec.d.ts.map +1 -1
  533. package/dist/domains/integrations/openspec.js +8 -6
  534. package/dist/domains/integrations/openspec.js.map +1 -1
  535. package/dist/domains/skill/platform-inspect.d.ts +6 -2
  536. package/dist/domains/skill/platform-inspect.d.ts.map +1 -1
  537. package/dist/domains/skill/platform-inspect.js +52 -8
  538. package/dist/domains/skill/platform-inspect.js.map +1 -1
  539. package/dist/domains/skill/platform-install.d.ts +18 -7
  540. package/dist/domains/skill/platform-install.d.ts.map +1 -1
  541. package/dist/domains/skill/platform-install.js +338 -71
  542. package/dist/domains/skill/platform-install.js.map +1 -1
  543. package/dist/domains/skill/project-instructions.d.ts.map +1 -1
  544. package/dist/domains/skill/project-instructions.js +12 -6
  545. package/dist/domains/skill/project-instructions.js.map +1 -1
  546. package/dist/domains/skill/uninstall.d.ts.map +1 -1
  547. package/dist/domains/skill/uninstall.js +15 -3
  548. package/dist/domains/skill/uninstall.js.map +1 -1
  549. package/dist/domains/workflow-contract/builtins.d.ts +6 -0
  550. package/dist/domains/workflow-contract/builtins.d.ts.map +1 -1
  551. package/dist/domains/workflow-contract/builtins.js +137 -0
  552. package/dist/domains/workflow-contract/builtins.js.map +1 -1
  553. package/dist/domains/workflow-contract/index.d.ts +3 -1
  554. package/dist/domains/workflow-contract/index.d.ts.map +1 -1
  555. package/dist/domains/workflow-contract/index.js +2 -1
  556. package/dist/domains/workflow-contract/index.js.map +1 -1
  557. package/dist/domains/workflow-contract/normalize.d.ts.map +1 -1
  558. package/dist/domains/workflow-contract/normalize.js +28 -10
  559. package/dist/domains/workflow-contract/normalize.js.map +1 -1
  560. package/dist/domains/workflow-contract/project-config.d.ts +7 -0
  561. package/dist/domains/workflow-contract/project-config.d.ts.map +1 -0
  562. package/dist/domains/workflow-contract/project-config.js +110 -0
  563. package/dist/domains/workflow-contract/project-config.js.map +1 -0
  564. package/dist/domains/workflow-contract/types.d.ts +4 -2
  565. package/dist/domains/workflow-contract/types.d.ts.map +1 -1
  566. package/dist/domains/workflow-contract/validation.d.ts.map +1 -1
  567. package/dist/domains/workflow-contract/validation.js +14 -5
  568. package/dist/domains/workflow-contract/validation.js.map +1 -1
  569. package/dist/platform/install/detect.d.ts +3 -1
  570. package/dist/platform/install/detect.d.ts.map +1 -1
  571. package/dist/platform/install/detect.js +4 -1
  572. package/dist/platform/install/detect.js.map +1 -1
  573. package/dist/platform/install/project-registry.js +2 -2
  574. package/dist/platform/install/project-registry.js.map +1 -1
  575. package/dist/platform/paths/repository-layout.d.ts +16 -0
  576. package/dist/platform/paths/repository-layout.d.ts.map +1 -1
  577. package/dist/platform/paths/repository-layout.js.map +1 -1
  578. package/eval/local/README.md +50 -0
  579. package/eval/local/scripts/compare_baselines.py +127 -1
  580. package/eval/local/scripts/regression_check.py +3 -4
  581. package/eval/local/tasks/comet-native-clarification/environment/Dockerfile +27 -0
  582. package/eval/local/tasks/comet-native-clarification/environment/test_wordcount.py +25 -0
  583. package/eval/local/tasks/comet-native-clarification/environment/wordcount.py +36 -0
  584. package/eval/local/tasks/comet-native-clarification/instruction.md +7 -0
  585. package/eval/local/tasks/comet-native-clarification/task.toml +40 -0
  586. package/eval/local/tasks/comet-native-clarification/validation/test_native_clarification.py +193 -0
  587. package/eval/local/tasks/comet-native-clarification-modes/environment/Dockerfile +27 -0
  588. package/eval/local/tasks/comet-native-clarification-modes/environment/test_wordcount.py +25 -0
  589. package/eval/local/tasks/comet-native-clarification-modes/environment/wordcount.py +36 -0
  590. package/eval/local/tasks/comet-native-clarification-modes/instruction.md +13 -0
  591. package/eval/local/tasks/comet-native-clarification-modes/task.toml +39 -0
  592. package/eval/local/tasks/comet-native-clarification-modes/validation/test_native_clarification_modes.py +235 -0
  593. package/eval/local/tasks/comet-native-interrupted-transition/environment/.comet/config.yaml +6 -0
  594. package/eval/local/tasks/comet-native-interrupted-transition/environment/Dockerfile +28 -0
  595. package/eval/local/tasks/comet-native-interrupted-transition/environment/docs/comet/changes/add-character-counting/brief.md +17 -0
  596. package/eval/local/tasks/comet-native-interrupted-transition/environment/docs/comet/changes/add-character-counting/comet-state.yaml +12 -0
  597. package/eval/local/tasks/comet-native-interrupted-transition/environment/docs/comet/changes/add-character-counting/runtime/transition.json +69 -0
  598. package/eval/local/tasks/comet-native-interrupted-transition/environment/docs/comet/changes/add-character-counting/specs/character-counting/spec.md +3 -0
  599. package/eval/local/tasks/comet-native-interrupted-transition/environment/test_wordcount.py +20 -0
  600. package/eval/local/tasks/comet-native-interrupted-transition/environment/wordcount.py +27 -0
  601. package/eval/local/tasks/comet-native-interrupted-transition/instruction.md +7 -0
  602. package/eval/local/tasks/comet-native-interrupted-transition/task.toml +35 -0
  603. package/eval/local/tasks/comet-native-interrupted-transition/validation/test_native_interrupted_transition.py +63 -0
  604. package/eval/local/tasks/comet-native-repository-fact/environment/Dockerfile +26 -0
  605. package/eval/local/tasks/comet-native-repository-fact/environment/PRODUCT_RULES.md +3 -0
  606. package/eval/local/tasks/comet-native-repository-fact/environment/test_wordcount.py +20 -0
  607. package/eval/local/tasks/comet-native-repository-fact/environment/wordcount.py +27 -0
  608. package/eval/local/tasks/comet-native-repository-fact/instruction.md +7 -0
  609. package/eval/local/tasks/comet-native-repository-fact/task.toml +35 -0
  610. package/eval/local/tasks/comet-native-repository-fact/validation/test_native_repository_fact.py +53 -0
  611. package/eval/local/tasks/comet-native-wave-b-decision-resume/environment/Dockerfile +27 -0
  612. package/eval/local/tasks/comet-native-wave-b-decision-resume/environment/test_wordcount.py +27 -0
  613. package/eval/local/tasks/comet-native-wave-b-decision-resume/environment/wordcount.py +36 -0
  614. package/eval/local/tasks/comet-native-wave-b-decision-resume/instruction.md +9 -0
  615. package/eval/local/tasks/comet-native-wave-b-decision-resume/task.toml +40 -0
  616. package/eval/local/tasks/comet-native-wave-b-decision-resume/validation/test_native_wave_b_decision_resume.py +208 -0
  617. package/eval/local/tasks/comet-native-wave-c-verification-integrity/environment/Dockerfile +27 -0
  618. package/eval/local/tasks/comet-native-wave-c-verification-integrity/environment/test_wordcount.py +27 -0
  619. package/eval/local/tasks/comet-native-wave-c-verification-integrity/environment/wordcount.py +36 -0
  620. package/eval/local/tasks/comet-native-wave-c-verification-integrity/instruction.md +11 -0
  621. package/eval/local/tasks/comet-native-wave-c-verification-integrity/task.toml +36 -0
  622. package/eval/local/tasks/comet-native-wave-c-verification-integrity/validation/test_native_wave_c_verification_integrity.py +344 -0
  623. package/eval/local/tasks/comet-native-wave-d-stagnation-stop/environment/Dockerfile +27 -0
  624. package/eval/local/tasks/comet-native-wave-d-stagnation-stop/environment/test_wordcount.py +27 -0
  625. package/eval/local/tasks/comet-native-wave-d-stagnation-stop/environment/wordcount.py +36 -0
  626. package/eval/local/tasks/comet-native-wave-d-stagnation-stop/instruction.md +11 -0
  627. package/eval/local/tasks/comet-native-wave-d-stagnation-stop/task.toml +37 -0
  628. package/eval/local/tasks/comet-native-wave-d-stagnation-stop/validation/test_native_wave_d_stagnation_stop.py +284 -0
  629. package/eval/local/tasks/comet-native-wave-e-parallel-safety/environment/.include-trusted-native-runtime +1 -0
  630. package/eval/local/tasks/comet-native-wave-e-parallel-safety/environment/Dockerfile +27 -0
  631. package/eval/local/tasks/comet-native-wave-e-parallel-safety/environment/test_wordcount.py +27 -0
  632. package/eval/local/tasks/comet-native-wave-e-parallel-safety/environment/wordcount.py +36 -0
  633. package/eval/local/tasks/comet-native-wave-e-parallel-safety/instruction.md +9 -0
  634. package/eval/local/tasks/comet-native-wave-e-parallel-safety/task.toml +37 -0
  635. package/eval/local/tasks/comet-native-wave-e-parallel-safety/validation/test_native_wave_e_parallel_safety.py +309 -0
  636. package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/environment/.include-current-comet-cli +1 -0
  637. package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/environment/Dockerfile +31 -0
  638. package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/environment/current-comet-package.json +18 -0
  639. package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/environment/current-comet.sh +14 -0
  640. package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/environment/test_wordcount.py +27 -0
  641. package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/environment/wordcount.py +36 -0
  642. package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/instruction.md +7 -0
  643. package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/task.toml +36 -0
  644. package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/validation/test_native_wave_f_dashboard_readonly.py +469 -0
  645. package/eval/local/tasks/comet-native-workflow/environment/Dockerfile +27 -0
  646. package/eval/local/tasks/comet-native-workflow/environment/test_wordcount.py +25 -0
  647. package/eval/local/tasks/comet-native-workflow/environment/wordcount.py +36 -0
  648. package/eval/local/tasks/comet-native-workflow/instruction.md +14 -0
  649. package/eval/local/tasks/comet-native-workflow/task.toml +36 -0
  650. package/eval/local/tasks/comet-native-workflow/validation/test_native_workflow.py +149 -0
  651. package/eval/local/tasks/index.yaml +61 -0
  652. package/eval/local/tests/conftest.py +407 -22
  653. package/eval/local/tests/scaffold/test_aligned_comparison.py +1012 -0
  654. package/eval/local/tests/scaffold/test_conftest_helpers.py +187 -7
  655. package/eval/local/tests/scaffold/test_logging.py +135 -1
  656. package/eval/local/tests/scaffold/test_manifests.py +2 -0
  657. package/eval/local/tests/scaffold/test_native_aligned_eval.py +346 -0
  658. package/eval/local/tests/scaffold/test_native_wave_evaluations.py +1889 -0
  659. package/eval/local/tests/scaffold/test_profiles.py +33 -0
  660. package/eval/local/tests/scaffold/test_sample_quality.py +57 -0
  661. package/eval/local/tests/scaffold/test_tasks.py +377 -1
  662. package/eval/local/tests/scaffold/test_treatments.py +59 -13
  663. package/eval/local/tests/scaffold/test_utils.py +277 -4
  664. package/eval/local/tests/tasks/__init__.py +1 -0
  665. package/eval/local/tests/tasks/test_tasks.py +104 -78
  666. package/eval/local/tests/tasks/test_validation_scripts.py +37 -0
  667. package/eval/local/treatments/comet/comet_native_phase1.yaml +66 -0
  668. package/eval/pyproject.toml +4 -4
  669. package/eval/scaffold/python/aligned_comparison.py +1631 -0
  670. package/eval/scaffold/python/generic_llm_judge.py +3 -1
  671. package/eval/scaffold/python/llm_judge.py +0 -3
  672. package/eval/scaffold/python/logging.py +115 -16
  673. package/eval/scaffold/python/manifests.py +2 -0
  674. package/eval/scaffold/python/native_eval.py +138 -0
  675. package/eval/scaffold/python/pass_at_k.py +0 -1
  676. package/eval/scaffold/python/report_outputs.py +226 -44
  677. package/eval/scaffold/python/sample_quality.py +45 -2
  678. package/eval/scaffold/python/tasks.py +11 -0
  679. package/eval/scaffold/python/utils.py +108 -20
  680. package/eval/scaffold/python/validation/__init__.py +15 -5
  681. package/eval/scaffold/python/validation/comet_workflow.py +10 -5
  682. package/eval/scaffold/python/validation/generic_rubric.py +1 -2
  683. package/eval/scaffold/python/validation/native_wave.py +2154 -0
  684. package/eval/scaffold/python/validation/native_workflow.py +252 -0
  685. package/eval/scaffold/python/validation/rubric.py +0 -2
  686. package/eval/scaffold/shell/completion-point.sh +18 -0
  687. package/eval/scaffold/shell/decision-point.sh +35 -0
  688. package/eval/scaffold/shell/docker.sh +150 -9
  689. package/eval/scaffold/shell/run-claude-loop.sh +57 -27
  690. package/package.json +26 -5
  691. package/dist/domains/dashboard/web/assets/channel-kp6Ng2JJ.js +0 -1
  692. package/dist/domains/dashboard/web/assets/classDiagram-4FO5ZUOK-yBDjgMY_.js +0 -1
  693. package/dist/domains/dashboard/web/assets/classDiagram-v2-Q7XG4LA2-yBDjgMY_.js +0 -1
  694. package/dist/domains/dashboard/web/assets/demo-DQyfozbi.js +0 -1
  695. package/dist/domains/dashboard/web/assets/index-BLAfkNTu.css +0 -1
  696. package/dist/domains/dashboard/web/assets/index-DtLUOcAW.js +0 -24
  697. package/dist/domains/dashboard/web/assets/stateDiagram-v2-BHNVJYJU-DGrsmWts.js +0 -1
  698. package/eval/.env.example +0 -52
  699. package/eval/langsmith/.env.example +0 -16
@@ -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(TREATMENTS, key=len, reverse=True):
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