@rpamis/comet 0.4.0-beta.3 → 0.4.0-beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (605) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +15 -1
  3. package/assets/manifest.json +2 -1
  4. package/assets/skills/comet/SKILL.md +54 -28
  5. package/assets/skills/comet/reference/auto-transition.md +1 -1
  6. package/assets/skills/comet/reference/comet-yaml-fields.md +11 -6
  7. package/assets/skills/comet/reference/context-recovery.md +12 -2
  8. package/assets/skills/comet/reference/decision-point.md +11 -0
  9. package/assets/skills/comet/reference/scripts.md +47 -15
  10. package/assets/skills/comet/reference/subagent-dispatch.md +6 -5
  11. package/assets/skills/comet/rules/comet-phase-guard.en.md +31 -28
  12. package/assets/skills/comet/rules/comet-phase-guard.md +31 -29
  13. package/assets/skills/comet/scripts/comet-resume-probe.mjs +3 -0
  14. package/assets/skills/comet/scripts/comet-runtime.mjs +1568 -476
  15. package/assets/skills/comet-any/SKILL.md +1 -1
  16. package/assets/skills/comet-any/reference/authored-zone-example.md +10 -5
  17. package/assets/skills/comet-any/reference/subagents/pause-points-author.md +14 -11
  18. package/assets/skills/comet-any/reference/subagents/skill-reviewer.md +2 -0
  19. package/assets/skills/comet-any/reference/subagents/workflow-entry-author.md +5 -4
  20. package/assets/skills/comet-archive/SKILL.md +52 -18
  21. package/assets/skills/comet-build/SKILL.md +64 -45
  22. package/assets/skills/comet-design/SKILL.md +24 -22
  23. package/assets/skills/comet-hotfix/SKILL.md +37 -34
  24. package/assets/skills/comet-open/SKILL.md +106 -57
  25. package/assets/skills/comet-tweak/SKILL.md +23 -18
  26. package/assets/skills/comet-verify/SKILL.md +57 -72
  27. package/assets/skills-zh/comet/SKILL.md +54 -28
  28. package/assets/skills-zh/comet/reference/auto-transition.md +1 -1
  29. package/assets/skills-zh/comet/reference/comet-yaml-fields.md +11 -6
  30. package/assets/skills-zh/comet/reference/context-recovery.md +12 -2
  31. package/assets/skills-zh/comet/reference/decision-point.md +11 -0
  32. package/assets/skills-zh/comet/reference/scripts.md +47 -15
  33. package/assets/skills-zh/comet/reference/subagent-dispatch.md +6 -5
  34. package/assets/skills-zh/comet-any/SKILL.md +1 -1
  35. package/assets/skills-zh/comet-any/reference/authored-zone-example.md +10 -5
  36. package/assets/skills-zh/comet-any/reference/subagents/pause-points-author.md +14 -12
  37. package/assets/skills-zh/comet-any/reference/subagents/skill-reviewer.md +2 -0
  38. package/assets/skills-zh/comet-any/reference/subagents/workflow-entry-author.md +5 -4
  39. package/assets/skills-zh/comet-archive/SKILL.md +52 -18
  40. package/assets/skills-zh/comet-build/SKILL.md +64 -45
  41. package/assets/skills-zh/comet-design/SKILL.md +24 -22
  42. package/assets/skills-zh/comet-hotfix/SKILL.md +36 -33
  43. package/assets/skills-zh/comet-open/SKILL.md +105 -56
  44. package/assets/skills-zh/comet-tweak/SKILL.md +22 -17
  45. package/assets/skills-zh/comet-verify/SKILL.md +57 -72
  46. package/dist/app/cli/comet-banner.d.ts +25 -0
  47. package/dist/app/cli/comet-banner.d.ts.map +1 -0
  48. package/dist/app/cli/comet-banner.js +265 -0
  49. package/dist/app/cli/comet-banner.js.map +1 -0
  50. package/dist/app/cli/index.js +36 -2
  51. package/dist/app/cli/index.js.map +1 -1
  52. package/dist/app/commands/classic.d.ts +4 -0
  53. package/dist/app/commands/classic.d.ts.map +1 -0
  54. package/dist/app/commands/classic.js +11 -0
  55. package/dist/app/commands/classic.js.map +1 -0
  56. package/dist/app/commands/doctor.d.ts.map +1 -1
  57. package/dist/app/commands/doctor.js +99 -37
  58. package/dist/app/commands/doctor.js.map +1 -1
  59. package/dist/app/commands/eval.d.ts.map +1 -1
  60. package/dist/app/commands/eval.js +57 -20
  61. package/dist/app/commands/eval.js.map +1 -1
  62. package/dist/app/commands/i18n.d.ts +1 -1
  63. package/dist/app/commands/i18n.d.ts.map +1 -1
  64. package/dist/app/commands/i18n.js +12 -4
  65. package/dist/app/commands/i18n.js.map +1 -1
  66. package/dist/app/commands/init.d.ts +1 -1
  67. package/dist/app/commands/init.d.ts.map +1 -1
  68. package/dist/app/commands/init.js +72 -25
  69. package/dist/app/commands/init.js.map +1 -1
  70. package/dist/app/commands/project-scope-selection.d.ts +13 -0
  71. package/dist/app/commands/project-scope-selection.d.ts.map +1 -0
  72. package/dist/app/commands/project-scope-selection.js +33 -0
  73. package/dist/app/commands/project-scope-selection.js.map +1 -0
  74. package/dist/app/commands/resume-probe.d.ts +11 -0
  75. package/dist/app/commands/resume-probe.d.ts.map +1 -0
  76. package/dist/app/commands/resume-probe.js +63 -0
  77. package/dist/app/commands/resume-probe.js.map +1 -0
  78. package/dist/app/commands/status.d.ts +31 -0
  79. package/dist/app/commands/status.d.ts.map +1 -1
  80. package/dist/app/commands/status.js +109 -20
  81. package/dist/app/commands/status.js.map +1 -1
  82. package/dist/app/commands/uninstall.d.ts +5 -0
  83. package/dist/app/commands/uninstall.d.ts.map +1 -1
  84. package/dist/app/commands/uninstall.js +264 -53
  85. package/dist/app/commands/uninstall.js.map +1 -1
  86. package/dist/app/commands/update.d.ts +6 -0
  87. package/dist/app/commands/update.d.ts.map +1 -1
  88. package/dist/app/commands/update.js +558 -86
  89. package/dist/app/commands/update.js.map +1 -1
  90. package/dist/config/repository-layout.json +4 -2
  91. package/dist/domains/bundle/bundle-platform.d.ts +1 -0
  92. package/dist/domains/bundle/bundle-platform.d.ts.map +1 -1
  93. package/dist/domains/bundle/bundle-platform.js +9 -3
  94. package/dist/domains/bundle/bundle-platform.js.map +1 -1
  95. package/dist/domains/bundle/eval-manifest-runtime.d.ts +6 -0
  96. package/dist/domains/bundle/eval-manifest-runtime.d.ts.map +1 -0
  97. package/dist/domains/bundle/eval-manifest-runtime.js +58 -0
  98. package/dist/domains/bundle/eval-manifest-runtime.js.map +1 -0
  99. package/dist/domains/bundle/types.d.ts +1 -1
  100. package/dist/domains/bundle/types.d.ts.map +1 -1
  101. package/dist/domains/comet-classic/classic-archive.d.ts +1 -0
  102. package/dist/domains/comet-classic/classic-archive.d.ts.map +1 -1
  103. package/dist/domains/comet-classic/classic-archive.js +35 -38
  104. package/dist/domains/comet-classic/classic-archive.js.map +1 -1
  105. package/dist/domains/comet-classic/classic-cli.d.ts +1 -1
  106. package/dist/domains/comet-classic/classic-cli.d.ts.map +1 -1
  107. package/dist/domains/comet-classic/classic-cli.js +3 -0
  108. package/dist/domains/comet-classic/classic-cli.js.map +1 -1
  109. package/dist/domains/comet-classic/classic-command-checks.d.ts +20 -0
  110. package/dist/domains/comet-classic/classic-command-checks.d.ts.map +1 -0
  111. package/dist/domains/comet-classic/classic-command-checks.js +97 -0
  112. package/dist/domains/comet-classic/classic-command-checks.js.map +1 -0
  113. package/dist/domains/comet-classic/classic-current-change.d.ts +19 -0
  114. package/dist/domains/comet-classic/classic-current-change.d.ts.map +1 -0
  115. package/dist/domains/comet-classic/classic-current-change.js +132 -0
  116. package/dist/domains/comet-classic/classic-current-change.js.map +1 -0
  117. package/dist/domains/comet-classic/classic-diagnostics.d.ts +2 -1
  118. package/dist/domains/comet-classic/classic-diagnostics.d.ts.map +1 -1
  119. package/dist/domains/comet-classic/classic-diagnostics.js +54 -1
  120. package/dist/domains/comet-classic/classic-diagnostics.js.map +1 -1
  121. package/dist/domains/comet-classic/classic-evidence.d.ts.map +1 -1
  122. package/dist/domains/comet-classic/classic-evidence.js +4 -0
  123. package/dist/domains/comet-classic/classic-evidence.js.map +1 -1
  124. package/dist/domains/comet-classic/classic-guard.d.ts.map +1 -1
  125. package/dist/domains/comet-classic/classic-guard.js +83 -80
  126. package/dist/domains/comet-classic/classic-guard.js.map +1 -1
  127. package/dist/domains/comet-classic/classic-hook-guard.d.ts.map +1 -1
  128. package/dist/domains/comet-classic/classic-hook-guard.js +179 -42
  129. package/dist/domains/comet-classic/classic-hook-guard.js.map +1 -1
  130. package/dist/domains/comet-classic/classic-project-config.d.ts +16 -0
  131. package/dist/domains/comet-classic/classic-project-config.d.ts.map +1 -0
  132. package/dist/domains/comet-classic/classic-project-config.js +40 -0
  133. package/dist/domains/comet-classic/classic-project-config.js.map +1 -0
  134. package/dist/domains/comet-classic/classic-resolver.d.ts.map +1 -1
  135. package/dist/domains/comet-classic/classic-resolver.js +4 -4
  136. package/dist/domains/comet-classic/classic-resolver.js.map +1 -1
  137. package/dist/domains/comet-classic/classic-resume-probe-command.d.ts +3 -0
  138. package/dist/domains/comet-classic/classic-resume-probe-command.d.ts.map +1 -0
  139. package/dist/domains/comet-classic/classic-resume-probe-command.js +58 -0
  140. package/dist/domains/comet-classic/classic-resume-probe-command.js.map +1 -0
  141. package/dist/domains/comet-classic/classic-resume-probe-entry.d.ts +2 -0
  142. package/dist/domains/comet-classic/classic-resume-probe-entry.d.ts.map +1 -0
  143. package/dist/domains/comet-classic/classic-resume-probe-entry.js +4 -0
  144. package/dist/domains/comet-classic/classic-resume-probe-entry.js.map +1 -0
  145. package/dist/domains/comet-classic/classic-resume-probe.d.ts +29 -0
  146. package/dist/domains/comet-classic/classic-resume-probe.d.ts.map +1 -0
  147. package/dist/domains/comet-classic/classic-resume-probe.js +386 -0
  148. package/dist/domains/comet-classic/classic-resume-probe.js.map +1 -0
  149. package/dist/domains/comet-classic/classic-runtime-run.d.ts +2 -1
  150. package/dist/domains/comet-classic/classic-runtime-run.d.ts.map +1 -1
  151. package/dist/domains/comet-classic/classic-runtime-run.js +38 -0
  152. package/dist/domains/comet-classic/classic-runtime-run.js.map +1 -1
  153. package/dist/domains/comet-classic/classic-state-command.d.ts.map +1 -1
  154. package/dist/domains/comet-classic/classic-state-command.js +150 -25
  155. package/dist/domains/comet-classic/classic-state-command.js.map +1 -1
  156. package/dist/domains/comet-classic/classic-state.d.ts +5 -2
  157. package/dist/domains/comet-classic/classic-state.d.ts.map +1 -1
  158. package/dist/domains/comet-classic/classic-state.js +17 -1
  159. package/dist/domains/comet-classic/classic-state.js.map +1 -1
  160. package/dist/domains/comet-classic/classic-store.d.ts +4 -1
  161. package/dist/domains/comet-classic/classic-store.d.ts.map +1 -1
  162. package/dist/domains/comet-classic/classic-store.js +4 -3
  163. package/dist/domains/comet-classic/classic-store.js.map +1 -1
  164. package/dist/domains/comet-classic/classic-transitions.d.ts +1 -1
  165. package/dist/domains/comet-classic/classic-transitions.d.ts.map +1 -1
  166. package/dist/domains/comet-classic/classic-transitions.js +36 -3
  167. package/dist/domains/comet-classic/classic-transitions.js.map +1 -1
  168. package/dist/domains/comet-classic/classic-validate-command.d.ts.map +1 -1
  169. package/dist/domains/comet-classic/classic-validate-command.js +8 -1
  170. package/dist/domains/comet-classic/classic-validate-command.js.map +1 -1
  171. package/dist/domains/comet-classic/index.d.ts +3 -0
  172. package/dist/domains/comet-classic/index.d.ts.map +1 -1
  173. package/dist/domains/comet-classic/index.js +3 -0
  174. package/dist/domains/comet-classic/index.js.map +1 -1
  175. package/dist/domains/dashboard/collector.js +10 -2
  176. package/dist/domains/dashboard/collector.js.map +1 -1
  177. package/dist/domains/dashboard/web/assets/_commonjsHelpers-CqkleIqs.js +1 -0
  178. package/dist/domains/dashboard/web/assets/arc-TGVUG2WN.js +1 -0
  179. package/dist/domains/dashboard/web/assets/architectureDiagram-3BPJPVTR-ASHmiHoP.js +36 -0
  180. package/dist/domains/dashboard/web/assets/blockDiagram-GPEHLZMM-CwASxBKe.js +132 -0
  181. package/dist/domains/dashboard/web/assets/c4Diagram-AAUBKEIU-BU8z_WNk.js +10 -0
  182. package/dist/domains/dashboard/web/assets/channel-kp6Ng2JJ.js +1 -0
  183. package/dist/domains/dashboard/web/assets/chunk-2J33WTMH-CBGlUx4_.js +1 -0
  184. package/dist/domains/dashboard/web/assets/chunk-4BX2VUAB-CS-iGcFz.js +1 -0
  185. package/dist/domains/dashboard/web/assets/chunk-55IACEB6-BUtCVJat.js +1 -0
  186. package/dist/domains/dashboard/web/assets/chunk-727SXJPM-C94tj_pf.js +206 -0
  187. package/dist/domains/dashboard/web/assets/chunk-AQP2D5EJ-BFOKcpdG.js +231 -0
  188. package/dist/domains/dashboard/web/assets/chunk-FMBD7UC4-Dmx8B-st.js +15 -0
  189. package/dist/domains/dashboard/web/assets/chunk-ND2GUHAM-DYV00CNn.js +1 -0
  190. package/dist/domains/dashboard/web/assets/chunk-QZHKN3VN-DMJJyQnw.js +1 -0
  191. package/dist/domains/dashboard/web/assets/classDiagram-4FO5ZUOK-yBDjgMY_.js +1 -0
  192. package/dist/domains/dashboard/web/assets/classDiagram-v2-Q7XG4LA2-yBDjgMY_.js +1 -0
  193. package/dist/domains/dashboard/web/assets/cose-bilkent-S5V4N54A-P4nE2rea.js +1 -0
  194. package/dist/domains/dashboard/web/assets/cynefin-VYW2F7L2-C-R1HXDv.js +166 -0
  195. package/dist/domains/dashboard/web/assets/cytoscape.esm-D3_iZ_3b.js +321 -0
  196. package/dist/domains/dashboard/web/assets/dagre-BM42HDAG-BH8d-C9z.js +4 -0
  197. package/dist/domains/dashboard/web/assets/defaultLocale-DX6XiGOO.js +1 -0
  198. package/dist/domains/dashboard/web/assets/diagram-2AECGRRQ-DpXTgQIH.js +43 -0
  199. package/dist/domains/dashboard/web/assets/diagram-5GNKFQAL-DSiFJzSw.js +10 -0
  200. package/dist/domains/dashboard/web/assets/diagram-KO2AKTUF-DULMkben.js +3 -0
  201. package/dist/domains/dashboard/web/assets/diagram-LMA3HP47-Pi8m_NO9.js +24 -0
  202. package/dist/domains/dashboard/web/assets/diagram-OG6HWLK6-BSe6bCWm.js +24 -0
  203. package/dist/domains/dashboard/web/assets/erDiagram-TEJ5UH35-zb-FEcbq.js +85 -0
  204. package/dist/domains/dashboard/web/assets/flowDiagram-I6XJVG4X-Dr-Gk0z2.js +162 -0
  205. package/dist/domains/dashboard/web/assets/ganttDiagram-6RSMTGT7-qs6Zb2A6.js +292 -0
  206. package/dist/domains/dashboard/web/assets/gitGraphDiagram-PVQCEYII-BQ314orT.js +106 -0
  207. package/dist/domains/dashboard/web/assets/graph--OzhPTMs.js +1 -0
  208. package/dist/domains/dashboard/web/assets/index-BLAfkNTu.css +1 -0
  209. package/dist/domains/dashboard/web/assets/index-DlSYK56b.js +139 -0
  210. package/dist/domains/dashboard/web/assets/index-DtLUOcAW.js +24 -0
  211. package/dist/domains/dashboard/web/assets/index-QO0z6F4w.js +10 -0
  212. package/dist/domains/dashboard/web/assets/infoDiagram-5YYISTIA-O0bQp98A.js +2 -0
  213. package/dist/domains/dashboard/web/assets/init-Gi6I4Gst.js +1 -0
  214. package/dist/domains/dashboard/web/assets/ishikawaDiagram-YF4QCWOH-BPC7wbKh.js +70 -0
  215. package/dist/domains/dashboard/web/assets/journeyDiagram-JHISSGLW-ohViOd4b.js +139 -0
  216. package/dist/domains/dashboard/web/assets/kanban-definition-UN3LZRKU-CHleNdbG.js +89 -0
  217. package/dist/domains/dashboard/web/assets/katex-HP8lGamR.js +257 -0
  218. package/dist/domains/dashboard/web/assets/layout-SsrduOYp.js +1 -0
  219. package/dist/domains/dashboard/web/assets/linear-CyqiW--Q.js +1 -0
  220. package/dist/domains/dashboard/web/assets/marked.esm-DECB3bxB.js +64 -0
  221. package/dist/domains/dashboard/web/assets/mermaid.core-qS9XvtaK.js +301 -0
  222. package/dist/domains/dashboard/web/assets/mindmap-definition-RKZ34NQL-oaGkqO9l.js +96 -0
  223. package/dist/domains/dashboard/web/assets/ordinal-Cboi1Yqb.js +1 -0
  224. package/dist/domains/dashboard/web/assets/pieDiagram-4H26LBE5-CPcB-AFh.js +30 -0
  225. package/dist/domains/dashboard/web/assets/purify.es-VaSPOPhr.js +3 -0
  226. package/dist/domains/dashboard/web/assets/quadrantDiagram-W4KKPZXB-LFy52Qtj.js +7 -0
  227. package/dist/domains/dashboard/web/assets/requirementDiagram-4Y6WPE33-BdjeaYP_.js +84 -0
  228. package/dist/domains/dashboard/web/assets/sankeyDiagram-5OEKKPKP-DDJ4styL.js +40 -0
  229. package/dist/domains/dashboard/web/assets/sequenceDiagram-3UESZ5HK-BL5bFNoz.js +162 -0
  230. package/dist/domains/dashboard/web/assets/stateDiagram-AJRCARHV-BNUfikui.js +1 -0
  231. package/dist/domains/dashboard/web/assets/stateDiagram-v2-BHNVJYJU-DGrsmWts.js +1 -0
  232. package/dist/domains/dashboard/web/assets/timeline-definition-PNZ67QCA--ps2uu6L.js +120 -0
  233. package/dist/domains/dashboard/web/assets/vennDiagram-CIIHVFJN-C2q8q26c.js +34 -0
  234. package/dist/domains/dashboard/web/assets/wardleyDiagram-YWT4CUSO-BUH9gXqd.js +78 -0
  235. package/dist/domains/dashboard/web/assets/xychartDiagram-2RQKCTM6-B-DielEy.js +7 -0
  236. package/dist/domains/dashboard/web/index.html +16 -16
  237. package/dist/domains/engine/types.d.ts +1 -1
  238. package/dist/domains/engine/types.d.ts.map +1 -1
  239. package/dist/domains/factory/package.d.ts.map +1 -1
  240. package/dist/domains/factory/package.js +20 -6
  241. package/dist/domains/factory/package.js.map +1 -1
  242. package/dist/domains/integrations/openspec.d.ts +4 -1
  243. package/dist/domains/integrations/openspec.d.ts.map +1 -1
  244. package/dist/domains/integrations/openspec.js +62 -10
  245. package/dist/domains/integrations/openspec.js.map +1 -1
  246. package/dist/domains/skill/find.d.ts.map +1 -1
  247. package/dist/domains/skill/find.js +1 -6
  248. package/dist/domains/skill/find.js.map +1 -1
  249. package/dist/domains/skill/json-object.d.ts +13 -0
  250. package/dist/domains/skill/json-object.d.ts.map +1 -0
  251. package/dist/domains/skill/json-object.js +24 -0
  252. package/dist/domains/skill/json-object.js.map +1 -0
  253. package/dist/domains/skill/managed-markdown.d.ts +14 -0
  254. package/dist/domains/skill/managed-markdown.d.ts.map +1 -0
  255. package/dist/domains/skill/managed-markdown.js +126 -0
  256. package/dist/domains/skill/managed-markdown.js.map +1 -0
  257. package/dist/domains/skill/platform-inspect.d.ts +9 -0
  258. package/dist/domains/skill/platform-inspect.d.ts.map +1 -0
  259. package/dist/domains/skill/platform-inspect.js +149 -0
  260. package/dist/domains/skill/platform-inspect.js.map +1 -0
  261. package/dist/domains/skill/platform-install.d.ts +20 -9
  262. package/dist/domains/skill/platform-install.d.ts.map +1 -1
  263. package/dist/domains/skill/platform-install.js +356 -153
  264. package/dist/domains/skill/platform-install.js.map +1 -1
  265. package/dist/domains/skill/project-instructions.d.ts +22 -0
  266. package/dist/domains/skill/project-instructions.d.ts.map +1 -0
  267. package/dist/domains/skill/project-instructions.js +61 -0
  268. package/dist/domains/skill/project-instructions.js.map +1 -0
  269. package/dist/domains/skill/uninstall.d.ts +3 -1
  270. package/dist/domains/skill/uninstall.d.ts.map +1 -1
  271. package/dist/domains/skill/uninstall.js +259 -149
  272. package/dist/domains/skill/uninstall.js.map +1 -1
  273. package/dist/platform/fs/file-system.d.ts +3 -3
  274. package/dist/platform/fs/file-system.d.ts.map +1 -1
  275. package/dist/platform/fs/file-system.js +21 -11
  276. package/dist/platform/fs/file-system.js.map +1 -1
  277. package/dist/platform/install/detect.d.ts +2 -1
  278. package/dist/platform/install/detect.d.ts.map +1 -1
  279. package/dist/platform/install/detect.js +10 -1
  280. package/dist/platform/install/detect.js.map +1 -1
  281. package/dist/platform/install/platforms.d.ts +9 -1
  282. package/dist/platform/install/platforms.d.ts.map +1 -1
  283. package/dist/platform/install/platforms.js +23 -4
  284. package/dist/platform/install/platforms.js.map +1 -1
  285. package/dist/platform/install/project-registry.d.ts +38 -0
  286. package/dist/platform/install/project-registry.d.ts.map +1 -0
  287. package/dist/platform/install/project-registry.js +213 -0
  288. package/dist/platform/install/project-registry.js.map +1 -0
  289. package/dist/platform/install/skill-root-owner.d.ts +15 -0
  290. package/dist/platform/install/skill-root-owner.d.ts.map +1 -0
  291. package/dist/platform/install/skill-root-owner.js +68 -0
  292. package/dist/platform/install/skill-root-owner.js.map +1 -0
  293. package/eval/.env.example +52 -0
  294. package/eval/CLAUDE.md +43 -0
  295. package/eval/README.md +538 -0
  296. package/eval/langsmith/.env.example +16 -0
  297. package/eval/langsmith/README.md +93 -0
  298. package/eval/langsmith/skills/README.md +5 -0
  299. package/eval/langsmith/tasks/README.md +5 -0
  300. package/eval/langsmith/tests/conftest.py +187 -0
  301. package/eval/langsmith/tests/tasks/test_tasks.py +287 -0
  302. package/eval/langsmith/treatments/README.md +5 -0
  303. package/eval/local/README.md +80 -0
  304. package/eval/local/regression_baseline.json +13 -0
  305. package/eval/local/report-style-demo-assets/quality_cost.en.svg +41 -0
  306. package/eval/local/report-style-demo-assets/quality_cost.zh.svg +41 -0
  307. package/eval/local/report-style-demo-assets/rubric_delta.en.svg +56 -0
  308. package/eval/local/report-style-demo-assets/rubric_delta.zh.svg +56 -0
  309. package/eval/local/report-style-demo-assets/task_outcomes.en.svg +46 -0
  310. package/eval/local/report-style-demo-assets/task_outcomes.zh.svg +46 -0
  311. package/eval/local/report-style-demo.html +867 -0
  312. package/eval/local/scripts/compare_baselines.py +1018 -0
  313. package/eval/local/scripts/generate_report_style_demo_charts.py +322 -0
  314. package/eval/local/scripts/regression_check.py +171 -0
  315. package/eval/local/scripts/render_readme_benchmark_figures.py +416 -0
  316. package/eval/local/scripts/rescore_rubric.py +120 -0
  317. package/eval/local/skills/benchmarks/039-release/comet-classic-039/SKILL.md +282 -0
  318. package/eval/local/skills/benchmarks/039-release/comet-classic-039/reference/auto-transition.md +27 -0
  319. package/eval/local/skills/benchmarks/039-release/comet-classic-039/reference/comet-yaml-fields.md +68 -0
  320. package/eval/local/skills/benchmarks/039-release/comet-classic-039/reference/context-recovery.md +35 -0
  321. package/eval/local/skills/benchmarks/039-release/comet-classic-039/reference/debug-gate.md +17 -0
  322. package/eval/local/skills/benchmarks/039-release/comet-classic-039/reference/decision-point.md +20 -0
  323. package/eval/local/skills/benchmarks/039-release/comet-classic-039/reference/dirty-worktree.md +59 -0
  324. package/eval/local/skills/benchmarks/039-release/comet-classic-039/reference/file-structure.md +28 -0
  325. package/eval/local/skills/benchmarks/039-release/comet-classic-039/reference/subagent-dispatch.md +113 -0
  326. package/eval/local/skills/benchmarks/039-release/comet-classic-039/rules/comet-phase-guard.md +125 -0
  327. package/eval/local/skills/benchmarks/039-release/comet-classic-039/scripts/comet-archive.sh +311 -0
  328. package/eval/local/skills/benchmarks/039-release/comet-classic-039/scripts/comet-env.sh +110 -0
  329. package/eval/local/skills/benchmarks/039-release/comet-classic-039/scripts/comet-guard.sh +778 -0
  330. package/eval/local/skills/benchmarks/039-release/comet-classic-039/scripts/comet-handoff.sh +390 -0
  331. package/eval/local/skills/benchmarks/039-release/comet-classic-039/scripts/comet-hook-guard.sh +336 -0
  332. package/eval/local/skills/benchmarks/039-release/comet-classic-039/scripts/comet-state.sh +1338 -0
  333. package/eval/local/skills/benchmarks/039-release/comet-classic-039/scripts/comet-yaml-validate.sh +225 -0
  334. package/eval/local/skills/benchmarks/039-release/comet-classic-039-archive/SKILL.md +100 -0
  335. package/eval/local/skills/benchmarks/039-release/comet-classic-039-build/SKILL.md +304 -0
  336. package/eval/local/skills/benchmarks/039-release/comet-classic-039-design/SKILL.md +263 -0
  337. package/eval/local/skills/benchmarks/039-release/comet-classic-039-hotfix/SKILL.md +204 -0
  338. package/eval/local/skills/benchmarks/039-release/comet-classic-039-open/SKILL.md +220 -0
  339. package/eval/local/skills/benchmarks/039-release/comet-classic-039-tweak/SKILL.md +180 -0
  340. package/eval/local/skills/benchmarks/039-release/comet-classic-039-verify/SKILL.md +234 -0
  341. package/eval/local/skills/benchmarks/040-beta/comet/SKILL.md +261 -0
  342. package/eval/local/skills/benchmarks/040-beta/comet/reference/auto-transition.md +27 -0
  343. package/eval/local/skills/benchmarks/040-beta/comet/reference/comet-yaml-fields.md +73 -0
  344. package/eval/local/skills/benchmarks/040-beta/comet/reference/context-recovery.md +45 -0
  345. package/eval/local/skills/benchmarks/040-beta/comet/reference/debug-gate.md +33 -0
  346. package/eval/local/skills/benchmarks/040-beta/comet/reference/decision-point.md +31 -0
  347. package/eval/local/skills/benchmarks/040-beta/comet/reference/dirty-worktree.md +59 -0
  348. package/eval/local/skills/benchmarks/040-beta/comet/reference/file-structure.md +28 -0
  349. package/eval/local/skills/benchmarks/040-beta/comet/reference/intent-frame.md +74 -0
  350. package/eval/local/skills/benchmarks/040-beta/comet/reference/scripts.md +69 -0
  351. package/eval/local/skills/benchmarks/040-beta/comet/reference/subagent-dispatch.md +169 -0
  352. package/eval/local/skills/benchmarks/040-beta/comet/rules/comet-phase-guard.md +130 -0
  353. package/eval/local/skills/benchmarks/040-beta/comet/runtime/classic/checks.yaml +6 -0
  354. package/eval/local/skills/benchmarks/040-beta/comet/runtime/classic/guardrails.yaml +13 -0
  355. package/eval/local/skills/benchmarks/040-beta/comet/runtime/classic/skill.yaml +122 -0
  356. package/eval/local/skills/benchmarks/040-beta/comet/scripts/comet-archive.mjs +9515 -0
  357. package/eval/local/skills/benchmarks/040-beta/comet/scripts/comet-env.mjs +15 -0
  358. package/eval/local/skills/benchmarks/040-beta/comet/scripts/comet-guard.mjs +10173 -0
  359. package/eval/local/skills/benchmarks/040-beta/comet/scripts/comet-handoff.mjs +9491 -0
  360. package/eval/local/skills/benchmarks/040-beta/comet/scripts/comet-hook-guard.mjs +9175 -0
  361. package/eval/local/skills/benchmarks/040-beta/comet/scripts/comet-intent.mjs +404 -0
  362. package/eval/local/skills/benchmarks/040-beta/comet/scripts/comet-state.mjs +9273 -0
  363. package/eval/local/skills/benchmarks/040-beta/comet/scripts/comet-yaml-validate.mjs +7627 -0
  364. package/eval/local/skills/benchmarks/040-beta/comet-archive/SKILL.md +110 -0
  365. package/eval/local/skills/benchmarks/040-beta/comet-build/SKILL.md +315 -0
  366. package/eval/local/skills/benchmarks/040-beta/comet-design/SKILL.md +260 -0
  367. package/eval/local/skills/benchmarks/040-beta/comet-hotfix/SKILL.md +190 -0
  368. package/eval/local/skills/benchmarks/040-beta/comet-open/SKILL.md +210 -0
  369. package/eval/local/skills/benchmarks/040-beta/comet-tweak/SKILL.md +183 -0
  370. package/eval/local/skills/benchmarks/040-beta/comet-verify/SKILL.md +230 -0
  371. package/eval/local/skills/benchmarks/dependency/claude-md/comet-workflow/CLAUDE.md +12 -0
  372. package/eval/local/skills/benchmarks/dependency/openspec/openspec-apply-change/SKILL.md +156 -0
  373. package/eval/local/skills/benchmarks/dependency/openspec/openspec-archive-change/SKILL.md +114 -0
  374. package/eval/local/skills/benchmarks/dependency/openspec/openspec-bulk-archive-change/SKILL.md +246 -0
  375. package/eval/local/skills/benchmarks/dependency/openspec/openspec-continue-change/SKILL.md +118 -0
  376. package/eval/local/skills/benchmarks/dependency/openspec/openspec-explore/SKILL.md +288 -0
  377. package/eval/local/skills/benchmarks/dependency/openspec/openspec-ff-change/SKILL.md +101 -0
  378. package/eval/local/skills/benchmarks/dependency/openspec/openspec-new-change/SKILL.md +74 -0
  379. package/eval/local/skills/benchmarks/dependency/openspec/openspec-onboard/SKILL.md +554 -0
  380. package/eval/local/skills/benchmarks/dependency/openspec/openspec-propose/SKILL.md +110 -0
  381. package/eval/local/skills/benchmarks/dependency/openspec/openspec-sync-specs/SKILL.md +138 -0
  382. package/eval/local/skills/benchmarks/dependency/openspec/openspec-verify-change/SKILL.md +168 -0
  383. package/eval/local/skills/benchmarks/dependency/superpowers/brainstorming/SKILL.md +159 -0
  384. package/eval/local/skills/benchmarks/dependency/superpowers/brainstorming/scripts/frame-template.html +213 -0
  385. package/eval/local/skills/benchmarks/dependency/superpowers/brainstorming/scripts/helper.js +167 -0
  386. package/eval/local/skills/benchmarks/dependency/superpowers/brainstorming/scripts/server.cjs +723 -0
  387. package/eval/local/skills/benchmarks/dependency/superpowers/brainstorming/scripts/start-server.sh +209 -0
  388. package/eval/local/skills/benchmarks/dependency/superpowers/brainstorming/scripts/stop-server.sh +120 -0
  389. package/eval/local/skills/benchmarks/dependency/superpowers/brainstorming/spec-document-reviewer-prompt.md +49 -0
  390. package/eval/local/skills/benchmarks/dependency/superpowers/brainstorming/visual-companion.md +291 -0
  391. package/eval/local/skills/benchmarks/dependency/superpowers/dispatching-parallel-agents/SKILL.md +185 -0
  392. package/eval/local/skills/benchmarks/dependency/superpowers/executing-plans/SKILL.md +70 -0
  393. package/eval/local/skills/benchmarks/dependency/superpowers/finishing-a-development-branch/SKILL.md +241 -0
  394. package/eval/local/skills/benchmarks/dependency/superpowers/receiving-code-review/SKILL.md +213 -0
  395. package/eval/local/skills/benchmarks/dependency/superpowers/requesting-code-review/SKILL.md +103 -0
  396. package/eval/local/skills/benchmarks/dependency/superpowers/requesting-code-review/code-reviewer.md +172 -0
  397. package/eval/local/skills/benchmarks/dependency/superpowers/subagent-driven-development/SKILL.md +418 -0
  398. package/eval/local/skills/benchmarks/dependency/superpowers/subagent-driven-development/implementer-prompt.md +139 -0
  399. package/eval/local/skills/benchmarks/dependency/superpowers/subagent-driven-development/scripts/review-package +44 -0
  400. package/eval/local/skills/benchmarks/dependency/superpowers/subagent-driven-development/scripts/sdd-workspace +22 -0
  401. package/eval/local/skills/benchmarks/dependency/superpowers/subagent-driven-development/scripts/task-brief +40 -0
  402. package/eval/local/skills/benchmarks/dependency/superpowers/subagent-driven-development/task-reviewer-prompt.md +188 -0
  403. package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/CREATION-LOG.md +119 -0
  404. package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/SKILL.md +296 -0
  405. package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/condition-based-waiting-example.ts +158 -0
  406. package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/condition-based-waiting.md +115 -0
  407. package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/defense-in-depth.md +122 -0
  408. package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/find-polluter.sh +63 -0
  409. package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/root-cause-tracing.md +169 -0
  410. package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/test-academic.md +14 -0
  411. package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/test-pressure-1.md +58 -0
  412. package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/test-pressure-2.md +68 -0
  413. package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/test-pressure-3.md +69 -0
  414. package/eval/local/skills/benchmarks/dependency/superpowers/test-driven-development/SKILL.md +371 -0
  415. package/eval/local/skills/benchmarks/dependency/superpowers/test-driven-development/testing-anti-patterns.md +299 -0
  416. package/eval/local/skills/benchmarks/dependency/superpowers/using-git-worktrees/SKILL.md +202 -0
  417. package/eval/local/skills/benchmarks/dependency/superpowers/verification-before-completion/SKILL.md +139 -0
  418. package/eval/local/skills/benchmarks/dependency/superpowers/writing-plans/SKILL.md +174 -0
  419. package/eval/local/skills/benchmarks/dependency/superpowers/writing-plans/plan-document-reviewer-prompt.md +49 -0
  420. package/eval/local/skills/benchmarks/dependency/superpowers/writing-skills/SKILL.md +689 -0
  421. package/eval/local/skills/benchmarks/dependency/superpowers/writing-skills/anthropic-best-practices.md +1150 -0
  422. package/eval/local/skills/benchmarks/dependency/superpowers/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -0
  423. package/eval/local/skills/benchmarks/dependency/superpowers/writing-skills/graphviz-conventions.dot +172 -0
  424. package/eval/local/skills/benchmarks/dependency/superpowers/writing-skills/persuasion-principles.md +187 -0
  425. package/eval/local/skills/benchmarks/dependency/superpowers/writing-skills/render-graphs.js +168 -0
  426. package/eval/local/skills/benchmarks/dependency/superpowers/writing-skills/testing-skills-with-subagents.md +384 -0
  427. package/eval/local/tasks/authoring-skill-smoke/environment/Dockerfile +2 -0
  428. package/eval/local/tasks/authoring-skill-smoke/instruction.md +4 -0
  429. package/eval/local/tasks/authoring-skill-smoke/task.toml +21 -0
  430. package/eval/local/tasks/authoring-skill-smoke/validation/test_authoring_skill_smoke.py +54 -0
  431. package/eval/local/tasks/comet-agent-memory-routing/environment/Dockerfile +28 -0
  432. package/eval/local/tasks/comet-agent-memory-routing/environment/agent_system.py +40 -0
  433. package/eval/local/tasks/comet-agent-memory-routing/environment/test_agent_system.py +29 -0
  434. package/eval/local/tasks/comet-agent-memory-routing/instruction.md +20 -0
  435. package/eval/local/tasks/comet-agent-memory-routing/task.toml +24 -0
  436. package/eval/local/tasks/comet-agent-memory-routing/validation/test_agent_memory_routing.py +24 -0
  437. package/eval/local/tasks/comet-api-cache-ttl/environment/Dockerfile +39 -0
  438. package/eval/local/tasks/comet-api-cache-ttl/environment/cache.py +39 -0
  439. package/eval/local/tasks/comet-api-cache-ttl/environment/test_cache.py +81 -0
  440. package/eval/local/tasks/comet-api-cache-ttl/instruction.md +33 -0
  441. package/eval/local/tasks/comet-api-cache-ttl/task.toml +24 -0
  442. package/eval/local/tasks/comet-api-cache-ttl/validation/test_api_cache_ttl.py +58 -0
  443. package/eval/local/tasks/comet-cross-file-refactor/environment/Dockerfile +15 -0
  444. package/eval/local/tasks/comet-cross-file-refactor/environment/cli.py +13 -0
  445. package/eval/local/tasks/comet-cross-file-refactor/environment/counting.py +13 -0
  446. package/eval/local/tasks/comet-cross-file-refactor/environment/test_textkit.py +21 -0
  447. package/eval/local/tasks/comet-cross-file-refactor/instruction.md +16 -0
  448. package/eval/local/tasks/comet-cross-file-refactor/task.toml +20 -0
  449. package/eval/local/tasks/comet-cross-file-refactor/validation/test_cross_file_refactor.py +20 -0
  450. package/eval/local/tasks/comet-dependency-confusion/environment/Dockerfile +28 -0
  451. package/eval/local/tasks/comet-dependency-confusion/environment/app.py +8 -0
  452. package/eval/local/tasks/comet-dependency-confusion/environment/settings_loader.py +14 -0
  453. package/eval/local/tasks/comet-dependency-confusion/environment/test_settings_service.py +19 -0
  454. package/eval/local/tasks/comet-dependency-confusion/instruction.md +18 -0
  455. package/eval/local/tasks/comet-dependency-confusion/task.toml +24 -0
  456. package/eval/local/tasks/comet-dependency-confusion/validation/test_dependency_confusion.py +24 -0
  457. package/eval/local/tasks/comet-fix-median/environment/Dockerfile +50 -0
  458. package/eval/local/tasks/comet-fix-median/environment/stats.py +54 -0
  459. package/eval/local/tasks/comet-fix-median/environment/test_stats.py +68 -0
  460. package/eval/local/tasks/comet-fix-median/instruction.md +25 -0
  461. package/eval/local/tasks/comet-fix-median/task.toml +24 -0
  462. package/eval/local/tasks/comet-fix-median/validation/test_fix_median.py +60 -0
  463. package/eval/local/tasks/comet-framework-selection/environment/Dockerfile +28 -0
  464. package/eval/local/tasks/comet-framework-selection/environment/architecture.py +12 -0
  465. package/eval/local/tasks/comet-framework-selection/environment/test_architecture.py +30 -0
  466. package/eval/local/tasks/comet-framework-selection/instruction.md +22 -0
  467. package/eval/local/tasks/comet-framework-selection/task.toml +24 -0
  468. package/eval/local/tasks/comet-framework-selection/validation/test_framework_selection.py +24 -0
  469. package/eval/local/tasks/comet-full-workflow/environment/Dockerfile +53 -0
  470. package/eval/local/tasks/comet-full-workflow/environment/test_wordcount.py +29 -0
  471. package/eval/local/tasks/comet-full-workflow/environment/wordcount.py +40 -0
  472. package/eval/local/tasks/comet-full-workflow/instruction.md +18 -0
  473. package/eval/local/tasks/comet-full-workflow/task.toml +24 -0
  474. package/eval/local/tasks/comet-full-workflow/validation/test_full_workflow.py +171 -0
  475. package/eval/local/tasks/comet-graph-execution-review/environment/Dockerfile +28 -0
  476. package/eval/local/tasks/comet-graph-execution-review/environment/pipeline.py +19 -0
  477. package/eval/local/tasks/comet-graph-execution-review/environment/test_pipeline.py +53 -0
  478. package/eval/local/tasks/comet-graph-execution-review/instruction.md +21 -0
  479. package/eval/local/tasks/comet-graph-execution-review/task.toml +24 -0
  480. package/eval/local/tasks/comet-graph-execution-review/validation/test_graph_execution_review.py +24 -0
  481. package/eval/local/tasks/comet-human-approval-flow/environment/Dockerfile +15 -0
  482. package/eval/local/tasks/comet-human-approval-flow/environment/approvals.py +17 -0
  483. package/eval/local/tasks/comet-human-approval-flow/environment/test_approvals.py +30 -0
  484. package/eval/local/tasks/comet-human-approval-flow/instruction.md +15 -0
  485. package/eval/local/tasks/comet-human-approval-flow/task.toml +20 -0
  486. package/eval/local/tasks/comet-human-approval-flow/validation/test_human_approval_flow.py +20 -0
  487. package/eval/local/tasks/comet-layered-streaming-fix/environment/Dockerfile +20 -0
  488. package/eval/local/tasks/comet-layered-streaming-fix/environment/chat_app.py +19 -0
  489. package/eval/local/tasks/comet-layered-streaming-fix/environment/test_chat_app.py +15 -0
  490. package/eval/local/tasks/comet-layered-streaming-fix/instruction.md +14 -0
  491. package/eval/local/tasks/comet-layered-streaming-fix/task.toml +20 -0
  492. package/eval/local/tasks/comet-layered-streaming-fix/validation/test_layered_streaming_fix.py +20 -0
  493. package/eval/local/tasks/comet-noise-distractor/environment/Dockerfile +15 -0
  494. package/eval/local/tasks/comet-noise-distractor/environment/distractor.md +4 -0
  495. package/eval/local/tasks/comet-noise-distractor/environment/invoice.py +5 -0
  496. package/eval/local/tasks/comet-noise-distractor/environment/test_invoice.py +18 -0
  497. package/eval/local/tasks/comet-noise-distractor/instruction.md +17 -0
  498. package/eval/local/tasks/comet-noise-distractor/task.toml +20 -0
  499. package/eval/local/tasks/comet-noise-distractor/validation/test_noise_distractor.py +20 -0
  500. package/eval/local/tasks/comet-observability-env-template/environment/Dockerfile +15 -0
  501. package/eval/local/tasks/comet-observability-env-template/environment/env_writer.py +17 -0
  502. package/eval/local/tasks/comet-observability-env-template/environment/test_env_writer.py +17 -0
  503. package/eval/local/tasks/comet-observability-env-template/instruction.md +20 -0
  504. package/eval/local/tasks/comet-observability-env-template/task.toml +20 -0
  505. package/eval/local/tasks/comet-observability-env-template/validation/test_observability_env_template.py +46 -0
  506. package/eval/local/tasks/comet-perf-dedupe/environment/Dockerfile +39 -0
  507. package/eval/local/tasks/comet-perf-dedupe/environment/dedupe.py +22 -0
  508. package/eval/local/tasks/comet-perf-dedupe/environment/test_dedupe.py +43 -0
  509. package/eval/local/tasks/comet-perf-dedupe/instruction.md +25 -0
  510. package/eval/local/tasks/comet-perf-dedupe/task.toml +24 -0
  511. package/eval/local/tasks/comet-perf-dedupe/validation/test_perf_dedupe.py +40 -0
  512. package/eval/local/tasks/comet-persistence-threading/environment/Dockerfile +15 -0
  513. package/eval/local/tasks/comet-persistence-threading/environment/session_store.py +15 -0
  514. package/eval/local/tasks/comet-persistence-threading/environment/test_session_store.py +21 -0
  515. package/eval/local/tasks/comet-persistence-threading/instruction.md +14 -0
  516. package/eval/local/tasks/comet-persistence-threading/task.toml +20 -0
  517. package/eval/local/tasks/comet-persistence-threading/validation/test_persistence_threading.py +20 -0
  518. package/eval/local/tasks/comet-refactor-counter/environment/Dockerfile +39 -0
  519. package/eval/local/tasks/comet-refactor-counter/environment/test_text_processor.py +57 -0
  520. package/eval/local/tasks/comet-refactor-counter/environment/text_processor.py +49 -0
  521. package/eval/local/tasks/comet-refactor-counter/instruction.md +31 -0
  522. package/eval/local/tasks/comet-refactor-counter/task.toml +24 -0
  523. package/eval/local/tasks/comet-refactor-counter/validation/test_refactor_counter.py +75 -0
  524. package/eval/local/tasks/comet-robust-config/environment/Dockerfile +39 -0
  525. package/eval/local/tasks/comet-robust-config/environment/config_loader.py +56 -0
  526. package/eval/local/tasks/comet-robust-config/environment/test_config_loader.py +72 -0
  527. package/eval/local/tasks/comet-robust-config/instruction.md +30 -0
  528. package/eval/local/tasks/comet-robust-config/task.toml +24 -0
  529. package/eval/local/tasks/comet-robust-config/validation/test_robust_config.py +37 -0
  530. package/eval/local/tasks/generic-skill-smoke/environment/Dockerfile +2 -0
  531. package/eval/local/tasks/generic-skill-smoke/instruction.md +7 -0
  532. package/eval/local/tasks/generic-skill-smoke/task.toml +21 -0
  533. package/eval/local/tasks/generic-skill-smoke/validation/test_generic_skill_smoke.py +36 -0
  534. package/eval/local/tasks/index.yaml +155 -0
  535. package/eval/local/tasks/workflow-overlay-contract/environment/Dockerfile +5 -0
  536. package/eval/local/tasks/workflow-overlay-contract/instruction.md +5 -0
  537. package/eval/local/tasks/workflow-overlay-contract/task.toml +21 -0
  538. package/eval/local/tasks/workflow-overlay-contract/validation/test_workflow_overlay_contract.py +235 -0
  539. package/eval/local/tasks/workflow-route-conformance/environment/Dockerfile +2 -0
  540. package/eval/local/tasks/workflow-route-conformance/instruction.md +5 -0
  541. package/eval/local/tasks/workflow-route-conformance/task.toml +21 -0
  542. package/eval/local/tasks/workflow-route-conformance/validation/test_workflow_route_conformance.py +84 -0
  543. package/eval/local/tests/conftest.py +1148 -0
  544. package/eval/local/tests/scaffold/test_attribution.py +48 -0
  545. package/eval/local/tests/scaffold/test_compare_baselines.py +999 -0
  546. package/eval/local/tests/scaffold/test_conftest_helpers.py +534 -0
  547. package/eval/local/tests/scaffold/test_evidence.py +15 -0
  548. package/eval/local/tests/scaffold/test_langsmith_conftest.py +244 -0
  549. package/eval/local/tests/scaffold/test_logging.py +243 -0
  550. package/eval/local/tests/scaffold/test_manifests.py +132 -0
  551. package/eval/local/tests/scaffold/test_profiles.py +866 -0
  552. package/eval/local/tests/scaffold/test_regression_check.py +19 -0
  553. package/eval/local/tests/scaffold/test_report_style_demo_charts.py +45 -0
  554. package/eval/local/tests/scaffold/test_sample_quality.py +211 -0
  555. package/eval/local/tests/scaffold/test_tasks.py +168 -0
  556. package/eval/local/tests/scaffold/test_treatments.py +244 -0
  557. package/eval/local/tests/scaffold/test_utils.py +139 -0
  558. package/eval/local/tests/tasks/test_tasks.py +445 -0
  559. package/eval/local/tests/tasks/test_validation_scripts.py +143 -0
  560. package/eval/local/treatments/comet/comet_full_039.yaml +141 -0
  561. package/eval/local/treatments/comet/comet_full_040_beta.yaml +140 -0
  562. package/eval/local/treatments/common/control.yaml +4 -0
  563. package/eval/pyproject.toml +41 -0
  564. package/eval/report-html-config.json +6 -0
  565. package/eval/scaffold/__init__.py +67 -0
  566. package/eval/scaffold/python/__init__.py +95 -0
  567. package/eval/scaffold/python/attribution.py +43 -0
  568. package/eval/scaffold/python/evidence.py +38 -0
  569. package/eval/scaffold/python/external_data_handler.py +18 -0
  570. package/eval/scaffold/python/generic_llm_judge.py +235 -0
  571. package/eval/scaffold/python/judge_config.py +168 -0
  572. package/eval/scaffold/python/llm_judge.py +191 -0
  573. package/eval/scaffold/python/logging.py +705 -0
  574. package/eval/scaffold/python/manifests.py +129 -0
  575. package/eval/scaffold/python/paper_charts.py +25 -0
  576. package/eval/scaffold/python/pass_at_k.py +107 -0
  577. package/eval/scaffold/python/paths.py +56 -0
  578. package/eval/scaffold/python/profiles.py +127 -0
  579. package/eval/scaffold/python/report_outputs.py +1391 -0
  580. package/eval/scaffold/python/sample_quality.py +339 -0
  581. package/eval/scaffold/python/schema.py +39 -0
  582. package/eval/scaffold/python/skill_parser.py +469 -0
  583. package/eval/scaffold/python/tasks.py +330 -0
  584. package/eval/scaffold/python/treatments.py +271 -0
  585. package/eval/scaffold/python/utils.py +366 -0
  586. package/eval/scaffold/python/validation/__init__.py +21 -0
  587. package/eval/scaffold/python/validation/authoring_rubric.py +326 -0
  588. package/eval/scaffold/python/validation/comet_workflow.py +187 -0
  589. package/eval/scaffold/python/validation/core.py +264 -0
  590. package/eval/scaffold/python/validation/dataset.py +337 -0
  591. package/eval/scaffold/python/validation/docker.py +106 -0
  592. package/eval/scaffold/python/validation/evaluator.py +549 -0
  593. package/eval/scaffold/python/validation/generic_rubric.py +169 -0
  594. package/eval/scaffold/python/validation/rubric.py +740 -0
  595. package/eval/scaffold/python/validation/runner.py +237 -0
  596. package/eval/scaffold/python/validation/scripts.py +58 -0
  597. package/eval/scaffold/python/validation/tracing.py +313 -0
  598. package/eval/scaffold/shell/common.sh +126 -0
  599. package/eval/scaffold/shell/docker.sh +482 -0
  600. package/eval/scaffold/shell/run-claude-loop.sh +181 -0
  601. package/eval/scaffold/shell/setup.sh +259 -0
  602. package/eval/simulator-instruction.md +9 -0
  603. package/package.json +29 -2
  604. package/dist/domains/dashboard/web/assets/index-BcO3_QlT.css +0 -1
  605. package/dist/domains/dashboard/web/assets/index-CjU3VXVu.js +0 -22
@@ -0,0 +1,31 @@
1
+ You are working on a Python project called "text-processor" - a text analysis utility library.
2
+
3
+ Your task: Use the comet workflow to **refactor** the duplicated counting logic.
4
+
5
+ ## The problem
6
+
7
+ `text_processor.py` has three near-identical functions — `count_words`, `count_lines`, `count_chars` — each repeating the same "split + iterate + tally" pattern with only the splitting strategy differing. This violates DRY.
8
+
9
+ The goal is to introduce a **single dispatcher**:
10
+
11
+ ```python
12
+ def count(text: str, unit: str) -> int:
13
+ """Count words/lines/chars. unit must be 'words', 'lines', or 'chars'."""
14
+ ...
15
+ ```
16
+
17
+ Then rewrite `count_words`, `count_lines`, `count_chars` as **thin wrappers** that delegate to `count()`. The public API (function names, signatures, return values) must stay identical.
18
+
19
+ ## Constraints
20
+
21
+ - **Behavior must not change**: every test in `test_text_processor.py` must still pass.
22
+ - `analyze()` must continue to work unchanged.
23
+ - `count()` should raise `ValueError` for an unknown unit.
24
+
25
+ ## What to do
26
+
27
+ 1. First, run the existing tests to confirm they pass: `python -m pytest test_text_processor.py -v`
28
+ 2. Follow the comet workflow phases (Open → Design → Build → Verify → Archive).
29
+ 3. After refactoring, run the tests again to prove behavior is preserved.
30
+
31
+ Start by detecting the current phase and following the comet workflow. When you reach a decision point that asks for confirmation, assume "yes, proceed with the recommended option".
@@ -0,0 +1,24 @@
1
+ [metadata]
2
+ name = "comet-refactor-counter"
3
+ description = "Refactor three duplicated counting functions into a single count(text, unit) dispatcher without changing behavior"
4
+ difficulty = "medium"
5
+ category = "comet"
6
+ tags = ["comet", "workflow", "refactor", "dry"]
7
+ default_treatments = [
8
+ "CONTROL",
9
+ "COMET_FULL_040_BETA",
10
+ "COMET_FULL_039",
11
+ ]
12
+
13
+ [template]
14
+ required = []
15
+
16
+ [environment]
17
+ description = "Python text processor with duplicated counting logic. Claude must refactor while preserving behavior."
18
+ dockerfile = "environment/Dockerfile"
19
+ timeout_sec = 900
20
+
21
+ [validation]
22
+ test_scripts = "test_refactor_counter.py"
23
+ target_artifacts = []
24
+ timeout = 120
@@ -0,0 +1,75 @@
1
+ """Validation for the comet-refactor-counter task.
2
+
3
+ Checks: comet workflow followed + a count() dispatcher exists + behavior
4
+ preserved (all existing tests pass) + wrappers delegate (no duplicated loops).
5
+ """
6
+
7
+ import re
8
+ import subprocess
9
+ import sys
10
+
11
+ from comet_checks import (
12
+ run_comet_checks,
13
+ write_results,
14
+ _passed,
15
+ _failed,
16
+ WORKSPACE,
17
+ )
18
+
19
+
20
+ def _subprocess_output(result: subprocess.CompletedProcess) -> str:
21
+ output = "\n".join(
22
+ part.strip()
23
+ for part in (result.stdout or "", result.stderr or "")
24
+ if part and part.strip()
25
+ )
26
+ return output[-600:]
27
+
28
+
29
+ def check_count_dispatcher() -> dict:
30
+ """A count(text, unit) dispatcher exists and wrappers delegate to it."""
31
+ src_path = WORKSPACE / "text_processor.py"
32
+ if not src_path.exists():
33
+ return _failed("count_dispatcher", "text_processor.py not found")
34
+ src = src_path.read_text(errors="ignore")
35
+
36
+ # Dispatcher must exist.
37
+ if not re.search(r"^def count\(\s*(?:text|s)\s*:\s*str\s*,\s*unit\s*:\s*str", src, re.MULTILINE):
38
+ return _failed("count_dispatcher", "no count(text, unit) dispatcher found")
39
+
40
+ # Wrappers must delegate (contain a count( call), not their own tally loop.
41
+ for wrapper in ("count_words", "count_lines", "count_chars"):
42
+ # Find the function body.
43
+ m = re.search(rf"def {wrapper}\([^)]*\)\s*(?:->\s*[^:]+)?:(.*?)(?=\ndef |\Z)", src, re.DOTALL)
44
+ if not m:
45
+ return _failed("count_dispatcher", f"wrapper {wrapper} missing")
46
+ body = m.group(1)
47
+ if "count(" not in body:
48
+ return _failed("count_dispatcher", f"{wrapper} does not delegate to count()")
49
+ # A raw for-loop tallying a counter inside the wrapper means it wasn't refactored.
50
+ if re.search(r"\bcount\s*\+=\s*1", body) or re.search(r"for\s+\w+\s+in\s+\w+\.split", body):
51
+ return _failed("count_dispatcher", f"{wrapper} still has inline tally logic")
52
+
53
+ return _passed("count_dispatcher", "count() dispatcher + 3 delegating wrappers")
54
+
55
+
56
+ def check_behavior_preserved() -> dict:
57
+ """All existing tests still pass after refactoring."""
58
+ result = subprocess.run(
59
+ [sys.executable, "-m", "pytest", "test_text_processor.py", "-q"],
60
+ capture_output=True, text=True, cwd=str(WORKSPACE),
61
+ )
62
+ if result.returncode != 0:
63
+ return _failed("behavior_preserved", f"tests failing:\n{_subprocess_output(result)}")
64
+ return _passed("behavior_preserved", "all existing tests pass")
65
+
66
+
67
+ def run_all() -> list[dict]:
68
+ results = run_comet_checks()
69
+ results.append(check_count_dispatcher())
70
+ results.append(check_behavior_preserved())
71
+ return results
72
+
73
+
74
+ if __name__ == "__main__":
75
+ write_results(run_all())
@@ -0,0 +1,39 @@
1
+ FROM python:3.12-slim
2
+
3
+ WORKDIR /workspace
4
+
5
+ RUN apt-get update && apt-get install -y --no-install-recommends \
6
+ bash git curl jq ca-certificates \
7
+ nodejs npm && \
8
+ rm -rf /var/lib/apt/lists/*
9
+
10
+ RUN pip install --no-cache-dir pyyaml pytest
11
+
12
+ RUN npm config set registry https://registry.npmmirror.com && \
13
+ npm install -g @fission-ai/openspec@1.3.1 && \
14
+ npm config delete registry
15
+
16
+ ARG CLAUDE_CODE_VERSION=latest
17
+ RUN npm config set registry https://registry.npmmirror.com && \
18
+ npm install -g @anthropic-ai/claude-code@${CLAUDE_CODE_VERSION} && \
19
+ npm config delete registry
20
+
21
+ COPY config_loader.py /workspace/config_loader.py
22
+ COPY test_config_loader.py /workspace/test_config_loader.py
23
+
24
+ RUN mkdir -p wordcount-cli && \
25
+ echo '# Config Loader' > wordcount-cli/README.md
26
+ RUN mkdir -p openspec/changes
27
+
28
+ RUN useradd --create-home --shell /bin/bash agent && \
29
+ chown -R agent:agent /workspace
30
+ USER agent
31
+ ENV HOME=/home/agent
32
+ # Validator scripts import scaffold.*; bake PYTHONPATH so it never crosses the
33
+ # MSYS path-conversion boundary on the docker run command line.
34
+ ENV PYTHONPATH=/workspace
35
+ RUN git config --global user.email "agent@eval.local" && \
36
+ git config --global user.name "Comet Eval Agent" && \
37
+ git config --global init.defaultBranch master
38
+
39
+ CMD ["bash"]
@@ -0,0 +1,56 @@
1
+ """config-loader: load and query simple INI-style configuration files.
2
+
3
+ The current implementation is brittle: it crashes or silently misbehaves on
4
+ malformed input. The task is to add structured error handling so invalid input
5
+ raises a clear, typed exception instead of a cryptic crash.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ from typing import Any
11
+
12
+
13
+ class ConfigError(Exception):
14
+ """Base exception for all config-loading errors."""
15
+
16
+
17
+ def load_config(text: str) -> dict[str, dict[str, str]]:
18
+ """Parse an INI-style config string into {section: {key: value}}.
19
+
20
+ Format:
21
+ [section]
22
+ key = value
23
+ # comment lines start with #
24
+
25
+ BUG: malformed input causes unhandled exceptions or silently corrupt data.
26
+ It should instead raise ConfigError subclasses with clear messages.
27
+ """
28
+ config: dict[str, dict[str, str]] = {}
29
+ current_section: str | None = None
30
+
31
+ for lineno, line in enumerate(text.splitlines(), 1):
32
+ stripped = line.strip()
33
+ if not stripped or stripped.startswith("#"):
34
+ continue
35
+ if stripped.startswith("[") and stripped.endswith("]"):
36
+ current_section = stripped[1:-1]
37
+ if current_section in config:
38
+ # BUG: silently overwrites instead of raising
39
+ pass
40
+ config[current_section] = {}
41
+ continue
42
+ if "=" not in stripped:
43
+ # BUG: silently skips invalid lines instead of raising
44
+ continue
45
+ if current_section is None:
46
+ # BUG: crashes later with KeyError or silently drops
47
+ continue
48
+ key, _, value = stripped.partition("=")
49
+ config[current_section][key.strip()] = value.strip()
50
+
51
+ return config
52
+
53
+
54
+ def get(config: dict[str, dict[str, str]], section: str, key: str, default: Any = None) -> Any:
55
+ """Get a value from a loaded config, or `default` if missing."""
56
+ return config.get(section, {}).get(key, default)
@@ -0,0 +1,72 @@
1
+ """Tests for config-loader.
2
+
3
+ The error-handling tests currently FAIL (the brittle implementation crashes or
4
+ silently misbehaves). The happy-path tests pass.
5
+ """
6
+
7
+ import pytest
8
+
9
+ from config_loader import ConfigError, load_config, get
10
+
11
+
12
+ VALID_CONFIG = """\
13
+ # Application settings
14
+ [server]
15
+ host = localhost
16
+ port = 8080
17
+
18
+ [database]
19
+ url = postgres://localhost/app
20
+ pool = 10
21
+ """
22
+
23
+
24
+ class TestHappyPath:
25
+ def test_parse_basic(self):
26
+ cfg = load_config(VALID_CONFIG)
27
+ assert cfg["server"]["host"] == "localhost"
28
+ assert cfg["server"]["port"] == "8080"
29
+ assert cfg["database"]["pool"] == "10"
30
+
31
+ def test_comments_ignored(self):
32
+ cfg = load_config("# comment\n[s]\nk = v\n")
33
+ assert cfg == {"s": {"k": "v"}}
34
+
35
+ def test_empty(self):
36
+ assert load_config("") == {}
37
+
38
+ def test_get_with_default(self):
39
+ cfg = load_config("[s]\nk = v\n")
40
+ assert get(cfg, "s", "k") == "v"
41
+ assert get(cfg, "s", "missing", "fb") == "fb"
42
+ assert get(cfg, "nope", "k", "fb") == "fb"
43
+
44
+
45
+ class TestErrorHandling:
46
+ def test_key_without_section_raises(self):
47
+ """A key=value line before any [section] must raise ConfigError."""
48
+ with pytest.raises(ConfigError):
49
+ load_config("key = value\n[section]\n")
50
+
51
+ def test_duplicate_section_raises(self):
52
+ """The same [section] appearing twice must raise ConfigError."""
53
+ with pytest.raises(ConfigError):
54
+ load_config("[s]\nk=v\n[s]\nk2=v2\n")
55
+
56
+ def test_malformed_line_raises(self):
57
+ """A line that is neither blank, comment, section, nor key=value must raise."""
58
+ with pytest.raises(ConfigError):
59
+ load_config("[s]\njust some text\n")
60
+
61
+ def test_empty_section_name_raises(self):
62
+ """An empty section header [] must raise ConfigError."""
63
+ with pytest.raises(ConfigError):
64
+ load_config("[]\nk=v\n")
65
+
66
+ def test_error_messages_are_informative(self):
67
+ """ConfigError messages should mention the line number or nature of the error."""
68
+ with pytest.raises(ConfigError) as exc_info:
69
+ load_config("[s]\nbroken line here\n")
70
+ msg = str(exc_info.value).lower()
71
+ assert "line" in msg or "invalid" in msg or "malformed" in msg, \
72
+ f"error message not informative: {exc_info.value}"
@@ -0,0 +1,30 @@
1
+ You are working on a Python project called "config-loader" - a simple INI-style configuration parser.
2
+
3
+ Your task: Use the comet workflow to **add structured error handling** to `load_config()`.
4
+
5
+ ## The problem
6
+
7
+ `load_config()` in `config_loader.py` is brittle. On malformed input it either crashes with a cryptic exception or silently misbehaves (overwrites duplicate sections, skips bad lines, drops keys outside sections).
8
+
9
+ The goal is to make invalid input raise a **clear `ConfigError`** (already defined as the base exception) with an informative message mentioning the line number or nature of the problem.
10
+
11
+ ## Cases to handle (see TestErrorHandling)
12
+
13
+ 1. **Key before any section**: `key = value` before `[section]` → raise ConfigError
14
+ 2. **Duplicate section**: `[s]` appearing twice → raise ConfigError
15
+ 3. **Malformed line**: a line that is neither blank/comment/section/key=value → raise ConfigError
16
+ 4. **Empty section name**: `[]` → raise ConfigError
17
+ 5. **Informative messages**: error text should mention "line" or "invalid"/"malformed"
18
+
19
+ ## Constraints
20
+
21
+ - The happy-path tests in `TestHappyPath` must keep passing.
22
+ - Raise `ConfigError` (or subclasses) — don't let raw `KeyError`/`ValueError` escape.
23
+
24
+ ## What to do
25
+
26
+ 1. Run tests: `python -m pytest test_config_loader.py -v` (5 error-handling tests fail)
27
+ 2. Follow the comet workflow (Open → Design → Build → Verify → Archive).
28
+ 3. Confirm all 9 tests pass.
29
+
30
+ Start by detecting the current phase and following the comet workflow. When you reach a decision point that asks for confirmation, assume "yes, proceed with the recommended option".
@@ -0,0 +1,24 @@
1
+ [metadata]
2
+ name = "comet-robust-config"
3
+ description = "Add structured error handling to a brittle INI config loader so malformed input raises clear ConfigError instead of crashing"
4
+ difficulty = "hard"
5
+ category = "comet"
6
+ tags = ["comet", "workflow", "error-handling", "robustness"]
7
+ default_treatments = [
8
+ "CONTROL",
9
+ "COMET_FULL_040_BETA",
10
+ "COMET_FULL_039",
11
+ ]
12
+
13
+ [template]
14
+ required = []
15
+
16
+ [environment]
17
+ description = "Python INI config loader with brittle error handling. Claude must add structured errors via the comet workflow."
18
+ dockerfile = "environment/Dockerfile"
19
+ timeout_sec = 900
20
+
21
+ [validation]
22
+ test_scripts = "test_robust_config.py"
23
+ target_artifacts = []
24
+ timeout = 120
@@ -0,0 +1,37 @@
1
+ """Validation for the comet-robust-config task.
2
+
3
+ Checks: comet workflow followed + malformed input raises ConfigError + happy path intact.
4
+ """
5
+
6
+ import subprocess
7
+ import sys
8
+
9
+ from comet_checks import (
10
+ run_comet_checks,
11
+ write_results,
12
+ _passed,
13
+ _failed,
14
+ WORKSPACE,
15
+ )
16
+
17
+
18
+ def check_error_handling() -> dict:
19
+ """All config tests pass: 5 error-handling + 4 happy-path."""
20
+ result = subprocess.run(
21
+ [sys.executable, "-m", "pytest", "test_config_loader.py", "-q"],
22
+ capture_output=True, text=True, cwd=str(WORKSPACE),
23
+ )
24
+ if result.returncode != 0:
25
+ out = result.stdout + result.stderr
26
+ return _failed("error_handling", f"tests failing:\n{out[-400:]}")
27
+ return _passed("error_handling", "malformed input raises ConfigError, happy path intact")
28
+
29
+
30
+ def run_all() -> list[dict]:
31
+ results = run_comet_checks()
32
+ results.append(check_error_handling())
33
+ return results
34
+
35
+
36
+ if __name__ == "__main__":
37
+ write_results(run_all())
@@ -0,0 +1,2 @@
1
+ FROM python:3.11-slim
2
+ WORKDIR /workspace
@@ -0,0 +1,7 @@
1
+ Create a file named `result.md` in the current workspace.
2
+
3
+ The file must contain:
4
+
5
+ - A heading `# Skill Smoke Result`
6
+ - A short summary of the approach you used
7
+ - A bullet list with exactly three bullets
@@ -0,0 +1,21 @@
1
+ [metadata]
2
+ name = "generic-skill-smoke"
3
+ description = "Smoke task for evaluating an arbitrary Skill on a simple artifact-producing workflow."
4
+ difficulty = "easy"
5
+ category = "generic"
6
+ tags = ["generic", "skill", "smoke"]
7
+ default_treatments = ["CONTROL"]
8
+
9
+ [environment]
10
+ description = "Empty workspace for a generic Skill smoke test."
11
+ dockerfile = "environment/Dockerfile"
12
+ timeout_sec = 600
13
+
14
+ [validation]
15
+ test_scripts = ["test_generic_skill_smoke.py"]
16
+ target_artifacts = ["result.md"]
17
+ timeout = 60
18
+
19
+ [evaluation]
20
+ profile = "generic"
21
+ expected_artifacts = ["result.md"]
@@ -0,0 +1,36 @@
1
+ from pathlib import Path
2
+
3
+ from scaffold.python.validation.core import write_test_results
4
+
5
+
6
+ def main():
7
+ path = Path("result.md")
8
+ passed = []
9
+ failed = []
10
+
11
+ if not path.exists():
12
+ write_test_results({"passed": [], "failed": ["result.md missing"]})
13
+ return
14
+
15
+ text = path.read_text(encoding="utf-8")
16
+ if "# Skill Smoke Result" in text:
17
+ passed.append("result.md heading present")
18
+ else:
19
+ failed.append("result.md heading missing")
20
+
21
+ bullets = [line for line in text.splitlines() if line.startswith("- ")]
22
+ if len(bullets) == 3:
23
+ passed.append("result.md has exactly three bullets")
24
+ else:
25
+ failed.append(f"result.md bullet count was {len(bullets)}")
26
+
27
+ if "approach" in text.lower() or "used" in text.lower():
28
+ passed.append("result.md describes approach")
29
+ else:
30
+ failed.append("result.md approach summary missing")
31
+
32
+ write_test_results({"passed": passed, "failed": failed})
33
+
34
+
35
+ if __name__ == "__main__":
36
+ main()
@@ -0,0 +1,155 @@
1
+ tasks:
2
+ # ── Default / canonical full-workflow task ──────────────────────────────
3
+ - name: comet-full-workflow
4
+ category: comet
5
+ default_treatments:
6
+ - CONTROL
7
+ - COMET_FULL_040_BETA
8
+ - COMET_FULL_039
9
+ description: Full open-design-build-verify-archive workflow on a sentence-counting feature. The canonical 5-phase task.
10
+
11
+ # ── Dimension coverage tasks (bug fix / refactor / perf / api / robustness) ──
12
+ - name: comet-fix-median
13
+ category: comet
14
+ default_treatments:
15
+ - CONTROL
16
+ - COMET_FULL_040_BETA
17
+ - COMET_FULL_039
18
+ description: Bug-fix dimension. Fix median() for even-length lists in a stats library; diagnose, fix, verify no regressions.
19
+
20
+ - name: comet-refactor-counter
21
+ category: comet
22
+ default_treatments:
23
+ - CONTROL
24
+ - COMET_FULL_040_BETA
25
+ - COMET_FULL_039
26
+ description: Refactor dimension. Collapse three duplicated count_* functions into a count(text, unit) dispatcher while preserving behavior.
27
+
28
+ - name: comet-perf-dedupe
29
+ category: comet
30
+ default_treatments:
31
+ - CONTROL
32
+ - COMET_FULL_040_BETA
33
+ - COMET_FULL_039
34
+ description: Performance dimension. Optimize an O(n^2) dedupe function to O(n) using a set while preserving first-occurrence order.
35
+
36
+ - name: comet-api-cache-ttl
37
+ category: comet
38
+ default_treatments:
39
+ - CONTROL
40
+ - COMET_FULL_040_BETA
41
+ - COMET_FULL_039
42
+ description: API-design dimension. Add optional TTL expiration to an in-memory cache while keeping the existing API backward compatible.
43
+
44
+ - name: comet-robust-config
45
+ category: comet
46
+ default_treatments:
47
+ - CONTROL
48
+ - COMET_FULL_040_BETA
49
+ - COMET_FULL_039
50
+ description: Robustness dimension. Add structured ConfigError handling to a brittle INI config loader so malformed input raises clear errors.
51
+
52
+ # ── Expanded workflow pressure tasks inspired by skills-benchmarks ──────
53
+ - name: comet-dependency-confusion
54
+ category: comet
55
+ default_treatments:
56
+ - CONTROL
57
+ - COMET_FULL_040_BETA
58
+ - COMET_FULL_039
59
+ description: Inspired by skills-benchmarks/lc-deps-tavily. Repair stale module names and compatibility imports in a small settings loader without changing the public API.
60
+
61
+ - name: comet-layered-streaming-fix
62
+ category: comet
63
+ default_treatments:
64
+ - CONTROL
65
+ - COMET_FULL_040_BETA
66
+ - COMET_FULL_039
67
+ description: Inspired by skills-benchmarks/oss-fix-lc-streaming. Fix streaming chunk behavior and tool-result handling in a chat application.
68
+
69
+ - name: comet-persistence-threading
70
+ category: comet
71
+ default_treatments:
72
+ - CONTROL
73
+ - COMET_FULL_040_BETA
74
+ - COMET_FULL_039
75
+ description: Inspired by skills-benchmarks/oss-fix-lg-persistence. Make session state isolate by thread_id and survive a new store instance.
76
+
77
+ - name: comet-human-approval-flow
78
+ category: comet
79
+ default_treatments:
80
+ - CONTROL
81
+ - COMET_FULL_040_BETA
82
+ - COMET_FULL_039
83
+ description: Inspired by skills-benchmarks/oss-fix-lc-hitl. Add a pending approval flow before dangerous document operations can execute.
84
+
85
+ - name: comet-noise-distractor
86
+ category: comet
87
+ default_treatments:
88
+ - CONTROL
89
+ - COMET_FULL_040_BETA
90
+ - COMET_FULL_039
91
+ description: Inspired by skills-benchmarks/lc-basic-noise. Fix invoice tax calculation while leaving an unrelated distracting file untouched.
92
+
93
+ - name: comet-cross-file-refactor
94
+ category: comet
95
+ default_treatments:
96
+ - CONTROL
97
+ - COMET_FULL_040_BETA
98
+ - COMET_FULL_039
99
+ description: Inspired by skills-benchmarks/lc-basic. Add a shared count(text, unit) dispatcher while keeping wrappers and CLI behavior compatible.
100
+
101
+ - name: comet-observability-env-template
102
+ category: comet
103
+ default_treatments:
104
+ - CONTROL
105
+ - COMET_FULL_040_BETA
106
+ - COMET_FULL_039
107
+ description: Inspired by skills-benchmarks/ls-lang-tracing. Generate a LangSmith-ready .env.example with the simplified LANGSMITH_* configuration.
108
+
109
+ - name: comet-graph-execution-review
110
+ category: comet
111
+ default_treatments:
112
+ - CONTROL
113
+ - COMET_FULL_040_BETA
114
+ - COMET_FULL_039
115
+ description: Inspired by skills-benchmarks/oss-fix-lg-execution. Fix parallel task fan-out, review interruption, and resume behavior in a graph-style pipeline.
116
+
117
+ - name: comet-agent-memory-routing
118
+ category: comet
119
+ default_treatments:
120
+ - CONTROL
121
+ - COMET_FULL_040_BETA
122
+ - COMET_FULL_039
123
+ description: Inspired by skills-benchmarks/oss-fix-da-memory. Fix persistent preference routing, subagent skill access, and deployment approval checkpoints.
124
+
125
+ - name: comet-framework-selection
126
+ category: comet
127
+ default_treatments:
128
+ - CONTROL
129
+ - COMET_FULL_040_BETA
130
+ - COMET_FULL_039
131
+ description: Inspired by skills-benchmarks/lc-framework-hybrid-pipeline. Select a hybrid deep-agent plus deterministic sub-workflow architecture for long-session document editing.
132
+
133
+ - name: generic-skill-smoke
134
+ category: generic
135
+ default_treatments:
136
+ - CONTROL
137
+ description: Generic smoke task for arbitrary Skill eval; creates and validates result.md.
138
+
139
+ - name: authoring-skill-smoke
140
+ category: generic
141
+ default_treatments:
142
+ - CONTROL
143
+ description: Smoke task for generated Comet-native Skill packages.
144
+
145
+ - name: workflow-route-conformance
146
+ category: generic
147
+ default_treatments:
148
+ - CONTROL
149
+ description: Validates generated Skill route metadata against the workflow protocol and internal Node Skills.
150
+
151
+ - name: workflow-overlay-contract
152
+ category: generic
153
+ default_treatments:
154
+ - CONTROL
155
+ description: Validates generated overlay eval manifests for baselines, gates, schemas, and expected evidence.
@@ -0,0 +1,5 @@
1
+ FROM python:3.11-slim
2
+
3
+ WORKDIR /workspace
4
+
5
+ RUN pip install --no-cache-dir pyyaml
@@ -0,0 +1,5 @@
1
+ Inspect the generated Comet overlay Skill package available in this eval run.
2
+
3
+ Confirm that its `comet/eval.yaml` exposes the structured evaluation contract
4
+ for overlay workflow evidence, baseline comparison, quality gates, required
5
+ schemas, and expected evidence checks.
@@ -0,0 +1,21 @@
1
+ [metadata]
2
+ name = "workflow-overlay-contract"
3
+ description = "Validate generated overlay eval manifest contract evidence."
4
+ difficulty = "easy"
5
+ category = "generic"
6
+ tags = ["authoring", "skill", "comet-any", "overlay", "eval"]
7
+ default_treatments = ["CONTROL"]
8
+
9
+ [environment]
10
+ description = "Workspace for generated overlay eval manifest inspection."
11
+ dockerfile = "environment/Dockerfile"
12
+ timeout_sec = 600
13
+
14
+ [validation]
15
+ test_scripts = ["test_workflow_overlay_contract.py"]
16
+ target_artifacts = []
17
+ timeout = 60
18
+
19
+ [evaluation]
20
+ profile = "authoring-skill"
21
+ expected_artifacts = []