@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
@@ -0,0 +1,899 @@
1
+ import { randomUUID } from 'crypto';
2
+ import { promises as fs } from 'fs';
3
+ import path from 'path';
4
+ import { isDeepStrictEqual } from 'util';
5
+ import { stringify } from 'yaml';
6
+ import { atomicWriteJson, atomicWriteText } from './native-atomic-file.js';
7
+ import { hasPendingNativeCheckpointRecovery, inspectNativeChange, NativeBaselineIncompleteError, NATIVE_CHANGE_STATE_FILE, nativeChangeDir, nativeChangeDocument, nativeV2ChangeDocument, parseNativeChangeValue, parseV2NativeChangeValue, } from './native-change.js';
8
+ import { sha256File, sha256Text } from './native-hash.js';
9
+ import { withNativeMutationLock } from './native-mutation-lock.js';
10
+ import { resolveContainedNativePath } from './native-paths.js';
11
+ import { readNativeProtectedTextFile } from './native-protected-file.js';
12
+ import { NATIVE_RUNTIME_HASH, NATIVE_RUNTIME_PACKAGE } from './native-runtime-package.js';
13
+ import { parseNativeStoredRunStateValue, readNativeCheckpoint, readNativeRunState, readNativeTrajectory, writeNativeRunState, } from './native-run-store.js';
14
+ import { createNativeContentSnapshot, filterNativeContentSnapshotToProjectScope, inspectNativeContentSnapshotHealth, readNativeBaselineManifest, writeNativeBaselineManifest, } from './native-snapshot.js';
15
+ import { appendNativeTrajectoryEvent, writeNativeCheckpoint } from './native-trajectory.js';
16
+ import { inspectPendingNativeTransitionSchema, nativeTransitionJournalFile, parseNativeTransitionJournalValue, parseV2NativeTransitionJournalValue, withNativeTransitionLock, } from './native-transition-journal.js';
17
+ import { NATIVE_CHANGE_SCHEMA, NATIVE_LEGACY_CHANGE_SCHEMA, NATIVE_LEGACY_TRANSITION_SCHEMA, NATIVE_RUNTIME_PROTOCOL_VERSION, NATIVE_TRANSITION_SCHEMA, NATIVE_V2_CHANGE_SCHEMA, NATIVE_V2_TRANSITION_SCHEMA, } from './native-types.js';
18
+ const HASH_PATTERN = /^[a-f0-9]{64}$/u;
19
+ const MIGRATION_JOURNAL_KEYS = new Set([
20
+ 'schema',
21
+ 'id',
22
+ 'change',
23
+ 'fromSchema',
24
+ 'toSchema',
25
+ 'sourceHash',
26
+ 'targetHash',
27
+ 'createdAt',
28
+ 'nextState',
29
+ 'transition',
30
+ 'transitionSupersede',
31
+ 'runRetreat',
32
+ ]);
33
+ const MIGRATION_TRANSITION_KEYS = new Set(['sourceHash', 'targetHash', 'nextJournal']);
34
+ const MIGRATION_TRANSITION_SUPERSEDE_KEYS = new Set([
35
+ 'sourceHash',
36
+ 'transitionId',
37
+ 'previousRun',
38
+ 'nextRun',
39
+ 'evidenceHash',
40
+ 'eventData',
41
+ ]);
42
+ const MIGRATION_SUPERSEDE_EVENT_KEYS = new Set([
43
+ 'fromSchema',
44
+ 'toSchema',
45
+ 'previousPhase',
46
+ 'nextPhase',
47
+ 'reason',
48
+ 'supersededTransitionId',
49
+ ]);
50
+ const MIGRATION_RUN_RETREAT_KEYS = new Set(['previousRun', 'nextRun', 'evidenceHash', 'eventData']);
51
+ function rejectUnknownFields(value, keys, label) {
52
+ const unknown = Object.keys(value).find((key) => !keys.has(key));
53
+ if (unknown)
54
+ throw new Error(`${label} contains unknown field: ${unknown}`);
55
+ }
56
+ function transitionContent(journal) {
57
+ return JSON.stringify(journal, null, 2) + '\n';
58
+ }
59
+ function migrationStateDocument(state) {
60
+ return state.schema === NATIVE_V2_CHANGE_SCHEMA
61
+ ? nativeV2ChangeDocument(state)
62
+ : nativeChangeDocument(state);
63
+ }
64
+ function upgradeV1StateToV2(state, revision) {
65
+ return {
66
+ ...state,
67
+ schema: NATIVE_V2_CHANGE_SCHEMA,
68
+ minimum_runtime_version: 2,
69
+ revision,
70
+ };
71
+ }
72
+ function upgradeV1TransitionToV2(journal) {
73
+ return {
74
+ ...journal,
75
+ schema: NATIVE_V2_TRANSITION_SCHEMA,
76
+ minimum_runtime_version: 2,
77
+ revision: 1,
78
+ previousState: upgradeV1StateToV2(journal.previousState, 1),
79
+ nextState: upgradeV1StateToV2(journal.nextState, 2),
80
+ };
81
+ }
82
+ function upgradeV2StateToV3(state, options) {
83
+ const retreat = options?.retreatEvidencePhase === true &&
84
+ (state.phase === 'verify' || state.phase === 'archive');
85
+ return {
86
+ ...state,
87
+ schema: NATIVE_CHANGE_SCHEMA,
88
+ minimum_runtime_version: NATIVE_RUNTIME_PROTOCOL_VERSION,
89
+ revision: state.revision + (retreat && options?.incrementRetreatRevision ? 1 : 0),
90
+ phase: retreat ? 'build' : state.phase,
91
+ verification_result: retreat ? 'pending' : state.verification_result,
92
+ verification_report: retreat ? null : state.verification_report,
93
+ approved_contract_hash: null,
94
+ implementation_scope: null,
95
+ verification_evidence: null,
96
+ partial_allowance: null,
97
+ archived: retreat ? false : state.archived,
98
+ };
99
+ }
100
+ function upgradeV2TransitionToV3(journal) {
101
+ if (journal.nextState.phase === 'archive') {
102
+ throw new Error('Native v2 Archive transition must be superseded by schema migration');
103
+ }
104
+ const specRebase = journal.previousState.phase !== 'shape' &&
105
+ journal.nextState.phase === 'build' &&
106
+ journal.eventData.verificationResult === null;
107
+ const evidenceHash = specRebase
108
+ ? sha256Text(JSON.stringify({
109
+ operation: 'spec-rebase',
110
+ change: journal.change,
111
+ summary: journal.eventData.summary,
112
+ specChanges: journal.nextState.spec_changes,
113
+ }))
114
+ : journal.evidenceHash;
115
+ return {
116
+ ...journal,
117
+ schema: NATIVE_TRANSITION_SCHEMA,
118
+ minimum_runtime_version: NATIVE_RUNTIME_PROTOCOL_VERSION,
119
+ revision: 1,
120
+ operation: specRebase ? 'spec-rebase' : 'advance',
121
+ evidenceHash,
122
+ previousState: upgradeV2StateToV3(journal.previousState),
123
+ nextState: {
124
+ ...upgradeV2StateToV3(journal.nextState),
125
+ ...(specRebase
126
+ ? {
127
+ implementation_scope: null,
128
+ verification_evidence: null,
129
+ partial_allowance: null,
130
+ }
131
+ : {}),
132
+ },
133
+ eventData: { ...journal.eventData, evidenceHash },
134
+ nextRun: journal.previousRun === null
135
+ ? {
136
+ ...journal.nextRun,
137
+ skillVersion: NATIVE_RUNTIME_PACKAGE.definition.metadata.version,
138
+ skillHash: NATIVE_RUNTIME_HASH,
139
+ }
140
+ : journal.nextRun,
141
+ };
142
+ }
143
+ function sameV1State(left, right) {
144
+ return JSON.stringify(left) === JSON.stringify(right);
145
+ }
146
+ function sameV2State(left, right) {
147
+ return (JSON.stringify(nativeV2ChangeDocument(left)) === JSON.stringify(nativeV2ChangeDocument(right)));
148
+ }
149
+ function sameCurrentState(left, right) {
150
+ return JSON.stringify(nativeChangeDocument(left)) === JSON.stringify(nativeChangeDocument(right));
151
+ }
152
+ function sameRunState(left, right) {
153
+ return isDeepStrictEqual(left, right);
154
+ }
155
+ function parseTransitionSupersede(value, expectedName, nextState, migrationId) {
156
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
157
+ throw new Error('Schema migration transition supersede plan is invalid');
158
+ }
159
+ const record = value;
160
+ rejectUnknownFields(record, MIGRATION_TRANSITION_SUPERSEDE_KEYS, 'Schema migration transition supersede plan');
161
+ if (typeof record.sourceHash !== 'string' || !HASH_PATTERN.test(record.sourceHash)) {
162
+ throw new Error('Schema migration transition supersede source hash is invalid');
163
+ }
164
+ if (typeof record.transitionId !== 'string' || record.transitionId.length === 0) {
165
+ throw new Error('Schema migration superseded transition id is invalid');
166
+ }
167
+ if (typeof record.evidenceHash !== 'string' || !HASH_PATTERN.test(record.evidenceHash)) {
168
+ throw new Error('Schema migration transition supersede evidence hash is invalid');
169
+ }
170
+ const previousRun = parseNativeStoredRunStateValue(record.previousRun);
171
+ const nextRun = parseNativeStoredRunStateValue(record.nextRun);
172
+ if (previousRun.runId !== nextRun.runId ||
173
+ nextState.run_id !== nextRun.runId ||
174
+ (nextState.phase !== 'build' && nextState.phase !== 'verify') ||
175
+ nextRun.currentStep !== nextState.phase ||
176
+ nextRun.pending !== null ||
177
+ nextRun.status !== 'running' ||
178
+ nextState.verification_result !== 'pending' ||
179
+ nextState.verification_report !== null ||
180
+ nextState.implementation_scope !== null ||
181
+ nextState.verification_evidence !== null ||
182
+ nextState.partial_allowance !== null) {
183
+ throw new Error('Schema migration transition supersede Run does not match target state');
184
+ }
185
+ const retreatAllowed = (previousRun.currentStep === 'verify' && nextState.phase === 'build') ||
186
+ (previousRun.currentStep === 'archive' && nextState.phase === 'build');
187
+ const expectedNextRun = previousRun.currentStep === nextState.phase
188
+ ? previousRun
189
+ : retreatAllowed
190
+ ? {
191
+ ...previousRun,
192
+ currentStep: nextState.phase,
193
+ iteration: previousRun.iteration + 1,
194
+ pending: null,
195
+ status: 'running',
196
+ }
197
+ : null;
198
+ if (!expectedNextRun || !sameRunState(expectedNextRun, nextRun)) {
199
+ throw new Error('Schema migration transition supersede Run retreat is invalid');
200
+ }
201
+ if (!record.eventData ||
202
+ typeof record.eventData !== 'object' ||
203
+ Array.isArray(record.eventData)) {
204
+ throw new Error('Schema migration transition supersede event is invalid');
205
+ }
206
+ const eventData = record.eventData;
207
+ const eventKeys = Object.keys(eventData);
208
+ if (eventKeys.length !== MIGRATION_SUPERSEDE_EVENT_KEYS.size ||
209
+ eventKeys.some((key) => !MIGRATION_SUPERSEDE_EVENT_KEYS.has(key)) ||
210
+ eventData.fromSchema !== NATIVE_V2_CHANGE_SCHEMA ||
211
+ eventData.toSchema !== NATIVE_CHANGE_SCHEMA ||
212
+ !['build', 'verify', 'archive'].includes(eventData.previousPhase) ||
213
+ eventData.nextPhase !== nextState.phase ||
214
+ eventData.reason !==
215
+ (nextState.phase === 'build'
216
+ ? 'implementation-scope-required'
217
+ : 'verification-evidence-required') ||
218
+ eventData.supersededTransitionId !== record.transitionId) {
219
+ throw new Error('Schema migration transition supersede event semantics are invalid');
220
+ }
221
+ if (nextState.name !== expectedName) {
222
+ throw new Error('Schema migration transition supersede change mismatch');
223
+ }
224
+ const expectedEvidenceHash = sha256Text(JSON.stringify({
225
+ operation: 'supersede-v2-evidence-transition',
226
+ change: expectedName,
227
+ transitionId: record.transitionId,
228
+ migrationId,
229
+ previousPhase: eventData.previousPhase,
230
+ nextPhase: eventData.nextPhase,
231
+ reason: eventData.reason,
232
+ previousIteration: previousRun.iteration,
233
+ nextRevision: nextState.revision,
234
+ }));
235
+ if (record.evidenceHash !== expectedEvidenceHash) {
236
+ throw new Error('Schema migration transition supersede evidence hash mismatch');
237
+ }
238
+ return {
239
+ sourceHash: record.sourceHash,
240
+ transitionId: record.transitionId,
241
+ previousRun,
242
+ nextRun,
243
+ evidenceHash: record.evidenceHash,
244
+ eventData,
245
+ };
246
+ }
247
+ export function nativeSchemaMigrationJournalFile(paths, name) {
248
+ return path.join(nativeChangeDir(paths, name), 'runtime', 'schema-migration.json');
249
+ }
250
+ function parseMigrationJournal(value, expectedName) {
251
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
252
+ throw new Error('Native schema migration journal must be an object');
253
+ }
254
+ rejectUnknownFields(value, MIGRATION_JOURNAL_KEYS, 'Native schema migration journal');
255
+ const journal = value;
256
+ if (journal.schema !== 'comet.native.schema-migration.v1') {
257
+ throw new Error('Unsupported Native schema migration journal');
258
+ }
259
+ if (journal.change !== expectedName)
260
+ throw new Error('Schema migration change mismatch');
261
+ const v1ToV2 = journal.fromSchema === NATIVE_LEGACY_CHANGE_SCHEMA &&
262
+ journal.toSchema === NATIVE_V2_CHANGE_SCHEMA;
263
+ const v2ToV3 = journal.fromSchema === NATIVE_V2_CHANGE_SCHEMA && journal.toSchema === NATIVE_CHANGE_SCHEMA;
264
+ if (!v1ToV2 && !v2ToV3)
265
+ throw new Error('Schema migration route is unsupported');
266
+ if (typeof journal.id !== 'string' || journal.id.length === 0) {
267
+ throw new Error('Schema migration id is invalid');
268
+ }
269
+ if (typeof journal.sourceHash !== 'string' ||
270
+ !HASH_PATTERN.test(journal.sourceHash) ||
271
+ typeof journal.targetHash !== 'string' ||
272
+ !HASH_PATTERN.test(journal.targetHash)) {
273
+ throw new Error('Schema migration hash is invalid');
274
+ }
275
+ if (typeof journal.createdAt !== 'string' || Number.isNaN(Date.parse(journal.createdAt))) {
276
+ throw new Error('Schema migration timestamp is invalid');
277
+ }
278
+ const nextState = v1ToV2
279
+ ? parseV2NativeChangeValue(journal.nextState)
280
+ : parseNativeChangeValue(journal.nextState);
281
+ if (nextState.name !== expectedName) {
282
+ throw new Error('Schema migration target state change mismatch');
283
+ }
284
+ if (sha256Text(stringify(migrationStateDocument(nextState))) !== journal.targetHash) {
285
+ throw new Error('Schema migration state target hash does not match its document');
286
+ }
287
+ let transition;
288
+ if (journal.transition !== undefined) {
289
+ if (!journal.transition || typeof journal.transition !== 'object') {
290
+ throw new Error('Schema migration transition target is invalid');
291
+ }
292
+ rejectUnknownFields(journal.transition, MIGRATION_TRANSITION_KEYS, 'Schema migration transition target');
293
+ const transitionValue = journal.transition;
294
+ if (typeof transitionValue.sourceHash !== 'string' ||
295
+ !HASH_PATTERN.test(transitionValue.sourceHash) ||
296
+ typeof transitionValue.targetHash !== 'string' ||
297
+ !HASH_PATTERN.test(transitionValue.targetHash)) {
298
+ throw new Error('Schema migration transition hash is invalid');
299
+ }
300
+ const parsedNextJournal = v1ToV2
301
+ ? parseV2NativeTransitionJournalValue(transitionValue.nextJournal, expectedName)
302
+ : parseNativeTransitionJournalValue(transitionValue.nextJournal, expectedName);
303
+ if (sha256Text(JSON.stringify(transitionValue.nextJournal, null, 2) + '\n') !==
304
+ transitionValue.targetHash) {
305
+ throw new Error('Schema migration transition target hash does not match its journal');
306
+ }
307
+ const matches = v1ToV2 && nextState.schema === NATIVE_V2_CHANGE_SCHEMA
308
+ ? sameV2State(nextState, parsedNextJournal.previousState) ||
309
+ sameV2State(nextState, parsedNextJournal.nextState)
310
+ : nextState.schema === NATIVE_CHANGE_SCHEMA &&
311
+ (sameCurrentState(nextState, parsedNextJournal.previousState) ||
312
+ sameCurrentState(nextState, parsedNextJournal.nextState));
313
+ if (!matches)
314
+ throw new Error('Schema migration state/transition target mismatch');
315
+ transition = {
316
+ sourceHash: transitionValue.sourceHash,
317
+ targetHash: transitionValue.targetHash,
318
+ nextJournal: transitionValue.nextJournal,
319
+ };
320
+ }
321
+ if (v1ToV2 &&
322
+ ((!transition && nextState.revision !== 1) ||
323
+ (transition && nextState.revision !== 1 && nextState.revision !== 2))) {
324
+ throw new Error('Schema migration v1 target revision is invalid');
325
+ }
326
+ let transitionSupersede;
327
+ if (journal.transitionSupersede !== undefined) {
328
+ if (!v2ToV3 || transition) {
329
+ throw new Error('Schema migration transition supersede plan is not valid for this route');
330
+ }
331
+ if (nextState.schema !== NATIVE_CHANGE_SCHEMA) {
332
+ throw new Error('Schema migration transition supersede target schema is invalid');
333
+ }
334
+ transitionSupersede = parseTransitionSupersede(journal.transitionSupersede, expectedName, nextState, journal.id);
335
+ }
336
+ let runRetreat;
337
+ if (journal.runRetreat !== undefined) {
338
+ if (!v2ToV3 || transition || transitionSupersede) {
339
+ throw new Error('Schema migration Run retreat is not valid for this route');
340
+ }
341
+ if (!journal.runRetreat || typeof journal.runRetreat !== 'object') {
342
+ throw new Error('Schema migration Run retreat is invalid');
343
+ }
344
+ rejectUnknownFields(journal.runRetreat, MIGRATION_RUN_RETREAT_KEYS, 'Schema migration Run retreat');
345
+ const retreat = journal.runRetreat;
346
+ let previousRun;
347
+ let nextRun;
348
+ try {
349
+ previousRun = parseNativeStoredRunStateValue(retreat.previousRun);
350
+ nextRun = parseNativeStoredRunStateValue(retreat.nextRun);
351
+ }
352
+ catch (error) {
353
+ throw new Error('Schema migration Run retreat is invalid', { cause: error });
354
+ }
355
+ if (typeof retreat.evidenceHash !== 'string' ||
356
+ !HASH_PATTERN.test(retreat.evidenceHash) ||
357
+ !retreat.eventData ||
358
+ typeof retreat.eventData !== 'object' ||
359
+ Array.isArray(retreat.eventData)) {
360
+ throw new Error('Schema migration Run retreat is invalid');
361
+ }
362
+ if (nextState.schema !== NATIVE_CHANGE_SCHEMA ||
363
+ nextState.phase !== 'build' ||
364
+ nextState.run_id !== nextRun.runId ||
365
+ previousRun.runId !== nextRun.runId ||
366
+ (previousRun.currentStep !== 'verify' && previousRun.currentStep !== 'archive') ||
367
+ nextRun.currentStep !== 'build' ||
368
+ nextRun.iteration !== previousRun.iteration + 1) {
369
+ throw new Error('Schema migration Run retreat does not match target state');
370
+ }
371
+ runRetreat = {
372
+ previousRun,
373
+ nextRun,
374
+ evidenceHash: retreat.evidenceHash,
375
+ eventData: retreat.eventData,
376
+ };
377
+ }
378
+ if ((transition && runRetreat) || (transitionSupersede && runRetreat)) {
379
+ throw new Error('Schema migration has conflicting recovery plans');
380
+ }
381
+ return {
382
+ schema: 'comet.native.schema-migration.v1',
383
+ id: journal.id,
384
+ change: expectedName,
385
+ fromSchema: journal.fromSchema,
386
+ toSchema: journal.toSchema,
387
+ sourceHash: journal.sourceHash,
388
+ targetHash: journal.targetHash,
389
+ createdAt: journal.createdAt,
390
+ nextState,
391
+ ...(transition ? { transition } : {}),
392
+ ...(transitionSupersede ? { transitionSupersede } : {}),
393
+ ...(runRetreat ? { runRetreat } : {}),
394
+ };
395
+ }
396
+ export async function inspectPendingNativeSchemaMigration(paths, name) {
397
+ const file = nativeSchemaMigrationJournalFile(paths, name);
398
+ await resolveContainedNativePath(paths.nativeRoot, file);
399
+ try {
400
+ const source = await readNativeProtectedTextFile({
401
+ root: paths.nativeRoot,
402
+ file,
403
+ maxBytes: 512 * 1024,
404
+ label: 'Native schema migration journal',
405
+ });
406
+ return parseMigrationJournal(JSON.parse(source.text), name);
407
+ }
408
+ catch (error) {
409
+ if (error.code === 'ENOENT')
410
+ return null;
411
+ throw error;
412
+ }
413
+ }
414
+ async function ensureMigrationBaseline(paths, name, createdAt) {
415
+ const stored = await readNativeBaselineManifest(paths, name);
416
+ const baseline = stored
417
+ ? await filterNativeContentSnapshotToProjectScope(paths, stored)
418
+ : await createNativeContentSnapshot(paths, {
419
+ now: new Date(createdAt),
420
+ origin: 'legacy-migration',
421
+ });
422
+ if (!baseline.complete) {
423
+ const health = inspectNativeContentSnapshotHealth(baseline);
424
+ const omittedByReason = baseline.omitted.reduce((counts, item) => {
425
+ counts[item.reason] = (counts[item.reason] ?? 0) + 1;
426
+ return counts;
427
+ }, {});
428
+ const overflowCount = baseline.omissionOverflow?.count ?? 0;
429
+ if (overflowCount > 0)
430
+ omittedByReason.overflow = overflowCount;
431
+ throw new NativeBaselineIncompleteError(name, baseline.omittedCount, omittedByReason, health.samplePaths, health.sampleTruncated);
432
+ }
433
+ if (stored === null)
434
+ await writeNativeBaselineManifest(paths, name, baseline);
435
+ }
436
+ async function optionalFileHash(file) {
437
+ try {
438
+ return await sha256File(file);
439
+ }
440
+ catch (error) {
441
+ if (error.code === 'ENOENT')
442
+ return null;
443
+ throw error;
444
+ }
445
+ }
446
+ function expectedSupersedeEvent(journal, sequence) {
447
+ const supersede = journal.transitionSupersede;
448
+ return {
449
+ sequence,
450
+ timestamp: journal.createdAt,
451
+ type: 'state_migrated',
452
+ runId: supersede.nextRun.runId,
453
+ data: {
454
+ ...supersede.eventData,
455
+ migrationId: journal.id,
456
+ evidenceHash: supersede.evidenceHash,
457
+ },
458
+ };
459
+ }
460
+ async function inspectSupersedeEvent(paths, journal) {
461
+ const supersede = journal.transitionSupersede;
462
+ const changeDir = nativeChangeDir(paths, journal.change);
463
+ const trajectory = await readNativeTrajectory(changeDir, supersede.nextRun.trajectoryRef);
464
+ const matches = trajectory
465
+ .map((event, index) => ({ event, index }))
466
+ .filter(({ event }) => event.data.migrationId === journal.id);
467
+ if (matches.length > 1) {
468
+ throw new Error(`Native schema migration event ${journal.id} is duplicated`);
469
+ }
470
+ const match = matches[0];
471
+ if (match && !isDeepStrictEqual(match.event, expectedSupersedeEvent(journal, match.index + 1))) {
472
+ throw new Error(`Native schema migration event ${journal.id} changed`);
473
+ }
474
+ return { trajectoryLength: trajectory.length, sequence: match?.event.sequence ?? null };
475
+ }
476
+ async function assertSupersedeSourceBeforeMutation(paths, journal, stateAtTarget) {
477
+ if (!journal.transitionSupersede)
478
+ return;
479
+ const transitionFile = nativeTransitionJournalFile(paths, journal.change);
480
+ const actualHash = await optionalFileHash(transitionFile);
481
+ if (actualHash === journal.transitionSupersede.sourceHash)
482
+ return;
483
+ if (actualHash !== null) {
484
+ throw new Error(`Native superseded transition source changed for ${journal.change}: expected ${journal.transitionSupersede.sourceHash}, actual ${actualHash}`);
485
+ }
486
+ const run = await readNativeRunState(nativeChangeDir(paths, journal.change));
487
+ const event = await inspectSupersedeEvent(paths, journal);
488
+ const checkpoint = await readNativeCheckpoint(nativeChangeDir(paths, journal.change), journal.transitionSupersede.nextRun.checkpointRef);
489
+ if (!stateAtTarget ||
490
+ !run ||
491
+ !sameRunState(run, journal.transitionSupersede.nextRun) ||
492
+ event.sequence === null ||
493
+ !checkpoint ||
494
+ checkpoint.runId !== journal.transitionSupersede.nextRun.runId ||
495
+ checkpoint.stateVersion !== journal.transitionSupersede.nextRun.iteration ||
496
+ checkpoint.trajectoryOffset !== event.sequence ||
497
+ checkpoint.contextHash !== null ||
498
+ checkpoint.artifactsHash !== sha256Text(journal.transitionSupersede.evidenceHash) ||
499
+ checkpoint.createdAt !== journal.createdAt) {
500
+ throw new Error(`Native superseded transition disappeared before migration ${journal.id} was durable`);
501
+ }
502
+ }
503
+ async function continueTransitionSupersede(paths, journal, hooks) {
504
+ const supersede = journal.transitionSupersede;
505
+ if (!supersede)
506
+ return;
507
+ const changeDir = nativeChangeDir(paths, journal.change);
508
+ const currentRun = await readNativeRunState(changeDir);
509
+ if (!currentRun) {
510
+ throw new Error(`Native schema migration Run state disappeared for ${journal.change}`);
511
+ }
512
+ if (!sameRunState(currentRun, supersede.nextRun)) {
513
+ if (!sameRunState(currentRun, supersede.previousRun)) {
514
+ throw new Error(`Native schema migration Run source changed for ${journal.change}`);
515
+ }
516
+ await writeNativeRunState(changeDir, supersede.nextRun);
517
+ await hooks?.afterRunStateWritten?.(journal);
518
+ }
519
+ if (!sameRunState((await readNativeRunState(changeDir)), supersede.nextRun)) {
520
+ throw new Error(`Native schema migration Run write diverged for ${journal.change}`);
521
+ }
522
+ let event = await inspectSupersedeEvent(paths, journal);
523
+ if (event.sequence === null) {
524
+ const appended = await appendNativeTrajectoryEvent({
525
+ changeDir,
526
+ run: supersede.nextRun,
527
+ type: 'state_migrated',
528
+ data: {
529
+ ...supersede.eventData,
530
+ migrationId: journal.id,
531
+ evidenceHash: supersede.evidenceHash,
532
+ },
533
+ now: new Date(journal.createdAt),
534
+ });
535
+ event = { trajectoryLength: appended.sequence, sequence: appended.sequence };
536
+ }
537
+ await hooks?.afterTrajectoryWritten?.(journal);
538
+ await writeNativeCheckpoint({
539
+ changeDir,
540
+ run: supersede.nextRun,
541
+ trajectoryOffset: event.sequence,
542
+ evidenceHash: supersede.evidenceHash,
543
+ now: new Date(journal.createdAt),
544
+ });
545
+ await hooks?.afterCheckpointWritten?.(journal);
546
+ const transitionFile = nativeTransitionJournalFile(paths, journal.change);
547
+ const transitionHash = await optionalFileHash(transitionFile);
548
+ if (transitionHash !== null) {
549
+ if (transitionHash !== supersede.sourceHash) {
550
+ throw new Error(`Native superseded transition changed before removal for ${journal.change}`);
551
+ }
552
+ await fs.rm(transitionFile);
553
+ await hooks?.afterTransitionSuperseded?.(journal);
554
+ }
555
+ }
556
+ async function continueRunRetreat(paths, journal, hooks) {
557
+ if (!journal.runRetreat)
558
+ return;
559
+ const changeDir = nativeChangeDir(paths, journal.change);
560
+ const currentRun = await readNativeRunState(changeDir);
561
+ if (!currentRun) {
562
+ throw new Error(`Native schema migration Run state disappeared for ${journal.change}`);
563
+ }
564
+ if (!sameRunState(currentRun, journal.runRetreat.nextRun)) {
565
+ if (!sameRunState(currentRun, journal.runRetreat.previousRun)) {
566
+ throw new Error(`Native schema migration Run source changed for ${journal.change}`);
567
+ }
568
+ await writeNativeRunState(changeDir, journal.runRetreat.nextRun);
569
+ await hooks?.afterRunStateWritten?.(journal);
570
+ }
571
+ let trajectory = await readNativeTrajectory(changeDir, journal.runRetreat.nextRun.trajectoryRef);
572
+ let event = trajectory.find((item) => item.type === 'state_migrated' && item.data.migrationId === journal.id);
573
+ if (!event) {
574
+ event = await appendNativeTrajectoryEvent({
575
+ changeDir,
576
+ run: journal.runRetreat.nextRun,
577
+ type: 'state_migrated',
578
+ data: {
579
+ ...journal.runRetreat.eventData,
580
+ migrationId: journal.id,
581
+ evidenceHash: journal.runRetreat.evidenceHash,
582
+ },
583
+ now: new Date(journal.createdAt),
584
+ });
585
+ trajectory = [...trajectory, event];
586
+ }
587
+ await hooks?.afterTrajectoryWritten?.(journal);
588
+ await writeNativeCheckpoint({
589
+ changeDir,
590
+ run: journal.runRetreat.nextRun,
591
+ trajectoryOffset: trajectory.length,
592
+ evidenceHash: journal.runRetreat.evidenceHash,
593
+ now: new Date(journal.createdAt),
594
+ });
595
+ await hooks?.afterCheckpointWritten?.(journal);
596
+ }
597
+ async function continueNativeSchemaMigrationLocked(paths, name, hooks) {
598
+ const journal = await inspectPendingNativeSchemaMigration(paths, name);
599
+ if (!journal)
600
+ return null;
601
+ if (await hasPendingNativeCheckpointRecovery(paths, name)) {
602
+ throw new Error(`Native change ${name} has a pending progress checkpoint; recover it with its v2 runtime before schema migration`);
603
+ }
604
+ const changeFile = path.join(nativeChangeDir(paths, name), NATIVE_CHANGE_STATE_FILE);
605
+ const actualHash = await sha256File(changeFile);
606
+ await assertSupersedeSourceBeforeMutation(paths, journal, actualHash === journal.targetHash);
607
+ // Baseline safety must be established before writing state, Run, trajectory, or checkpoint.
608
+ // A failed capture leaves only the prepared migration journal and the original state, so retry
609
+ // remains deterministic after the project omission is resolved.
610
+ await ensureMigrationBaseline(paths, name, journal.createdAt);
611
+ if (actualHash !== journal.targetHash) {
612
+ if (actualHash !== journal.sourceHash) {
613
+ throw new Error(`Native schema migration source changed for ${name}: expected ${journal.sourceHash}, actual ${actualHash}`);
614
+ }
615
+ await atomicWriteText(changeFile, stringify(migrationStateDocument(journal.nextState)));
616
+ await hooks?.afterStateWritten?.(journal);
617
+ }
618
+ if (journal.transition) {
619
+ const transitionFile = nativeTransitionJournalFile(paths, name);
620
+ const actualTransitionHash = await sha256File(transitionFile);
621
+ if (actualTransitionHash !== journal.transition.targetHash) {
622
+ if (actualTransitionHash !== journal.transition.sourceHash) {
623
+ throw new Error(`Native transition migration source changed for ${name}: expected ${journal.transition.sourceHash}, actual ${actualTransitionHash}`);
624
+ }
625
+ await atomicWriteJson(transitionFile, journal.transition.nextJournal);
626
+ await hooks?.afterTransitionWritten?.(journal);
627
+ }
628
+ }
629
+ await continueTransitionSupersede(paths, journal, hooks);
630
+ await continueRunRetreat(paths, journal, hooks);
631
+ await fs.rm(nativeSchemaMigrationJournalFile(paths, name), { force: true });
632
+ return journal.nextState;
633
+ }
634
+ async function stableEvidenceRetreat(options) {
635
+ const changeDir = nativeChangeDir(options.paths, options.state.name);
636
+ const run = await readNativeRunState(changeDir);
637
+ if (!run ||
638
+ run.runId !== options.state.run_id ||
639
+ run.currentStep !== options.state.phase ||
640
+ (run.currentStep !== 'verify' && run.currentStep !== 'archive') ||
641
+ run.pending !== null) {
642
+ throw new Error(`Native v2 ${options.state.phase} change ${options.state.name} has no consistent Run state for safe Build retreat`);
643
+ }
644
+ const nextRun = {
645
+ ...run,
646
+ currentStep: 'build',
647
+ iteration: run.iteration + 1,
648
+ pending: null,
649
+ status: 'running',
650
+ };
651
+ const evidenceHash = sha256Text(`schema-v3-evidence-retreat:${options.state.name}:${options.state.revision}:${options.migrationId}`);
652
+ return {
653
+ previousRun: run,
654
+ nextRun,
655
+ evidenceHash,
656
+ eventData: {
657
+ fromSchema: NATIVE_V2_CHANGE_SCHEMA,
658
+ toSchema: NATIVE_CHANGE_SCHEMA,
659
+ previousPhase: options.state.phase,
660
+ nextPhase: 'build',
661
+ reason: 'implementation-scope-required',
662
+ },
663
+ };
664
+ }
665
+ async function pendingEvidenceTransitionSupersede(options) {
666
+ const { journal, state } = options;
667
+ const requiresV3Evidence = (journal.previousState.phase === 'build' && journal.nextState.phase === 'verify') ||
668
+ (journal.previousState.phase === 'verify' &&
669
+ (journal.nextState.phase === 'build' || journal.nextState.phase === 'archive'));
670
+ if (!requiresV3Evidence) {
671
+ throw new Error('Only a pending v2 evidence-bearing transition can be superseded');
672
+ }
673
+ const stateIsPrevious = sameV2State(state, journal.previousState);
674
+ const stateIsNext = sameV2State(state, journal.nextState);
675
+ if (!stateIsPrevious && !stateIsNext) {
676
+ throw new Error(`Native change ${state.name} does not match its v2 evidence transition`);
677
+ }
678
+ const changeDir = nativeChangeDir(options.paths, state.name);
679
+ const currentRun = await readNativeRunState(changeDir);
680
+ if (!currentRun)
681
+ throw new Error(`Native v2 transition Run is missing for ${state.name}`);
682
+ const runIsPrevious = journal.previousRun !== null && sameRunState(currentRun, journal.previousRun);
683
+ const runIsNext = sameRunState(currentRun, journal.nextRun);
684
+ if ((!runIsPrevious && !runIsNext) || (stateIsNext && !runIsNext)) {
685
+ throw new Error(`Native v2 transition Run does not match its durable state for ${state.name}`);
686
+ }
687
+ const trajectory = await readNativeTrajectory(changeDir, journal.nextRun.trajectoryRef);
688
+ const collisions = trajectory
689
+ .map((event, index) => ({ event, index }))
690
+ .filter(({ event }) => event.data.transitionId === journal.id);
691
+ if (collisions.length > 1) {
692
+ throw new Error(`Native v2 evidence transition ${journal.id} has duplicate trajectory events`);
693
+ }
694
+ const durable = collisions[0];
695
+ if (durable) {
696
+ const expected = {
697
+ sequence: durable.index + 1,
698
+ timestamp: journal.createdAt,
699
+ type: 'state_transitioned',
700
+ runId: journal.nextRun.runId,
701
+ data: { ...journal.eventData, transitionId: journal.id },
702
+ };
703
+ if (!isDeepStrictEqual(durable.event, expected) || !stateIsNext || !runIsNext) {
704
+ throw new Error(`Native v2 evidence transition ${journal.id} trajectory event does not match its journal`);
705
+ }
706
+ }
707
+ const nextState = {
708
+ ...upgradeV2StateToV3(state),
709
+ revision: state.revision + (state.phase === 'build' ? 0 : 1),
710
+ phase: 'build',
711
+ verification_result: 'pending',
712
+ verification_report: null,
713
+ implementation_scope: null,
714
+ verification_evidence: null,
715
+ partial_allowance: null,
716
+ archived: false,
717
+ };
718
+ const previousRun = currentRun;
719
+ const nextRun = currentRun.currentStep !== 'build'
720
+ ? {
721
+ ...currentRun,
722
+ currentStep: 'build',
723
+ iteration: currentRun.iteration + 1,
724
+ pending: null,
725
+ status: 'running',
726
+ }
727
+ : currentRun;
728
+ const evidenceHash = sha256Text(JSON.stringify({
729
+ operation: 'supersede-v2-evidence-transition',
730
+ change: state.name,
731
+ transitionId: journal.id,
732
+ migrationId: options.migrationId,
733
+ previousPhase: state.phase,
734
+ nextPhase: 'build',
735
+ reason: 'implementation-scope-required',
736
+ previousIteration: currentRun.iteration,
737
+ nextRevision: nextState.revision,
738
+ }));
739
+ return {
740
+ nextState,
741
+ plan: {
742
+ sourceHash: await sha256File(nativeTransitionJournalFile(options.paths, state.name)),
743
+ transitionId: journal.id,
744
+ previousRun,
745
+ nextRun,
746
+ evidenceHash,
747
+ eventData: {
748
+ fromSchema: NATIVE_V2_CHANGE_SCHEMA,
749
+ toSchema: NATIVE_CHANGE_SCHEMA,
750
+ previousPhase: state.phase,
751
+ nextPhase: 'build',
752
+ reason: 'implementation-scope-required',
753
+ supersededTransitionId: journal.id,
754
+ },
755
+ },
756
+ };
757
+ }
758
+ async function prepareNextMigration(options) {
759
+ let nextState;
760
+ let transition;
761
+ let transitionSupersede;
762
+ let runRetreat;
763
+ if (options.state.schema === NATIVE_LEGACY_CHANGE_SCHEMA) {
764
+ nextState = upgradeV1StateToV2(options.state, 1);
765
+ if (options.pendingTransition) {
766
+ if (options.pendingTransition.journal.schema !== NATIVE_LEGACY_TRANSITION_SCHEMA) {
767
+ throw new Error('Native v1 change has a transition from another schema generation');
768
+ }
769
+ const nextJournal = upgradeV1TransitionToV2(options.pendingTransition.journal);
770
+ if (sameV1State(options.state, options.pendingTransition.journal.previousState)) {
771
+ nextState = nextJournal.previousState;
772
+ }
773
+ else if (sameV1State(options.state, options.pendingTransition.journal.nextState)) {
774
+ nextState = nextJournal.nextState;
775
+ }
776
+ else {
777
+ throw new Error(`Native change ${options.name} does not match either state in its v1 transition journal`);
778
+ }
779
+ const transitionFile = nativeTransitionJournalFile(options.paths, options.name);
780
+ transition = {
781
+ sourceHash: await sha256File(transitionFile),
782
+ targetHash: sha256Text(transitionContent(nextJournal)),
783
+ nextJournal,
784
+ };
785
+ }
786
+ }
787
+ else {
788
+ if (options.pendingTransition) {
789
+ if (options.pendingTransition.journal.schema !== NATIVE_V2_TRANSITION_SCHEMA) {
790
+ throw new Error('Native v2 change has a transition from another schema generation');
791
+ }
792
+ const v2Journal = options.pendingTransition.journal;
793
+ const requiresV3Evidence = (v2Journal.previousState.phase === 'build' && v2Journal.nextState.phase === 'verify') ||
794
+ (v2Journal.previousState.phase === 'verify' &&
795
+ (v2Journal.nextState.phase === 'build' || v2Journal.nextState.phase === 'archive'));
796
+ if (requiresV3Evidence) {
797
+ const supersede = await pendingEvidenceTransitionSupersede({
798
+ paths: options.paths,
799
+ state: options.state,
800
+ journal: v2Journal,
801
+ migrationId: options.id,
802
+ });
803
+ nextState = supersede.nextState;
804
+ transitionSupersede = supersede.plan;
805
+ }
806
+ else {
807
+ const nextJournal = upgradeV2TransitionToV3(v2Journal);
808
+ if (sameV2State(options.state, options.pendingTransition.journal.previousState)) {
809
+ nextState = nextJournal.previousState;
810
+ }
811
+ else if (sameV2State(options.state, options.pendingTransition.journal.nextState)) {
812
+ nextState = nextJournal.nextState;
813
+ }
814
+ else {
815
+ throw new Error(`Native change ${options.name} does not match either state in its v2 transition journal`);
816
+ }
817
+ const transitionFile = nativeTransitionJournalFile(options.paths, options.name);
818
+ transition = {
819
+ sourceHash: await sha256File(transitionFile),
820
+ targetHash: sha256Text(transitionContent(nextJournal)),
821
+ nextJournal,
822
+ };
823
+ }
824
+ }
825
+ else {
826
+ nextState = upgradeV2StateToV3(options.state, {
827
+ retreatEvidencePhase: true,
828
+ incrementRetreatRevision: true,
829
+ });
830
+ if (options.state.phase === 'verify' || options.state.phase === 'archive') {
831
+ runRetreat = await stableEvidenceRetreat({
832
+ paths: options.paths,
833
+ state: options.state,
834
+ migrationId: options.id,
835
+ });
836
+ }
837
+ }
838
+ }
839
+ const changeFile = path.join(nativeChangeDir(options.paths, options.name), NATIVE_CHANGE_STATE_FILE);
840
+ const targetContent = stringify(migrationStateDocument(nextState));
841
+ return {
842
+ schema: 'comet.native.schema-migration.v1',
843
+ id: options.id,
844
+ change: options.name,
845
+ fromSchema: options.state.schema,
846
+ toSchema: options.state.schema === NATIVE_LEGACY_CHANGE_SCHEMA
847
+ ? NATIVE_V2_CHANGE_SCHEMA
848
+ : NATIVE_CHANGE_SCHEMA,
849
+ sourceHash: await sha256File(changeFile),
850
+ targetHash: sha256Text(targetContent),
851
+ createdAt: options.now.toISOString(),
852
+ nextState,
853
+ ...(transition ? { transition } : {}),
854
+ ...(transitionSupersede ? { transitionSupersede } : {}),
855
+ ...(runRetreat ? { runRetreat } : {}),
856
+ };
857
+ }
858
+ export async function migrateNativeChange(options) {
859
+ return withNativeMutationLock(options.paths, `migrate schema for ${options.name}`, () => withNativeTransitionLock(options.paths, options.name, `migrate schema for ${options.name}`, async () => {
860
+ for (let step = 0; step < 3; step += 1) {
861
+ const continued = await continueNativeSchemaMigrationLocked(options.paths, options.name, options.hooks);
862
+ if (continued?.schema === NATIVE_CHANGE_SCHEMA)
863
+ return continued;
864
+ const inspection = await inspectNativeChange(options.paths, options.name);
865
+ if (inspection.status === 'current' && inspection.state) {
866
+ return inspection.state;
867
+ }
868
+ if (inspection.status !== 'migration-required' || !inspection.state) {
869
+ throw new Error(inspection.message ?? `Native change ${options.name} cannot be migrated`);
870
+ }
871
+ if (await hasPendingNativeCheckpointRecovery(options.paths, options.name)) {
872
+ throw new Error(`Native change ${options.name} has a pending progress checkpoint; recover it with its v2 runtime before schema migration`);
873
+ }
874
+ const state = inspection.state;
875
+ if (state.schema !== NATIVE_LEGACY_CHANGE_SCHEMA &&
876
+ state.schema !== NATIVE_V2_CHANGE_SCHEMA) {
877
+ throw new Error(`Native change ${options.name} has no supported migration route`);
878
+ }
879
+ const pendingTransition = await inspectPendingNativeTransitionSchema(options.paths, options.name);
880
+ if (pendingTransition?.status === 'current') {
881
+ throw new Error(`Native change ${options.name} has a current-schema pending transition; recover it before schema migration`);
882
+ }
883
+ const journal = await prepareNextMigration({
884
+ paths: options.paths,
885
+ name: options.name,
886
+ state,
887
+ pendingTransition,
888
+ now: options.now ?? new Date(),
889
+ id: options.id?.() ?? randomUUID(),
890
+ });
891
+ const journalFile = nativeSchemaMigrationJournalFile(options.paths, options.name);
892
+ await resolveContainedNativePath(options.paths.nativeRoot, journalFile);
893
+ await atomicWriteJson(journalFile, journal);
894
+ await options.hooks?.afterPrepared?.(journal);
895
+ }
896
+ throw new Error(`Native change ${options.name} exceeded the supported schema migration path`);
897
+ }));
898
+ }
899
+ //# sourceMappingURL=native-schema-migration.js.map