@cleocode/cleo 2026.9.5 → 2026.9.7

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 (382) hide show
  1. package/dist/cli/index.js +32 -3
  2. package/dist/cli/index.js.map +1 -1
  3. package/package.json +13 -13
  4. package/scripts/copy-studio-dist.mjs +97 -3
  5. package/studio-dist/client/_app/immutable/chunks/BGmpyfzD.js +1 -0
  6. package/studio-dist/client/_app/immutable/chunks/{CKXdW4mW.js → DVHIxkgs.js} +1 -1
  7. package/studio-dist/client/_app/immutable/chunks/{DrfFUIvQ.js → TX-23QW3.js} +1 -1
  8. package/studio-dist/client/_app/immutable/chunks/{C7UP-KLT.js → eK8hf4s7.js} +1 -1
  9. package/studio-dist/client/_app/immutable/entry/{app.BwkUGH1B.js → app.BoQ7cgT2.js} +2 -2
  10. package/studio-dist/client/_app/immutable/entry/start.Cg1v8DU4.js +1 -0
  11. package/studio-dist/client/_app/immutable/nodes/{0.DcUJW-xi.js → 0.CZzEEyVh.js} +1 -1
  12. package/studio-dist/client/_app/immutable/nodes/{1.DyTt_cQs.js → 1.Bj3Opbua.js} +1 -1
  13. package/studio-dist/client/_app/immutable/nodes/{15.LRqqoueS.js → 15.BfXgiwMC.js} +1 -1
  14. package/studio-dist/client/_app/immutable/nodes/{16.-hGPNXOI.js → 16.mEwy9cqh.js} +1 -1
  15. package/studio-dist/client/_app/immutable/nodes/{17.ChMxgTIY.js → 17.DP2QtQGn.js} +1 -1
  16. package/studio-dist/client/_app/immutable/nodes/{18.B9zeITVb.js → 18.Bu0054sX.js} +1 -1
  17. package/studio-dist/client/_app/immutable/nodes/{20.BHg5roNq.js → 20.B1AIHdkP.js} +1 -1
  18. package/studio-dist/client/_app/immutable/nodes/{24.B_s9aY5m.js → 24.BUoUu37z.js} +1 -1
  19. package/studio-dist/client/_app/immutable/nodes/{25.DZXkDxw_.js → 25.ddZ1_EFk.js} +1 -1
  20. package/studio-dist/client/_app/immutable/nodes/{26.BBRbdwIG.js → 26.6OcmQbLV.js} +1 -1
  21. package/studio-dist/client/_app/immutable/nodes/{3.DMYcrZeG.js → 3.Dyir4xXj.js} +1 -1
  22. package/studio-dist/client/_app/version.json +1 -1
  23. package/studio-dist/server/chunks/{0-CM4iQVYP.js → 0-CvsKDxQ6.js} +3 -3
  24. package/studio-dist/server/chunks/{1-BQFD-dx6.js → 1-ck_x2Hf0.js} +3 -3
  25. package/studio-dist/server/chunks/{15-Cng10n82.js → 15-BvUNl3KL.js} +3 -3
  26. package/studio-dist/server/chunks/{16-u3KwU3N4.js → 16-De6EzPSa.js} +3 -3
  27. package/studio-dist/server/chunks/{17-BDtxQX9n.js → 17-CZNsiZhi.js} +3 -3
  28. package/studio-dist/server/chunks/{18-wwUoSO4F.js → 18-CbxxjZox.js} +3 -3
  29. package/studio-dist/server/chunks/{20-B-0CBvqY.js → 20-DVU22np7.js} +3 -3
  30. package/studio-dist/server/chunks/{24-BeVcofpU.js → 24-CVlymvLF.js} +3 -3
  31. package/studio-dist/server/chunks/{25-DIuzTPOu.js → 25-CAg6Xcmn.js} +3 -3
  32. package/studio-dist/server/chunks/{26-CY8x0KNI.js → 26-_nfVTvNi.js} +3 -3
  33. package/studio-dist/server/chunks/{3-p3RwD-FY.js → 3-B8KhfvHp.js} +3 -3
  34. package/studio-dist/server/chunks/{_layout.svelte-rswfOTDe.js → _layout.svelte-BEIGQcIv.js} +4 -4
  35. package/studio-dist/server/chunks/{_page.svelte-DaYxqOUS.js → _page.svelte-2cgtvHwW.js} +3 -3
  36. package/studio-dist/server/chunks/{_page.svelte-BT1YF8j2.js → _page.svelte-9OQphlnm.js} +4 -4
  37. package/studio-dist/server/chunks/{_page.svelte-CiIYIPG9.js → _page.svelte-BIlhmugm.js} +3 -3
  38. package/studio-dist/server/chunks/{_page.svelte-C9twD2l1.js → _page.svelte-BgwL2Gyu.js} +3 -3
  39. package/studio-dist/server/chunks/{_page.svelte-DKVwBmIp.js → _page.svelte-C_VSL8NW.js} +4 -4
  40. package/studio-dist/server/chunks/{_page.svelte-CHH1vmfg.js → _page.svelte-DOWw416I.js} +3 -3
  41. package/studio-dist/server/chunks/{_page.svelte-D8NhlkPD.js → _page.svelte-Wfx7ww_h.js} +3 -3
  42. package/studio-dist/server/chunks/{_page.svelte-DZEnHo1L.js → _page.svelte-l4Z_xjl9.js} +3 -3
  43. package/studio-dist/server/chunks/{_page.svelte-DmTXiXKT.js → _page.svelte-tYN7_LXI.js} +3 -3
  44. package/studio-dist/server/chunks/{client-ym-URLFs.js → client-CgX38JBu.js} +2 -2
  45. package/studio-dist/server/chunks/{error.svelte-Bt1EbBZe.js → error.svelte-CplNulnS.js} +3 -3
  46. package/studio-dist/server/chunks/{internal-D3i_4gCl.js → internal-D6eWgsHJ.js} +2 -2
  47. package/studio-dist/server/chunks/{stores-ByevKXL9.js → stores-5DmdjPCH.js} +2 -2
  48. package/studio-dist/server/index.js +1 -1
  49. package/studio-dist/server/manifest.js +12 -12
  50. package/studio-dist/client/_app/immutable/assets/ort-wasm-simd-threaded.asyncify.BrebZMa_.wasm +0 -0
  51. package/studio-dist/client/_app/immutable/chunks/9yrFrmKZ.js +0 -1
  52. package/studio-dist/client/_app/immutable/entry/start.BcsID0Sf.js +0 -1
  53. package/studio-dist/server/chunks/0-CM4iQVYP.js.map +0 -1
  54. package/studio-dist/server/chunks/1-BQFD-dx6.js.map +0 -1
  55. package/studio-dist/server/chunks/10-DvOD4ksa.js.map +0 -1
  56. package/studio-dist/server/chunks/11-DMnBZ02H.js.map +0 -1
  57. package/studio-dist/server/chunks/12-CCyRyRWX.js.map +0 -1
  58. package/studio-dist/server/chunks/13-Dx1c3a_X.js.map +0 -1
  59. package/studio-dist/server/chunks/14-Bo-dTCaZ.js.map +0 -1
  60. package/studio-dist/server/chunks/15-Cng10n82.js.map +0 -1
  61. package/studio-dist/server/chunks/16-u3KwU3N4.js.map +0 -1
  62. package/studio-dist/server/chunks/17-BDtxQX9n.js.map +0 -1
  63. package/studio-dist/server/chunks/18-wwUoSO4F.js.map +0 -1
  64. package/studio-dist/server/chunks/19-DqHyladS.js.map +0 -1
  65. package/studio-dist/server/chunks/2-COvmA-ZA.js.map +0 -1
  66. package/studio-dist/server/chunks/20-B-0CBvqY.js.map +0 -1
  67. package/studio-dist/server/chunks/21-DXK9ptAC.js.map +0 -1
  68. package/studio-dist/server/chunks/22-DD5CLWJC.js.map +0 -1
  69. package/studio-dist/server/chunks/23-D_tUnnoc.js.map +0 -1
  70. package/studio-dist/server/chunks/24-BeVcofpU.js.map +0 -1
  71. package/studio-dist/server/chunks/25-DIuzTPOu.js.map +0 -1
  72. package/studio-dist/server/chunks/26-CY8x0KNI.js.map +0 -1
  73. package/studio-dist/server/chunks/27-C9edghG4.js.map +0 -1
  74. package/studio-dist/server/chunks/28-VemTJGyc.js.map +0 -1
  75. package/studio-dist/server/chunks/29-CXP-m29t.js.map +0 -1
  76. package/studio-dist/server/chunks/3-p3RwD-FY.js.map +0 -1
  77. package/studio-dist/server/chunks/30-QiM1S4cJ.js.map +0 -1
  78. package/studio-dist/server/chunks/31-BwdY9NnB.js.map +0 -1
  79. package/studio-dist/server/chunks/4-CSaG4HjO.js.map +0 -1
  80. package/studio-dist/server/chunks/5-i5ry4y3C.js.map +0 -1
  81. package/studio-dist/server/chunks/6-DR1GWBMT.js.map +0 -1
  82. package/studio-dist/server/chunks/7-DSNwn3aQ.js.map +0 -1
  83. package/studio-dist/server/chunks/8-Bj0bx07K.js.map +0 -1
  84. package/studio-dist/server/chunks/9-B3Tz0mZq.js.map +0 -1
  85. package/studio-dist/server/chunks/AwsRestJsonProtocol-BZuoNBmL.js.map +0 -1
  86. package/studio-dist/server/chunks/HeroHeader-v4Q9vaGr.js.map +0 -1
  87. package/studio-dist/server/chunks/Sparkline-BJ-GuhRd.js.map +0 -1
  88. package/studio-dist/server/chunks/StatBlock-DHJMmOCx.js.map +0 -1
  89. package/studio-dist/server/chunks/Tabs-DzG6Bn9a.js.map +0 -1
  90. package/studio-dist/server/chunks/UnionSerde-BflIkhKj.js.map +0 -1
  91. package/studio-dist/server/chunks/_dispatch-ncuRztUQ.js.map +0 -1
  92. package/studio-dist/server/chunks/_lafs-C3_fBF_X.js.map +0 -1
  93. package/studio-dist/server/chunks/_layout.svelte-rswfOTDe.js.map +0 -1
  94. package/studio-dist/server/chunks/_page.svelte-BT1YF8j2.js.map +0 -1
  95. package/studio-dist/server/chunks/_page.svelte-BVVTrzTL.js.map +0 -1
  96. package/studio-dist/server/chunks/_page.svelte-BXyoMME1.js.map +0 -1
  97. package/studio-dist/server/chunks/_page.svelte-B_pq-Z98.js.map +0 -1
  98. package/studio-dist/server/chunks/_page.svelte-Byz2djto.js.map +0 -1
  99. package/studio-dist/server/chunks/_page.svelte-C3aIui4o.js.map +0 -1
  100. package/studio-dist/server/chunks/_page.svelte-C9twD2l1.js.map +0 -1
  101. package/studio-dist/server/chunks/_page.svelte-CCoTp89s.js.map +0 -1
  102. package/studio-dist/server/chunks/_page.svelte-CHH1vmfg.js.map +0 -1
  103. package/studio-dist/server/chunks/_page.svelte-CHzXuw2Q.js.map +0 -1
  104. package/studio-dist/server/chunks/_page.svelte-CYDjW1R0.js.map +0 -1
  105. package/studio-dist/server/chunks/_page.svelte-CiIYIPG9.js.map +0 -1
  106. package/studio-dist/server/chunks/_page.svelte-Clbkk1gm.js.map +0 -1
  107. package/studio-dist/server/chunks/_page.svelte-CophUar3.js.map +0 -1
  108. package/studio-dist/server/chunks/_page.svelte-D8NhlkPD.js.map +0 -1
  109. package/studio-dist/server/chunks/_page.svelte-DKVwBmIp.js.map +0 -1
  110. package/studio-dist/server/chunks/_page.svelte-DUWbZjC7.js.map +0 -1
  111. package/studio-dist/server/chunks/_page.svelte-DYNorA0S.js.map +0 -1
  112. package/studio-dist/server/chunks/_page.svelte-DZEnHo1L.js.map +0 -1
  113. package/studio-dist/server/chunks/_page.svelte-DaYxqOUS.js.map +0 -1
  114. package/studio-dist/server/chunks/_page.svelte-DmTXiXKT.js.map +0 -1
  115. package/studio-dist/server/chunks/_page.svelte-EkXO_YfN.js.map +0 -1
  116. package/studio-dist/server/chunks/_page.svelte-M5D2QnMS.js.map +0 -1
  117. package/studio-dist/server/chunks/_page.svelte-UYiF7YBK.js.map +0 -1
  118. package/studio-dist/server/chunks/_page.svelte-al08ovKm.js.map +0 -1
  119. package/studio-dist/server/chunks/_page.svelte-bGhsrIjS.js.map +0 -1
  120. package/studio-dist/server/chunks/_page.svelte-ksTJUXce.js.map +0 -1
  121. package/studio-dist/server/chunks/_page.svelte-nzffIbBP.js.map +0 -1
  122. package/studio-dist/server/chunks/_server.ts-4NyKAneX.js.map +0 -1
  123. package/studio-dist/server/chunks/_server.ts-4p6cp9ke.js.map +0 -1
  124. package/studio-dist/server/chunks/_server.ts-7hGdxdEI.js.map +0 -1
  125. package/studio-dist/server/chunks/_server.ts-B2E7fxo9.js.map +0 -1
  126. package/studio-dist/server/chunks/_server.ts-B5g3eScF.js.map +0 -1
  127. package/studio-dist/server/chunks/_server.ts-B6b3b-yA.js.map +0 -1
  128. package/studio-dist/server/chunks/_server.ts-BOgGqaZp.js.map +0 -1
  129. package/studio-dist/server/chunks/_server.ts-BPcErnS0.js.map +0 -1
  130. package/studio-dist/server/chunks/_server.ts-BT0Uq2yq.js.map +0 -1
  131. package/studio-dist/server/chunks/_server.ts-BV1HiKZ0.js.map +0 -1
  132. package/studio-dist/server/chunks/_server.ts-BWp3g6Cr.js.map +0 -1
  133. package/studio-dist/server/chunks/_server.ts-BdN4AJ6o.js.map +0 -1
  134. package/studio-dist/server/chunks/_server.ts-Bfr4u3EP.js.map +0 -1
  135. package/studio-dist/server/chunks/_server.ts-Bw7A4zgb.js.map +0 -1
  136. package/studio-dist/server/chunks/_server.ts-C3Jo-ju8.js.map +0 -1
  137. package/studio-dist/server/chunks/_server.ts-C4BcDGqS.js.map +0 -1
  138. package/studio-dist/server/chunks/_server.ts-C5NF-UgC.js.map +0 -1
  139. package/studio-dist/server/chunks/_server.ts-CDMurH5m.js.map +0 -1
  140. package/studio-dist/server/chunks/_server.ts-CGiAXy5i.js.map +0 -1
  141. package/studio-dist/server/chunks/_server.ts-CJA1djzJ.js.map +0 -1
  142. package/studio-dist/server/chunks/_server.ts-COJHCgbq.js.map +0 -1
  143. package/studio-dist/server/chunks/_server.ts-CShsBkeE.js.map +0 -1
  144. package/studio-dist/server/chunks/_server.ts-CUl-Utkt.js.map +0 -1
  145. package/studio-dist/server/chunks/_server.ts-CboRJY0Q.js.map +0 -1
  146. package/studio-dist/server/chunks/_server.ts-CkoJ2HCW.js.map +0 -1
  147. package/studio-dist/server/chunks/_server.ts-CpmMp5D8.js.map +0 -1
  148. package/studio-dist/server/chunks/_server.ts-Cq60m8Pw.js.map +0 -1
  149. package/studio-dist/server/chunks/_server.ts-Cz0zgaUV.js.map +0 -1
  150. package/studio-dist/server/chunks/_server.ts-D0GAFJRb.js.map +0 -1
  151. package/studio-dist/server/chunks/_server.ts-DA6p3pmi.js.map +0 -1
  152. package/studio-dist/server/chunks/_server.ts-DRVz9D-J.js.map +0 -1
  153. package/studio-dist/server/chunks/_server.ts-DSAv66wD.js.map +0 -1
  154. package/studio-dist/server/chunks/_server.ts-DSzRdt1U.js.map +0 -1
  155. package/studio-dist/server/chunks/_server.ts-DThYFaZj.js.map +0 -1
  156. package/studio-dist/server/chunks/_server.ts-DV6pzF-M.js.map +0 -1
  157. package/studio-dist/server/chunks/_server.ts-D_3Pm0gr.js.map +0 -1
  158. package/studio-dist/server/chunks/_server.ts-DcHxdMsm.js.map +0 -1
  159. package/studio-dist/server/chunks/_server.ts-DgbY5EB3.js.map +0 -1
  160. package/studio-dist/server/chunks/_server.ts-Dlfadh2I.js.map +0 -1
  161. package/studio-dist/server/chunks/_server.ts-DnE0f-iC.js.map +0 -1
  162. package/studio-dist/server/chunks/_server.ts-Do9RIPRo.js.map +0 -1
  163. package/studio-dist/server/chunks/_server.ts-DwTRjS4y.js.map +0 -1
  164. package/studio-dist/server/chunks/_server.ts-JallJnps.js.map +0 -1
  165. package/studio-dist/server/chunks/_server.ts-NEFTbJpM.js.map +0 -1
  166. package/studio-dist/server/chunks/_server.ts-ZS1_yMwR.js.map +0 -1
  167. package/studio-dist/server/chunks/_server.ts-_RJXtmfi.js.map +0 -1
  168. package/studio-dist/server/chunks/_server.ts-d-2NvRwX.js.map +0 -1
  169. package/studio-dist/server/chunks/_server.ts-hL92cV7Z.js.map +0 -1
  170. package/studio-dist/server/chunks/_server.ts-k2fApwOp.js.map +0 -1
  171. package/studio-dist/server/chunks/_server.ts-lPlBUIJX.js.map +0 -1
  172. package/studio-dist/server/chunks/_server.ts-rUWMLkIw.js.map +0 -1
  173. package/studio-dist/server/chunks/_server.ts-sv4pA808.js.map +0 -1
  174. package/studio-dist/server/chunks/_server.ts-tKMjUFUP.js.map +0 -1
  175. package/studio-dist/server/chunks/_server.ts-uUx7uT2Y.js.map +0 -1
  176. package/studio-dist/server/chunks/_server.ts-ujoDR2_g.js.map +0 -1
  177. package/studio-dist/server/chunks/abort-events-CDRAJSqb.js.map +0 -1
  178. package/studio-dist/server/chunks/adapters-BkMgPNUM.js.map +0 -1
  179. package/studio-dist/server/chunks/adapters2-CQ3PzoaK.js.map +0 -1
  180. package/studio-dist/server/chunks/api-mode2-3W-I1-XO.js.map +0 -1
  181. package/studio-dist/server/chunks/api2-CmNQzb0b.js.map +0 -1
  182. package/studio-dist/server/chunks/attention-consolidate-CidG1jfH.js.map +0 -1
  183. package/studio-dist/server/chunks/audit-log-BXVi9iyE.js.map +0 -1
  184. package/studio-dist/server/chunks/audit3-DMO_fUGp.js.map +0 -1
  185. package/studio-dist/server/chunks/auto-extract-B84La1Vs.js.map +0 -1
  186. package/studio-dist/server/chunks/brain-CXR7ZT7S.js.map +0 -1
  187. package/studio-dist/server/chunks/brain-consolidator-JGm6mzFf.js.map +0 -1
  188. package/studio-dist/server/chunks/brain-doctor-Dc2WqVbs.js.map +0 -1
  189. package/studio-dist/server/chunks/brain-embedding-Djw9ekXu.js.map +0 -1
  190. package/studio-dist/server/chunks/brain-lifecycle-BOOa876K.js.map +0 -1
  191. package/studio-dist/server/chunks/brain-maintenance-U6VvsvmK.js.map +0 -1
  192. package/studio-dist/server/chunks/brain-maintenance2-CwVSmfDT.js.map +0 -1
  193. package/studio-dist/server/chunks/brain-retrieval2-exR8mdgh.js.map +0 -1
  194. package/studio-dist/server/chunks/brain-search-CpSh-SNi.js.map +0 -1
  195. package/studio-dist/server/chunks/brain-search2-CwI2cXgg.js.map +0 -1
  196. package/studio-dist/server/chunks/brain-similarity-DI4yzm9e.js.map +0 -1
  197. package/studio-dist/server/chunks/brain-stdp2-BxSBIlSr.js.map +0 -1
  198. package/studio-dist/server/chunks/brain-writer-handlers-Dwu0QCAA.js.map +0 -1
  199. package/studio-dist/server/chunks/brain-writer-thread-6n7wI7Gy.js.map +0 -1
  200. package/studio-dist/server/chunks/branch-lock-Cq7zzmFK.js.map +0 -1
  201. package/studio-dist/server/chunks/branch-lock2-CmDc4CZW.js.map +0 -1
  202. package/studio-dist/server/chunks/cancelled-child-waiver-audit-DkesrN83.js.map +0 -1
  203. package/studio-dist/server/chunks/catalog-model-resolver-Bas9qnoP.js.map +0 -1
  204. package/studio-dist/server/chunks/catalog-model-resolver2-Cexk2TN0.js.map +0 -1
  205. package/studio-dist/server/chunks/catalog-resolver-CLot3XJO.js.map +0 -1
  206. package/studio-dist/server/chunks/catalog-resolver2-JmKb91kY.js.map +0 -1
  207. package/studio-dist/server/chunks/chunk-DDP5xfzh.js.map +0 -1
  208. package/studio-dist/server/chunks/cleo-home-CCfe6kAQ.js.map +0 -1
  209. package/studio-dist/server/chunks/cli-action-DQcaqcfn.js.map +0 -1
  210. package/studio-dist/server/chunks/client-ym-URLFs.js.map +0 -1
  211. package/studio-dist/server/chunks/concrete-session2-bb_vxJ2N.js.map +0 -1
  212. package/studio-dist/server/chunks/config-DHj9CcFs.js.map +0 -1
  213. package/studio-dist/server/chunks/config2-F6PPIn7D.js.map +0 -1
  214. package/studio-dist/server/chunks/connections-BMGJVYcS.js.map +0 -1
  215. package/studio-dist/server/chunks/connections2-mi7mZqJM.js.map +0 -1
  216. package/studio-dist/server/chunks/credential-pool-vF6NdtT9.js.map +0 -1
  217. package/studio-dist/server/chunks/credentials-C7EJFf5O.js.map +0 -1
  218. package/studio-dist/server/chunks/credentials-store-CFygIuB2.js.map +0 -1
  219. package/studio-dist/server/chunks/cross-db-cleanup-1LWTUKPi.js.map +0 -1
  220. package/studio-dist/server/chunks/data-accessor-CWgVndbR.js.map +0 -1
  221. package/studio-dist/server/chunks/data-safety-central-DaFxK27G.js.map +0 -1
  222. package/studio-dist/server/chunks/decisions-CmVXV2-H.js.map +0 -1
  223. package/studio-dist/server/chunks/decisions2-XQsSYdxa.js.map +0 -1
  224. package/studio-dist/server/chunks/depends-waiver-audit-CUmlBYHx.js.map +0 -1
  225. package/studio-dist/server/chunks/dev-BNpEUZI3.js.map +0 -1
  226. package/studio-dist/server/chunks/dialectic-evaluator2-BOyyXhdI.js.map +0 -1
  227. package/studio-dist/server/chunks/dist-es2-DQy2Mjn_.js.map +0 -1
  228. package/studio-dist/server/chunks/dist-es3-CBygU4n5.js.map +0 -1
  229. package/studio-dist/server/chunks/dist-es4-CavbNu4B.js.map +0 -1
  230. package/studio-dist/server/chunks/dist-es5-Crpm8Wsl.js.map +0 -1
  231. package/studio-dist/server/chunks/dist-es6-CgePHzh4.js.map +0 -1
  232. package/studio-dist/server/chunks/dist-es7-k6c5GEd7.js.map +0 -1
  233. package/studio-dist/server/chunks/dist-es8-Bd9v0_pE.js.map +0 -1
  234. package/studio-dist/server/chunks/dist3-23bsJhRw.js.map +0 -1
  235. package/studio-dist/server/chunks/dist4-DmC1zSXi.js.map +0 -1
  236. package/studio-dist/server/chunks/dual-scope-db-DKnWu1KM.js.map +0 -1
  237. package/studio-dist/server/chunks/dual-scope-db2-Dht3luRw.js.map +0 -1
  238. package/studio-dist/server/chunks/duplicate-bypass-audit-BN5w1H2y.js.map +0 -1
  239. package/studio-dist/server/chunks/duplicate-detector-CaVFMKdE.js.map +0 -1
  240. package/studio-dist/server/chunks/edge-types-CgBvb0w1.js.map +0 -1
  241. package/studio-dist/server/chunks/embedding-local-xEnym8Ho.js.map +0 -1
  242. package/studio-dist/server/chunks/error.svelte-Bt1EbBZe.js.map +0 -1
  243. package/studio-dist/server/chunks/event-streams-Bi2p_fVo.js.map +0 -1
  244. package/studio-dist/server/chunks/execution-learning-BVCw7Plq.js.map +0 -1
  245. package/studio-dist/server/chunks/exodus-BBuuN6aA.js.map +0 -1
  246. package/studio-dist/server/chunks/explorer-loader-BN_mkt3_.js.map +0 -1
  247. package/studio-dist/server/chunks/externalDataInterceptor-C3C4cObe.js.map +0 -1
  248. package/studio-dist/server/chunks/extraction-gate-DDNBq7gu.js.map +0 -1
  249. package/studio-dist/server/chunks/extraction-gate2-D77EZBQ6.js.map +0 -1
  250. package/studio-dist/server/chunks/getSSOTokenFromFile-yZAJxDci.js.map +0 -1
  251. package/studio-dist/server/chunks/governor2-CtfV3wfX.js.map +0 -1
  252. package/studio-dist/server/chunks/graph-auto-populate-Dmsr9ZJM.js.map +0 -1
  253. package/studio-dist/server/chunks/graph-auto-populate2-Cz0qeebM.js.map +0 -1
  254. package/studio-dist/server/chunks/graph-memory-bridge-CY8ft_d7.js.map +0 -1
  255. package/studio-dist/server/chunks/graph-memory-bridge2-Cd0XZwqc.js.map +0 -1
  256. package/studio-dist/server/chunks/handler-helpers-AANBGA_p.js.map +0 -1
  257. package/studio-dist/server/chunks/hash-Cm6yMET4.js.map +0 -1
  258. package/studio-dist/server/chunks/health-monitor-FepUZN1m.js.map +0 -1
  259. package/studio-dist/server/chunks/hooks.server-DBsyphiX.js.map +0 -1
  260. package/studio-dist/server/chunks/http-CRTZe306.js.map +0 -1
  261. package/studio-dist/server/chunks/identity-DRpurt56.js.map +0 -1
  262. package/studio-dist/server/chunks/identity2-DeAB5RXE.js.map +0 -1
  263. package/studio-dist/server/chunks/index-61916rmV.js.map +0 -1
  264. package/studio-dist/server/chunks/index-DAgVDouG.js.map +0 -1
  265. package/studio-dist/server/chunks/index-Dtt_h58T.js.map +0 -1
  266. package/studio-dist/server/chunks/index-server-DocJvixA.js.map +0 -1
  267. package/studio-dist/server/chunks/indexes-DZ52grq6.js.map +0 -1
  268. package/studio-dist/server/chunks/internal-D3i_4gCl.js.map +0 -1
  269. package/studio-dist/server/chunks/json-Bfixam3g.js.map +0 -1
  270. package/studio-dist/server/chunks/lane-transition-lM2ngbbc.js.map +0 -1
  271. package/studio-dist/server/chunks/learnings-D6Y3YGMU.js.map +0 -1
  272. package/studio-dist/server/chunks/learnings2-MwBdR9vb.js.map +0 -1
  273. package/studio-dist/server/chunks/lifecycle-ops2-V2CR5-7X.js.map +0 -1
  274. package/studio-dist/server/chunks/list-BhObczvn.js.map +0 -1
  275. package/studio-dist/server/chunks/living-brain2-j0B_Ir8j.js.map +0 -1
  276. package/studio-dist/server/chunks/llm-backend-resolver-D4ANvUPL.js.map +0 -1
  277. package/studio-dist/server/chunks/llm-extraction-DVCu4heR.js.map +0 -1
  278. package/studio-dist/server/chunks/loadSharedConfigFiles-umvW7kuz.js.map +0 -1
  279. package/studio-dist/server/chunks/loadSso-iidd5iKx.js.map +0 -1
  280. package/studio-dist/server/chunks/local-model-fit-B0TxifnX.js.map +0 -1
  281. package/studio-dist/server/chunks/local-model-fit2-BMqo6GJm.js.map +0 -1
  282. package/studio-dist/server/chunks/lock-CA7d6lj7.js.map +0 -1
  283. package/studio-dist/server/chunks/logger-DQIoyZbq.js.map +0 -1
  284. package/studio-dist/server/chunks/memory-BUbicBbE.js.map +0 -1
  285. package/studio-dist/server/chunks/memory-accessor-i3P-RHSg.js.map +0 -1
  286. package/studio-dist/server/chunks/memory-accessor2-B981tHDR.js.map +0 -1
  287. package/studio-dist/server/chunks/memory-bridge-BOlEWg9w.js.map +0 -1
  288. package/studio-dist/server/chunks/memory-sqlite2-B7dq8doO.js.map +0 -1
  289. package/studio-dist/server/chunks/memory2-Cgc_4D5q.js.map +0 -1
  290. package/studio-dist/server/chunks/model-runner2-B71xjp4y.js.map +0 -1
  291. package/studio-dist/server/chunks/mvi-helpers-BNsJ8ZpQ.js.map +0 -1
  292. package/studio-dist/server/chunks/nexus-adapter-9EL_VlGI.js.map +0 -1
  293. package/studio-dist/server/chunks/nexus-plasticity-BTfU8cW_.js.map +0 -1
  294. package/studio-dist/server/chunks/nexus-risk-audit-p379-TU5.js.map +0 -1
  295. package/studio-dist/server/chunks/nexus-schema-zeygY8OD.js.map +0 -1
  296. package/studio-dist/server/chunks/nexus-schema2-DP0Qd7CA.js.map +0 -1
  297. package/studio-dist/server/chunks/nexus-sqlite-BVNIpwc7.js.map +0 -1
  298. package/studio-dist/server/chunks/nexus-sqlite2-BBfY2xnY.js.map +0 -1
  299. package/studio-dist/server/chunks/no-face-up-DcejJLy-.js.map +0 -1
  300. package/studio-dist/server/chunks/node-http-handler-CJI8kn7X.js.map +0 -1
  301. package/studio-dist/server/chunks/observe-Bo9veHGe.js.map +0 -1
  302. package/studio-dist/server/chunks/observe2-wzO0MaMY.js.map +0 -1
  303. package/studio-dist/server/chunks/observer-reflector-BwNOuq1d.js.map +0 -1
  304. package/studio-dist/server/chunks/observer-reflector2-ggtC1hmk.js.map +0 -1
  305. package/studio-dist/server/chunks/on-open-Wpcw7DV4.js.map +0 -1
  306. package/studio-dist/server/chunks/open-cleo-db--8sYNaYY.js.map +0 -1
  307. package/studio-dist/server/chunks/parseKnownFiles-Dg0pMFcT.js.map +0 -1
  308. package/studio-dist/server/chunks/parseUrl-qgGfl-Vh.js.map +0 -1
  309. package/studio-dist/server/chunks/paths-CV7S5-Zm.js.map +0 -1
  310. package/studio-dist/server/chunks/patterns-lh5kn13I.js.map +0 -1
  311. package/studio-dist/server/chunks/patterns2-CzIcT-ai.js.map +0 -1
  312. package/studio-dist/server/chunks/pipeline-stage-IB_pOft-.js.map +0 -1
  313. package/studio-dist/server/chunks/prediction-D1lSGJ4c.js.map +0 -1
  314. package/studio-dist/server/chunks/premature-close-audit-VG09uAco.js.map +0 -1
  315. package/studio-dist/server/chunks/project-context-BjiqfEBi.js.map +0 -1
  316. package/studio-dist/server/chunks/provider-registry2-Cu7rAF0R.js.map +0 -1
  317. package/studio-dist/server/chunks/quality-feedback-CuCGEI6S.js.map +0 -1
  318. package/studio-dist/server/chunks/quality-scoring-CCPuRQmJ.js.map +0 -1
  319. package/studio-dist/server/chunks/query-ops-DCrjbZb9.js.map +0 -1
  320. package/studio-dist/server/chunks/query-promise-BkPmGPJy.js.map +0 -1
  321. package/studio-dist/server/chunks/readFile-CxwXhymG.js.map +0 -1
  322. package/studio-dist/server/chunks/registry-CL2gN1zd.js.map +0 -1
  323. package/studio-dist/server/chunks/registry2-DoPYJnUW.js.map +0 -1
  324. package/studio-dist/server/chunks/registry3-BajEb-ll.js.map +0 -1
  325. package/studio-dist/server/chunks/registry4-DCqffZkT.js.map +0 -1
  326. package/studio-dist/server/chunks/retry-B3oEKYpp.js.map +0 -1
  327. package/studio-dist/server/chunks/role-executor-CC8BU54L.js.map +0 -1
  328. package/studio-dist/server/chunks/role-resolver-D9QaDT0e.js.map +0 -1
  329. package/studio-dist/server/chunks/role-resolver2-nkhzS1oy.js.map +0 -1
  330. package/studio-dist/server/chunks/rollup-CiefjN_Y.js.map +0 -1
  331. package/studio-dist/server/chunks/safety-data-accessor-CniDmGJO.js.map +0 -1
  332. package/studio-dist/server/chunks/service-connections-accessor-yBCdcgU-.js.map +0 -1
  333. package/studio-dist/server/chunks/session-factory-vbengc42.js.map +0 -1
  334. package/studio-dist/server/chunks/session-grade-BF4ZZtN_.js.map +0 -1
  335. package/studio-dist/server/chunks/session-journal-Bvey70Ur.js.map +0 -1
  336. package/studio-dist/server/chunks/session-narrative-BirZINSU.js.map +0 -1
  337. package/studio-dist/server/chunks/session-store--N_xHxUH.js.map +0 -1
  338. package/studio-dist/server/chunks/session-store2-DAM-eVTH.js.map +0 -1
  339. package/studio-dist/server/chunks/sessions-33DD4hkt.js.map +0 -1
  340. package/studio-dist/server/chunks/sessions2-BHswKRDP.js.map +0 -1
  341. package/studio-dist/server/chunks/sigil-B-RznFXz.js.map +0 -1
  342. package/studio-dist/server/chunks/sigil2-jRMG5DuR.js.map +0 -1
  343. package/studio-dist/server/chunks/signin-BAsW3mM8.js.map +0 -1
  344. package/studio-dist/server/chunks/sleep-consolidation-BnSwXrvq.js.map +0 -1
  345. package/studio-dist/server/chunks/spawn-cli-wI1lBJhm.js.map +0 -1
  346. package/studio-dist/server/chunks/specialists-B_ZbpQlK.js.map +0 -1
  347. package/studio-dist/server/chunks/sqlite-Bm5LzbPs.js.map +0 -1
  348. package/studio-dist/server/chunks/sqlite-backup-CFG1-b2e.js.map +0 -1
  349. package/studio-dist/server/chunks/sqlite-data-accessor-DD_RFX6r.js.map +0 -1
  350. package/studio-dist/server/chunks/sqlite-data-accessor2-CRmgNBnq.js.map +0 -1
  351. package/studio-dist/server/chunks/sqlite-native-BwlIqtbs.js.map +0 -1
  352. package/studio-dist/server/chunks/sqlite2-CUPut2fh.js.map +0 -1
  353. package/studio-dist/server/chunks/src-BUqGet2c.js.map +0 -1
  354. package/studio-dist/server/chunks/src2-DK8DKufK.js.map +0 -1
  355. package/studio-dist/server/chunks/src3-BJjf7XRG.js.map +0 -1
  356. package/studio-dist/server/chunks/src4-DNleK_t_.js.map +0 -1
  357. package/studio-dist/server/chunks/sso-oidc-eUvwseuL.js.map +0 -1
  358. package/studio-dist/server/chunks/storage-B9UA3BHR.js.map +0 -1
  359. package/studio-dist/server/chunks/stores-ByevKXL9.js.map +0 -1
  360. package/studio-dist/server/chunks/sts-g7LDMLEd.js.map +0 -1
  361. package/studio-dist/server/chunks/surprisal-CwTfWQi8.js.map +0 -1
  362. package/studio-dist/server/chunks/surprisal-tree-7dfHsuw1.js.map +0 -1
  363. package/studio-dist/server/chunks/system-resolver2-Bzhue_zQ.js.map +0 -1
  364. package/studio-dist/server/chunks/tasks-SHX7UPGY.js.map +0 -1
  365. package/studio-dist/server/chunks/tasks-schema2-CTMoQKQy.js.map +0 -1
  366. package/studio-dist/server/chunks/tasks2-Bf9VHrv-.js.map +0 -1
  367. package/studio-dist/server/chunks/temporal-supersession-DP4GPG_B.js.map +0 -1
  368. package/studio-dist/server/chunks/token-cAhAD9f9.js.map +0 -1
  369. package/studio-dist/server/chunks/token-util-D6drEz8_.js.map +0 -1
  370. package/studio-dist/server/chunks/token-util2-8UPSGvbb.js.map +0 -1
  371. package/studio-dist/server/chunks/transcript-scanner-kJWhWmlg.js.map +0 -1
  372. package/studio-dist/server/chunks/transformers.node-_xbxmK5p.js.map +0 -1
  373. package/studio-dist/server/chunks/typed-query-l1D_QElt.js.map +0 -1
  374. package/studio-dist/server/chunks/ui-DR8zOSpC.js.map +0 -1
  375. package/studio-dist/server/chunks/unique-constraint-BZrrwgwc.js.map +0 -1
  376. package/studio-dist/server/chunks/update-B2YVBZG0.js.map +0 -1
  377. package/studio-dist/server/chunks/user-profile-B61ZhVmC.js.map +0 -1
  378. package/studio-dist/server/chunks/utils-BPSZyajG.js.map +0 -1
  379. package/studio-dist/server/chunks/validation-rules-CE27rtoF.js.map +0 -1
  380. package/studio-dist/server/chunks/zod-DsAeKNLm.js.map +0 -1
  381. package/studio-dist/server/index.js.map +0 -1
  382. package/studio-dist/server/manifest.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"exodus-BBuuN6aA.js","sources":["../../../.svelte-kit/adapter-node/chunks/exodus.js"],"sourcesContent":["import { t as getLogger } from \"./logger.js\";\nimport \"./dist2.js\";\nimport { d as resolveCleoDir, o as getCleoHome } from \"./paths.js\";\nimport \"./abort-events2.js\";\nimport { c as resolveDualScopeDbPath, s as openDualScopeDbAtPath } from \"./dual-scope-db.js\";\nimport { t as getCleoVersion } from \"./ensure-config.js\";\nimport { n as openCleoDbSnapshot } from \"./open-cleo-db.js\";\nimport { r as detectStrandedResidue } from \"./archive.js\";\nimport { createRequire } from \"node:module\";\nimport { copyFileSync, existsSync, mkdirSync, readFileSync, readdirSync, renameSync, statSync, statfsSync, unlinkSync, writeFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\n//#region ../core/dist/store/exodus/table-name-map.js\n/**\n* Deterministic legacy-to-consolidated table-name resolver for exodus migration.\n*\n* ## Problem (ROOT CAUSE 1 — T11532)\n*\n* Legacy source DBs use UNPREFIXED table names (`tasks`, `messages`, `skills`, …)\n* while the consolidated dual-scope `cleo.db` uses DOMAIN-PREFIXED names\n* (`tasks_tasks`, `conduit_messages`, `skills_skills`, …). Without a mapping,\n* every `INSERT OR IGNORE INTO main.\"<name>\"` silently copies 0 rows because the\n* target table is absent under the legacy name.\n*\n* ## Design\n*\n* The mapping is a static lookup table derived from reading every\n* `cleo-project/` and `cleo-global/` schema file and matching the physical\n* `sqliteTable('<consolidated-name>', …)` names against each legacy DB's schema.\n*\n* Rules:\n* - If a legacy table is already domain-prefixed in the consolidated schema\n* (e.g. `brain_observations`, `nexus_audit_log`, `tasks_goal`), map identity.\n* - If a legacy table has NO consolidated counterpart (virtual tables, orphan\n* telemetry tables, …), return `null` so the caller can log + skip explicitly\n* rather than silently discarding rows.\n*\n* ## Source-DB scope\n*\n* The resolver takes a `sourceName` (the `LegacyDbDescriptor.name` value, e.g.\n* `\"tasks\"`, `\"brain (project)\"`, `\"conduit\"`) to disambiguate tables that\n* share the same legacy name across multiple DBs (e.g. `\"attachments\"` lives in\n* both conduit.db and attachments.ts/tasks.db; `\"sessions\"` lives in both\n* tasks.db and signaldock.db).\n*\n* ## Nexus code-graph residency move (ADR-090 · T11539)\n*\n* The four nexus code-graph tables — `nexus_nodes`, `nexus_relations`,\n* `nexus_contracts`, `nexus_code_index` (ADR-090 \"Category A\") — were removed\n* from the GLOBAL schema (`../schema/cleo-global/nexus.ts`) and now reside in\n* PROJECT scope (`../schema/cleo-project/nexus-graph.ts`). They are still\n* extracted from the legacy GLOBAL `nexus.db` source, but exodus MUST route them\n* into the PROJECT-scope consolidated `cleo.db`, not the global one. The source\n* descriptor `nexus` carries `targetScope: 'global'`, so a per-table scope\n* override is required for these four tables — see\n* {@link NEXUS_GRAPH_PROJECT_TABLES} and {@link resolveTableTargetScope}. The\n* six registry/identity tables (`nexus_project_registry`,\n* `nexus_project_id_aliases`, `nexus_audit_log`, `nexus_schema_meta`,\n* `nexus_user_profile`, `nexus_sigils`) stay GLOBAL.\n*\n* @task T11532 (ROOT CAUSE 1 — name-mapping gap)\n* @task T11533 (ROOT CAUSE 3 — signaldock skills mapping + brain_release_links skip +\n* brain_session_narrative mapping)\n* @task T11546 (no-home-table fixes — schema_meta→tasks_schema_meta, brain_usage_log mapping,\n* brain_schema_meta mapping)\n* @task T11539 (nexus code-graph residency — route the 4 graph tables to PROJECT scope)\n* @epic T11248\n* @saga T11242\n*/\n/**\n* tasks.db — tables from tasks-schema.ts (tasks.ts, audit.ts, background-jobs.ts,\n* chain-schema.ts, agent-schema.ts, lifecycle.ts, evidence-bindings.ts,\n* experiments.ts, attachments.ts, manifest.ts, code-index.ts, playbooks.ts,\n* provenance/releases.ts, provenance/commits.ts, provenance/pull-requests.ts,\n* goal.ts) all prefixed with `tasks_` in the consolidated schema, except the\n* docs tables which become `docs_*`.\n*/\nvar TASKS_DB_MAP = new Map([\n\t[\"tasks\", \"tasks_tasks\"],\n\t[\"task_acceptance_criteria\", \"tasks_task_acceptance_criteria\"],\n\t[\"acceptance_projection_state\", \"tasks_acceptance_projection_state\"],\n\t[\"acceptance_projection_dirty\", \"tasks_acceptance_projection_dirty\"],\n\t[\"task_dependencies\", \"tasks_task_dependencies\"],\n\t[\"task_labels\", \"tasks_task_labels\"],\n\t[\"task_relations\", \"tasks_task_relations\"],\n\t[\"sessions\", \"tasks_sessions\"],\n\t[\"session_handoff_entries\", \"tasks_session_handoff_entries\"],\n\t[\"task_work_history\", \"tasks_task_work_history\"],\n\t[\"task_acceptance_criteria_history\", \"tasks_task_acceptance_criteria_history\"],\n\t[\"external_task_links\", \"tasks_external_task_links\"],\n\t[\"audit_log\", \"tasks_audit_log\"],\n\t[\"token_usage\", \"tasks_token_usage\"],\n\t[\"architecture_decisions\", \"tasks_architecture_decisions\"],\n\t[\"adr_task_links\", \"tasks_adr_task_links\"],\n\t[\"adr_relations\", \"tasks_adr_relations\"],\n\t[\"status_registry\", \"tasks_status_registry\"],\n\t[\"background_jobs\", \"tasks_background_jobs\"],\n\t[\"warp_chains\", \"tasks_warp_chains\"],\n\t[\"warp_chain_instances\", \"tasks_warp_chain_instances\"],\n\t[\"agent_instances\", \"tasks_agent_instances\"],\n\t[\"agent_error_log\", \"tasks_agent_error_log\"],\n\t[\"lifecycle_pipelines\", \"tasks_lifecycle_pipelines\"],\n\t[\"lifecycle_stages\", \"tasks_lifecycle_stages\"],\n\t[\"lifecycle_gate_results\", \"tasks_lifecycle_gate_results\"],\n\t[\"lifecycle_evidence\", \"tasks_lifecycle_evidence\"],\n\t[\"lifecycle_transitions\", \"tasks_lifecycle_transitions\"],\n\t[\"evidence_ac_bindings\", \"tasks_evidence_ac_bindings\"],\n\t[\"experiments\", \"tasks_experiments\"],\n\t[\"attachments\", \"docs_attachments\"],\n\t[\"attachment_refs\", \"docs_attachment_refs\"],\n\t[\"manifest_entries\", \"docs_manifest_entries\"],\n\t[\"pipeline_manifest\", \"docs_pipeline_manifest\"],\n\t[\"commits\", \"tasks_commits\"],\n\t[\"task_commits\", \"tasks_task_commits\"],\n\t[\"commit_files\", \"tasks_commit_files\"],\n\t[\"pull_requests\", \"tasks_pull_requests\"],\n\t[\"pr_commits\", \"tasks_pr_commits\"],\n\t[\"pr_tasks\", \"tasks_pr_tasks\"],\n\t[\"releases\", \"tasks_releases\"],\n\t[\"release_commits\", \"tasks_release_commits\"],\n\t[\"release_changes\", \"tasks_release_changes\"],\n\t[\"release_changesets\", \"tasks_release_changesets\"],\n\t[\"release_artifacts\", \"tasks_release_artifacts\"],\n\t[\"playbook_runs\", \"tasks_playbook_runs\"],\n\t[\"playbook_approvals\", \"tasks_playbook_approvals\"],\n\t[\"tasks_goal\", \"tasks_goal\"],\n\t[\"schema_meta\", \"tasks_schema_meta\"],\n\t[\"agent_credentials\", \"tasks_agent_credentials\"],\n\t[\"brain_release_links\", \"tasks_brain_release_links\"]\n]);\n/**\n* brain.db (project) and global brain.db — tables from memory-schema.ts /\n* cleo-shared/brain.ts.\n*\n* Most tables are already `brain_*` prefixed in the legacy schema and keep the\n* same name in the consolidated schema. Three exceptions:\n* - `sticky_tags` → `brain_sticky_tags` (lost prefix in legacy)\n* - `deriver_queue` → `brain_deriver_queue` (lost prefix in legacy)\n* - `session_narrative` → `brain_session_narrative` (lost prefix in legacy)\n*\n* Tables present in the live DB but NOT in the consolidated target schema\n* (virtual tables, orphan telemetry, etc.) map to `null` — they will be\n* logged as explicit skips rather than silently discarded.\n*\n* ## brain_release_links (T11533 → T11549 → T11550 fix)\n*\n* T11533 incorrectly marked `brain_release_links` as `null` (skip). T11549 added\n* the target table `tasks_brain_release_links` to `cleo-project/provenance-orphans.ts`\n* and mapped the table here in BRAIN_DB_MAP — but T11550 discovered that the 8 rows\n* physically live in **tasks.db**, not brain.db (verified via sqlite_master). The\n* correct mapping belongs in TASKS_DB_MAP (added there in T11550). The BRAIN_DB_MAP\n* entry is now `null` (skip) to guard against double-migration if brain.db ever\n* contains a phantom table by this name.\n*\n* ## agent_credentials (T11549 → T11550 fix)\n*\n* Same situation as brain_release_links: the 3 rows physically live in **tasks.db**,\n* not brain.db. T11549 added the target table and mapped it here in BRAIN_DB_MAP,\n* but the source is tasks.db. T11550 moves the mapping to TASKS_DB_MAP and sets\n* this entry to `null` (skip) to prevent double-migration.\n*/\nvar BRAIN_DB_MAP = new Map([\n\t[\"brain_decisions\", \"brain_decisions\"],\n\t[\"brain_patterns\", \"brain_patterns\"],\n\t[\"brain_learnings\", \"brain_learnings\"],\n\t[\"brain_observations\", \"brain_observations\"],\n\t[\"brain_sticky_notes\", \"brain_sticky_notes\"],\n\t[\"brain_attention\", \"brain_attention\"],\n\t[\"brain_memory_links\", \"brain_memory_links\"],\n\t[\"brain_page_nodes\", \"brain_page_nodes\"],\n\t[\"brain_page_edges\", \"brain_page_edges\"],\n\t[\"brain_retrieval_log\", \"brain_retrieval_log\"],\n\t[\"brain_plasticity_events\", \"brain_plasticity_events\"],\n\t[\"brain_weight_history\", \"brain_weight_history\"],\n\t[\"brain_modulators\", \"brain_modulators\"],\n\t[\"brain_consolidation_events\", \"brain_consolidation_events\"],\n\t[\"brain_transcript_events\", \"brain_transcript_events\"],\n\t[\"brain_promotion_log\", \"brain_promotion_log\"],\n\t[\"brain_backfill_runs\", \"brain_backfill_runs\"],\n\t[\"brain_memory_trees\", \"brain_memory_trees\"],\n\t[\"brain_observations_staging\", \"brain_observations_staging\"],\n\t[\"brain_release_links\", null],\n\t[\"brain_schema_meta\", \"brain_schema_meta\"],\n\t[\"sticky_tags\", \"brain_sticky_tags\"],\n\t[\"deriver_queue\", \"brain_deriver_queue\"],\n\t[\"session_narrative\", \"brain_session_narrative\"],\n\t[\"brain_usage_log\", \"brain_usage_log\"],\n\t[\"brain_task_observations\", null],\n\t[\"brain_embeddings\", null],\n\t[\"brain_embeddings_info\", null],\n\t[\"agent_credentials\", null]\n]);\n/**\n* conduit.db — tables from conduit-schema.ts, all prefixed `conduit_*`.\n*\n* Note: conduit.db also has an `attachments` table (conduit attachment tracking),\n* which maps to `conduit_attachments` — NOT `docs_attachments` (that is from\n* tasks.db/attachments.ts).\n*/\nvar CONDUIT_DB_MAP = new Map([\n\t[\"messages\", \"conduit_messages\"],\n\t[\"delivery_jobs\", \"conduit_delivery_jobs\"],\n\t[\"dead_letters\", \"conduit_dead_letters\"],\n\t[\"message_pins\", \"conduit_message_pins\"],\n\t[\"attachments\", \"conduit_attachments\"],\n\t[\"attachment_versions\", \"conduit_attachment_versions\"],\n\t[\"attachment_approvals\", \"conduit_attachment_approvals\"],\n\t[\"attachment_contributors\", \"conduit_attachment_contributors\"],\n\t[\"topics\", \"conduit_topics\"],\n\t[\"topic_subscriptions\", \"conduit_topic_subscriptions\"],\n\t[\"topic_messages\", \"conduit_topic_messages\"],\n\t[\"topic_message_acks\", \"conduit_topic_message_acks\"],\n\t[\"conversations\", \"conduit_conversations\"],\n\t[\"project_agent_refs\", \"conduit_project_agent_refs\"]\n]);\n/**\n* nexus.db — tables from nexus-schema.ts.\n*\n* Some tables are ALREADY prefixed (`nexus_audit_log`, `nexus_nodes`, etc.) and\n* map identity. Others lack the prefix and gain `nexus_` in consolidated.\n*\n* ## Scope split (ADR-090 · T11539)\n*\n* The legacy `nexus.db` source descriptor carries `targetScope: 'global'`, but\n* the four code-graph tables (`code_index`/`nexus_code_index`, `nexus_nodes`,\n* `nexus_relations`, `nexus_contracts`) now live in PROJECT scope. Their\n* consolidated NAME is unchanged (identity / `nexus_code_index`), but their\n* destination DB is the PROJECT `cleo.db` — see {@link NEXUS_GRAPH_PROJECT_TABLES}\n* and {@link resolveTableTargetScope}. The remaining six registry/identity\n* tables stay GLOBAL.\n*/\nvar NEXUS_DB_MAP = new Map([\n\t[\"project_registry\", \"nexus_project_registry\"],\n\t[\"project_id_aliases\", \"nexus_project_id_aliases\"],\n\t[\"user_profile\", \"nexus_user_profile\"],\n\t[\"sigils\", \"nexus_sigils\"],\n\t[\"code_index\", \"nexus_code_index\"],\n\t[\"nexus_audit_log\", \"nexus_audit_log\"],\n\t[\"nexus_nodes\", \"nexus_nodes\"],\n\t[\"nexus_relations\", \"nexus_relations\"],\n\t[\"nexus_relation_weights\", \"nexus_relation_weights\"],\n\t[\"nexus_contracts\", \"nexus_contracts\"],\n\t[\"nexus_schema_meta\", \"nexus_schema_meta\"]\n]);\n/**\n* Legacy table names of the four nexus code-graph tables that moved from GLOBAL\n* to PROJECT scope (ADR-090 · T11538/T11539).\n*\n* Keyed by the LEGACY physical name as it appears in `nexus.db`:\n* - `nexus_nodes`, `nexus_relations`, `nexus_contracts` — already prefixed.\n* - `code_index` — bare in legacy `nexus.db`; → `nexus_code_index` consolidated.\n*\n* Membership drives {@link resolveTableTargetScope}: exodus copies/verifies\n* these against the PROJECT consolidated `cleo.db`, NOT the GLOBAL one, even\n* though the `nexus` source descriptor's `targetScope` is `'global'`.\n*\n* @task T11539\n* @epic T11248\n* @saga T11242\n* @see cleo docs fetch adr-090-nexus-graph-residency-split\n*/\nvar NEXUS_GRAPH_PROJECT_TABLES = new Set([\n\t\"nexus_nodes\",\n\t\"nexus_relations\",\n\t\"nexus_contracts\",\n\t\"code_index\"\n]);\n/**\n* Resolve the consolidated TARGET SCOPE for a legacy source table.\n*\n* Most tables share the scope of their source DB descriptor (`sourceScope`).\n* The exception is the four nexus code-graph tables — they are extracted from\n* the GLOBAL legacy `nexus.db` but land in PROJECT scope per ADR-090 (T11539).\n*\n* This is the SSoT consumed by BOTH the exodus migrate runner (insert target DB)\n* and the exodus verifier (verify target DB) so the two never disagree.\n*\n* @param sourceName - `LegacyDbDescriptor.name` (e.g. `\"nexus\"`, `\"tasks\"`).\n* @param legacyTable - Physical table name in the legacy source DB.\n* @param sourceScope - The source descriptor's `targetScope`.\n* @returns The scope of the consolidated `cleo.db` this table copies into.\n*\n* @task T11539\n* @epic T11248\n* @saga T11242\n*/\nfunction resolveTableTargetScope(sourceName, legacyTable, sourceScope) {\n\tif (inferSourceKind(sourceName) === \"nexus\" && NEXUS_GRAPH_PROJECT_TABLES.has(legacyTable)) return \"project\";\n\treturn sourceScope;\n}\n/**\n* agent-registry (global) — the legacy on-disk source file is `signaldock.db`\n* (the source-descriptor `name` stays `\"signaldock\"` — see {@link inferSourceKind} —\n* because that is the genuine artifact name on disk). Its bare tables map to the\n* consolidated PREFIXED `agent_registry_*` tables (renamed from `signaldock_*`\n* under T11622 / SG-AGENT-IDENTITY E4).\n*\n* KEYS are the bare legacy names (the source DB still has the old shape); VALUES\n* are the consolidated `agent_registry_*` target names — these MUST equal the\n* `sqliteTable` names declared in `cleo-global/agent-registry.ts` (asserted by\n* the exodus-map invariant test, the DHQ-046 N→0 deficit catcher).\n*\n* Note: the legacy `signaldock.db` has a `sessions` table (identity session\n* management), which maps to `agent_registry_sessions` — NOT `tasks_sessions`.\n*\n* ## `skills` mapping (T11533 ROOT CAUSE 3 fix)\n*\n* The legacy `signaldock.db` contains a `skills` table (36 rows — pre-seeded skill\n* slug catalog). In the consolidated global schema this becomes\n* `agent_registry_skills`. Without this entry the legacy `skills` table fell\n* through to an identity mapping, looked for a `skills` table in the global\n* cleo.db (absent), and was silently skipped — resulting in\n* agent_registry_skills=0 despite 36 source rows.\n*\n* @task T11622 (signaldock_* → agent_registry_* target rename; folds T11578 AC2)\n*/\nvar AGENT_REGISTRY_DB_MAP = new Map([\n\t[\"users\", \"agent_registry_users\"],\n\t[\"organization\", \"agent_registry_organization\"],\n\t[\"agents\", \"agent_registry_agents\"],\n\t[\"claim_codes\", \"agent_registry_claim_codes\"],\n\t[\"agent_capabilities\", \"agent_registry_agent_capabilities\"],\n\t[\"agent_skills\", \"agent_registry_agent_skills\"],\n\t[\"agent_connections\", \"agent_registry_agent_connections\"],\n\t[\"accounts\", \"agent_registry_accounts\"],\n\t[\"sessions\", \"agent_registry_sessions\"],\n\t[\"verifications\", \"agent_registry_verifications\"],\n\t[\"org_agent_keys\", \"agent_registry_org_agent_keys\"],\n\t[\"capabilities\", \"agent_registry_capabilities\"],\n\t[\"skills\", \"agent_registry_skills\"]\n]);\n/**\n* skills.db (global) — tables from skills-schema.ts, all prefixed `skills_*`.\n*/\nvar SKILLS_DB_MAP = new Map([\n\t[\"skills\", \"skills_skills\"],\n\t[\"skill_usage\", \"skills_skill_usage\"],\n\t[\"skill_reviews\", \"skills_skill_reviews\"],\n\t[\"skill_patches\", \"skills_skill_patches\"]\n]);\n/**\n* Infer the source DB kind from `LegacyDbDescriptor.name`.\n*\n* The descriptor names used in `buildSourceDescriptors()` are:\n* `\"tasks\"`, `\"brain (project)\"`, `\"conduit\"`, `\"nexus\"`, `\"signaldock\"`, `\"skills\"`\n*/\nfunction inferSourceKind(sourceName) {\n\tconst n = sourceName.toLowerCase();\n\tif (n.startsWith(\"tasks\")) return \"tasks\";\n\tif (n.startsWith(\"brain\")) return \"brain\";\n\tif (n.startsWith(\"conduit\")) return \"conduit\";\n\tif (n.startsWith(\"nexus\")) return \"nexus\";\n\tif (n.startsWith(\"signaldock\")) return \"signaldock\";\n\tif (n.startsWith(\"skills\")) return \"skills\";\n\treturn null;\n}\n/**\n* Internal bookkeeping tables that exist in a legacy source DB but have NO\n* consolidated counterpart and carry no user data — they are recreated by the\n* runtime, not migrated. Matched by EXACT name.\n*\n* Each legacy per-domain SQLite file (`conduit.db`, `signaldock.db`,\n* `skills.db`, …) carries its OWN private schema-version / migration-ledger\n* table that records HOW that file was built — NOT user-payload data:\n*\n* - `_conduit_meta` / `_conduit_migrations` — conduit-sqlite's own\n* schema-version + migration-ledger tables (see `conduit-sqlite.ts`).\n* - `_signaldock_meta` / `_signaldock_migrations` — agent-registry-store's own\n* ledger tables (same class — T11577 global-scope cutover blocker).\n* - `_skills_meta` — skills.db's own schema-version row (same class — T11577).\n*\n* The consolidated `cleo.db` has its own Drizzle journal (`__drizzle_*`) for the\n* same purpose, so these legacy ledgers have no consolidated home. Row-comparing\n* them would count internal ledger rows as a user-data deficit and abort the\n* cutover. The {@link INTERNAL_LEDGER_PATTERN} below generalises the same skip\n* to ANY future `_<domain>_meta` / `_<domain>_migrations` ledger so a new source\n* DB never re-introduces this false-positive; these exact entries remain for\n* documentation + as a fast path.\n*\n* @task T11572 (parity gate over-abort — internal/meta exclusion)\n* @task T11577 (generalise to signaldock/skills + any per-source ledger)\n*/\nvar INTERNAL_BOOKKEEPING_TABLES = new Set([\n\t\"_conduit_meta\",\n\t\"_conduit_migrations\",\n\t\"_signaldock_meta\",\n\t\"_signaldock_migrations\",\n\t\"_skills_meta\"\n]);\n/**\n* Pattern matching a per-source SQLite **internal ledger** table: an underscore-\n* prefixed `_<domain>_meta` or `_<domain>_migrations` name where `<domain>` is a\n* lowercase identifier (e.g. `_conduit_meta`, `_signaldock_migrations`,\n* `_skills_meta`).\n*\n* Every legacy domain DB (conduit/signaldock/skills/…) materialises one of these\n* to track its own schema version / applied-migration history. They are private\n* bookkeeping — NOT migratable base data — and have no consolidated home (the\n* consolidated `cleo.db` keeps its own `__drizzle_*` journal). Generalising the\n* skip to this shape is future-proof: a NEW source DB that follows the same\n* `_<domain>_(meta|migrations)` convention is excluded automatically, so this\n* exact false-positive class can never abort the cutover again.\n*\n* The pattern is intentionally conservative — it requires the leading underscore\n* and the exact `_meta` / `_migrations` suffix so it can never match a real\n* data table (those are never underscore-prefixed in any legacy source schema).\n*\n* @task T11577 (parity gate over-abort — generalise per-source ledger skip)\n*/\nvar INTERNAL_LEDGER_PATTERN = /^_[a-z][a-z0-9]*_(?:meta|migrations)$/;\n/**\n* FTS5 shadow-table suffixes. A full-text index `<base>_fts` (an `fts5` VIRTUAL\n* TABLE — e.g. `brain_decisions_fts`, `messages_fts`) materialises a family of\n* backing tables `<base>_fts_data`, `<base>_fts_idx`, `<base>_fts_docsize`,\n* `<base>_fts_config`, and (for `content=`-less indexes) `<base>_fts_content`.\n*\n* These are DERIVED from their content table and are REBUILT post-migration\n* (`brain-search.ts` issues `INSERT INTO <base>_fts(<base>_fts) VALUES('rebuild')`).\n* Their row counts do NOT correspond 1:1 to user rows, so comparing them against\n* an absent consolidated target produces a spurious N→0 deficit. They must be\n* excluded from the row-count-parity gate, not migrated.\n*\n* @task T11572 (parity gate over-abort — FTS5 shadow-table exclusion)\n*/\nvar FTS5_SHADOW_SUFFIXES = [\n\t\"_fts_data\",\n\t\"_fts_idx\",\n\t\"_fts_docsize\",\n\t\"_fts_config\",\n\t\"_fts_content\"\n];\n/**\n* Return `true` if `tableName` is a DERIVED or INTERNAL table that must be\n* EXCLUDED from the exodus row-count-parity gate (and from the copy path).\n*\n* This is the single, named, documented classification consumed by BOTH the\n* migrate copy loop and the `verifyMigration` parity check, so the two never\n* disagree about which tables carry migratable user data. It recognises:\n*\n* 1. **FTS5 virtual tables** — a bare `*_fts` name (e.g. `brain_decisions_fts`,\n* `messages_fts`). The virtual table itself cannot be `INSERT … SELECT`-ed\n* and is rebuilt from its content table after migration.\n* 2. **FTS5 shadow/backing tables** — `*_fts_data`, `*_fts_idx`,\n* `*_fts_docsize`, `*_fts_config`, `*_fts_content` (see\n* {@link FTS5_SHADOW_SUFFIXES}). Derived; rebuilt post-migration.\n* 3. **Internal bookkeeping** — any per-source schema-version / migration\n* ledger: `_conduit_meta`, `_conduit_migrations`, `_signaldock_meta`,\n* `_signaldock_migrations`, `_skills_meta`, and — generalised via\n* {@link INTERNAL_LEDGER_PATTERN} — ANY `_<domain>_meta` /\n* `_<domain>_migrations` ledger from a future source DB (see\n* {@link INTERNAL_BOOKKEEPING_TABLES}). Schema-version ledgers with no\n* consolidated home.\n*\n* A migration is \"safe\" iff every BASE-DATA row survives; these derived/internal\n* tables are NOT base data, so a 0-row consolidated counterpart for them is\n* expected and correct — not data loss.\n*\n* @param tableName - Physical table name from a legacy source DB.\n* @returns `true` when the table is derived/internal and must be skipped.\n*\n* @task T11572 (exodus parity gate: exclude FTS5 + internal/meta shadow tables)\n* @task T11577 (generalise internal-ledger skip to signaldock/skills + any per-source ledger)\n* @epic T11249 (E6)\n* @saga T11242\n*/\nfunction isDerivedOrInternalTable(tableName) {\n\tif (INTERNAL_BOOKKEEPING_TABLES.has(tableName)) return true;\n\tif (INTERNAL_LEDGER_PATTERN.test(tableName)) return true;\n\tif (tableName.endsWith(\"_fts\")) return true;\n\treturn FTS5_SHADOW_SUFFIXES.some((suffix) => tableName.endsWith(suffix));\n}\n/**\n* Resolve the consolidated target table name for a legacy source table.\n*\n* @param sourceName - `LegacyDbDescriptor.name` (e.g. `\"tasks\"`, `\"brain (project)\"`).\n* @param legacyTable - Physical table name from the legacy source DB.\n* @returns A `TableNameResolution` describing how to copy (or skip) the table.\n*/\nfunction resolveConsolidatedTableName(sourceName, legacyTable) {\n\tif (isDerivedOrInternalTable(legacyTable)) return {\n\t\tkind: \"skip\",\n\t\treason: legacyTable.includes(\"_fts\") ? `derived FTS5 table — rebuilt post-migration from its content table, not row-compared` : `internal bookkeeping table — no consolidated home (recreated by runtime)`\n\t};\n\tconst kind = inferSourceKind(sourceName);\n\tif (kind === null) return {\n\t\tkind: \"unknown\",\n\t\ttargetName: legacyTable\n\t};\n\tlet map;\n\tswitch (kind) {\n\t\tcase \"tasks\":\n\t\t\tmap = TASKS_DB_MAP;\n\t\t\tbreak;\n\t\tcase \"brain\":\n\t\t\tmap = BRAIN_DB_MAP;\n\t\t\tbreak;\n\t\tcase \"conduit\":\n\t\t\tmap = CONDUIT_DB_MAP;\n\t\t\tbreak;\n\t\tcase \"nexus\":\n\t\t\tmap = NEXUS_DB_MAP;\n\t\t\tbreak;\n\t\tcase \"signaldock\":\n\t\t\tmap = AGENT_REGISTRY_DB_MAP;\n\t\t\tbreak;\n\t\tcase \"skills\":\n\t\t\tmap = SKILLS_DB_MAP;\n\t\t\tbreak;\n\t}\n\tif (!map.has(legacyTable)) return {\n\t\tkind: \"mapped\",\n\t\ttargetName: legacyTable\n\t};\n\tconst consolidated = map.get(legacyTable);\n\tif (consolidated === null || consolidated === void 0) return {\n\t\tkind: \"skip\",\n\t\treason: getSkipReason(kind, legacyTable)\n\t};\n\treturn {\n\t\tkind: \"mapped\",\n\t\ttargetName: consolidated\n\t};\n}\n/**\n* Return a human-readable explanation for why a table is intentionally excluded\n* from the consolidated schema.\n*/\nfunction getSkipReason(sourceKind, legacyTable) {\n\treturn {\n\t\tbrain_task_observations: \"runtime-only observation cache (not Drizzle-managed); recreated lazily after exodus cutover\",\n\t\tbrain_embeddings: \"vec0 VIRTUAL TABLE — cannot be migrated via INSERT/SELECT; requires sqlite-vec extension; recreated lazily after exodus cutover\",\n\t\tbrain_embeddings_info: \"metadata companion to brain_embeddings vec0 virtual table; excluded from consolidated schema (derived/recreatable)\"\n\t}[legacyTable] ?? `table '${legacyTable}' from ${sourceKind} has no consolidated target`;\n}\ngetLogger(\"exodus-count-parity\");\n//#endregion\n//#region ../core/dist/store/exodus/plan.js\n/**\n* Exodus pre-flight plan builder.\n*\n* `buildExodusPlan()` computes the full migration plan — source DB paths,\n* combined size, free-disk availability, staging directory — BEFORE any\n* writes occur. A `--dry-run` caller can print the plan and exit early.\n*\n* ## Disk pre-flight (AC8 · right-sized T11838)\n*\n* The original gate required `availableBytes >= 3 * totalSourceBytes` — an\n* over-estimate that blocked large-fleet migrations even with ample headroom:\n* exodus never holds 3× the SUM of every source on disk at once. It copies one\n* source into staging at a time (lock released before the next) and writes a\n* single consolidated cleo.db whose size approximates the sum of source ROW data.\n*\n* The right-sized requirement is therefore\n* `STAGING_HEADROOM_FACTOR * largestSourceBytes + consolidatedEstimate`, where\n* `consolidatedEstimate ≈ totalSourceBytes` ({@link computeRequiredBytes}). The\n* check uses `statvfs` via `node:fs.statfsSync()` (Node 18+).\n*\n* @task T11248 (E5 · SG-DB-SUBSTRATE-V2)\n* @task T11838 (right-sized preflight + optional staging copy for large sources)\n* @saga T11242\n*/\n/**\n* Headroom multiplier applied to the LARGEST single source when sizing the\n* staging-copy footprint. The staging dir only ever holds ONE source backup at a\n* time (its advisory lock is released before the next source is touched), so the\n* peak staging footprint is the largest source plus a small slack for the\n* write-then-rename journal + SQLite sidecars — hence `1.2×`, not `3×` of the SUM.\n*\n* @task T11838\n*/\nvar STAGING_HEADROOM_FACTOR = 1.2;\n/**\n* Per-source byte threshold above which the full staging `copyFileSync` backup\n* is skipped (the source is archived, not deleted, on success). Sized at 256 MiB\n* — comfortably above the small project DBs (tasks/conduit/skills/signaldock are\n* sub-MB to low-MB) but below the large global stores (a multi-GB `brain.db` or\n* `nexus.db`) whose redundant full-file copy is the costly case T11838 removes.\n*\n* @task T11838\n*/\nvar STAGING_COPY_SKIP_THRESHOLD_BYTES = 256 * 1024 * 1024;\n/**\n* Compute the right-sized free-disk requirement for an exodus run (T11838).\n*\n* `STAGING_HEADROOM_FACTOR * largestSourceBytes` covers the peak staging-copy\n* footprint (one source at a time, plus slack), and `totalSourceBytes` is the\n* consolidated-cleo.db estimate (every source's row data lands there). The two\n* are additive because staging and the consolidated DB coexist on disk until the\n* sources are archived.\n*\n* @param totalSourceBytes - Combined size of all source DB files in bytes.\n* @param largestSourceBytes - Size of the single largest source DB in bytes.\n* @returns The minimum free bytes the target filesystem must have.\n*/\nfunction computeRequiredBytes(totalSourceBytes, largestSourceBytes) {\n\treturn Math.ceil(STAGING_HEADROOM_FACTOR * largestSourceBytes) + totalSourceBytes;\n}\n/**\n* Build the ordered list of legacy source DB descriptors for a given project.\n*\n* Project-scoped sources live under `<project>/.cleo/`.\n* Global-scoped sources live under `getCleoHome()`.\n*/\nfunction buildSourceDescriptors(cwd) {\n\tconst cleoDir = resolveCleoDir(cwd);\n\tconst cleoHome = getCleoHome();\n\treturn [\n\t\t{\n\t\t\tname: \"tasks\",\n\t\t\tpath: join(cleoDir, \"tasks.db\"),\n\t\t\ttargetScope: \"project\"\n\t\t},\n\t\t{\n\t\t\tname: \"brain (project)\",\n\t\t\tpath: join(cleoDir, \"brain.db\"),\n\t\t\ttargetScope: \"project\"\n\t\t},\n\t\t{\n\t\t\tname: \"conduit\",\n\t\t\tpath: join(cleoDir, \"conduit.db\"),\n\t\t\ttargetScope: \"project\"\n\t\t},\n\t\t{\n\t\t\tname: \"nexus\",\n\t\t\tpath: join(cleoHome, \"nexus.db\"),\n\t\t\ttargetScope: \"global\"\n\t\t},\n\t\t{\n\t\t\tname: \"signaldock\",\n\t\t\tpath: join(cleoHome, \"signaldock.db\"),\n\t\t\ttargetScope: \"global\"\n\t\t},\n\t\t{\n\t\t\tname: \"skills\",\n\t\t\tpath: join(cleoHome, \"skills.db\"),\n\t\t\ttargetScope: \"global\"\n\t\t}\n\t];\n}\n/**\n* Safely stat a file and return its size in bytes, or 0 if it does not exist.\n*/\nfunction safeFileBytes(filePath) {\n\ttry {\n\t\treturn statSync(filePath).size;\n\t} catch {\n\t\treturn 0;\n\t}\n}\n/**\n* Return available bytes on the filesystem that contains `dir`.\n*\n* Uses `statfsSync` (Node 18+). Falls back to 0 if unavailable.\n*/\nfunction getAvailableBytes(dir) {\n\ttry {\n\t\tconst result = statfsSync(dir);\n\t\treturn (result.bavail ?? result.bfree ?? 0) * (result.bsize ?? 4096);\n\t} catch {\n\t\treturn 0;\n\t}\n}\n/**\n* Derive the staging directory name from the current ISO-8601 timestamp.\n*\n* Pattern: `.cleo/exodus-staging-<YYYYMMDDTHHMMSSZ>`.\n* Colons are replaced with empty string (NTFS + shell-safe).\n*/\nfunction deriveStagingDirName() {\n\treturn `exodus-staging-${(/* @__PURE__ */ new Date()).toISOString().replace(/[:]/g, \"\").replace(/\\..+Z$/, \"Z\")}`;\n}\n/**\n* Scan for an existing staging directory from a previous (possibly crashed)\n* run inside the given `.cleo/` directory.\n*\n* Returns the absolute path to the most-recent staging dir, or `null` if none\n* exists.\n*/\nfunction findExistingStaging(cleoDir) {\n\ttry {\n\t\tconst stagingDirs = readdirSync(cleoDir, { withFileTypes: true }).filter((e) => e.isDirectory() && e.name.startsWith(\"exodus-staging-\")).map((e) => e.name).sort().reverse();\n\t\tif (stagingDirs.length > 0) return join(cleoDir, stagingDirs[0]);\n\t} catch {}\n\treturn null;\n}\n/**\n* Build the complete exodus plan.\n*\n* This is a pure read operation — no files are created or modified.\n* Pass the result to `runExodusMigrate()` to execute the migration.\n*\n* @param cwd - Working directory used to resolve the project root. Defaults to\n* `process.cwd()`.\n* @returns {@link ExodusPlan} describing sources, disk availability, and paths.\n*\n* @task T11248 (AC8 — disk pre-flight)\n* @task T11838 (right-sized: largest-source factor + consolidated estimate)\n*/\nfunction buildExodusPlan(cwd) {\n\tconst cleoDir = resolveCleoDir(cwd);\n\tconst sources = buildSourceDescriptors(cwd);\n\tconst sourceBytes = sources.map((s) => safeFileBytes(s.path));\n\tconst totalSourceBytes = sourceBytes.reduce((sum, b) => sum + b, 0);\n\tconst largestSourceBytes = sourceBytes.reduce((max, b) => Math.max(max, b), 0);\n\tconst requiredBytes = computeRequiredBytes(totalSourceBytes, largestSourceBytes);\n\tconst availableBytes = getAvailableBytes(cleoDir);\n\tconst diskPreflight = totalSourceBytes === 0 || availableBytes >= requiredBytes;\n\tconst existingStaging = findExistingStaging(cleoDir);\n\treturn {\n\t\tsources,\n\t\ttotalSourceBytes,\n\t\tlargestSourceBytes,\n\t\trequiredBytes,\n\t\tavailableBytes,\n\t\tdiskPreflight,\n\t\tstagingCopyThresholdBytes: STAGING_COPY_SKIP_THRESHOLD_BYTES,\n\t\tstagingDir: existingStaging ?? join(cleoDir, deriveStagingDirName()),\n\t\tresumeFromStaging: existingStaging !== null,\n\t\tprojectDbPath: resolveDualScopeDbPath(\"project\", cwd),\n\t\tglobalDbPath: resolveDualScopeDbPath(\"global\")\n\t};\n}\n//#endregion\n//#region ../core/dist/store/exodus/column-transforms.js\n/**\n* Shared column-value transform layer for the exodus migration.\n*\n* The exodus copy (`migrate.ts`) does not move source values byte-for-byte into\n* the consolidated `cleo.db`: a handful of columns are TRANSFORMED on the way in\n* so they satisfy the consolidated schema's CHECK constraints (which the legacy\n* runtime DBs did not carry). Three transform classes exist:\n*\n* 1. **Epoch INTEGER → ISO-8601 TEXT** ({@link buildEpochToIsoExpr}) — for any\n* target column carrying an ISO-GLOB CHECK ({@link detectIsoGlobColumns}).\n* A per-row magnitude heuristic ({@link EPOCH_SECONDS_THRESHOLD}) classifies\n* seconds vs milliseconds.\n* 2. **Legacy enum → canonical member** ({@link ENUM_NORMALIZATIONS} +\n* {@link enumNormExpr}) — maps pre-tightening enum aliases (e.g.\n* `tasks_commits.conventional_type` `'style'`/`'merge'` → `'chore'`).\n* 3. **Non-finite REAL → finite** ({@link NUMERIC_CLAMPS} +\n* {@link numericClampExpr}) — `Inf`/`-Inf`/`NaN` → a finite in-range value\n* (`brain_weight_history.delta_weight`).\n*\n* ## Why this module exists (T11809 · AC2)\n*\n* Before T11809 these transforms lived ONLY in `migrate.ts`. The parity verifier\n* (`verify-migration.ts`) digested RAW source values against the TRANSFORMED\n* target values, so every coerced column (epoch INTEGER vs ISO TEXT, legacy enum\n* vs canonical, Inf vs clamped) produced a `hashMatch === false` even on a\n* perfectly lossless migration — a false-negative that aborted the cutover and\n* lost the batch writes accumulated during the migrating open.\n*\n* Extracting the transform logic into ONE shared module lets the verifier digest\n* the SOURCE side **through the same transforms migrate applied**\n* ({@link buildDigestExpr}), so equal logical data digests equal. `migrate.ts`\n* re-imports these primitives so its copy behaviour stays byte-identical; the\n* verifier imports {@link buildDigestExpr} for the digest-oriented variant.\n*\n* @task T11809 (exodus verify applies source-side coercion — hashMatch on equal data)\n* @task T11546 (epoch→ISO coercion — original)\n* @task T11547 (enum normalization — original)\n* @task T11782 (non-finite numeric clamp — original)\n* @epic T11249 (E6)\n* @saga T11242\n*/\n/**\n* Determine a safe SQL literal default for a NOT NULL column with no schema\n* default, given its SQLite type affinity.\n*\n* Used by `migrate.ts` to coalesce NULL source values for target-only NOT NULL\n* columns so that rows are not silently dropped by `INSERT OR IGNORE` when a\n* source value is NULL (T11533 ROOT CAUSE 2 fix).\n*\n* @param colType - Raw `type` string from `PRAGMA table_info` (e.g. `\"INTEGER\"`,\n* `\"TEXT\"`, `\"REAL\"`, `\"BLOB\"`, or compound forms like `\"text NOT NULL\"`).\n* @returns A SQL literal string suitable for embedding in a `COALESCE()` call.\n*/\nfunction typeDefaultLiteral(colType) {\n\tconst upper = colType.toUpperCase();\n\tif (upper.includes(\"INT\")) return \"0\";\n\tif (upper.includes(\"REAL\") || upper.includes(\"FLOAT\") || upper.includes(\"DOUBLE\")) return \"0.0\";\n\tif (upper.includes(\"BLOB\")) return \"x''\";\n\treturn \"''\";\n}\n/**\n* Per-(targetTable, column) normalization rules that map legacy enum values to\n* the canonical enum accepted by the consolidated schema CHECK constraints.\n*\n* Each entry is a function that, given the `srcRef` SQL expression for the\n* column, returns a SQL CASE expression that produces the canonical value.\n* Rows with already-canonical values pass through unchanged (the ELSE branch).\n*\n* ## Brain enum normalizations REMOVED (T11647)\n*\n* The brain memory family no longer participates in enum normalization. Its\n* consolidated exodus target now matches the LEGACY RUNTIME shape, which carries\n* NO SQL CHECK constraints (the `text({ enum })` unions are enforced at the\n* application layer only). With no CHECK to satisfy, coercing brain enum values\n* would be data corruption, not a fix — so every brain enum value is copied\n* VERBATIM. The historical brain rules (`brain_observations.{source_type,type}`,\n* `brain_decisions.{confirmation_state,decision_category,confidence,outcome,\n* decided_by}`) were deleted. The TASKS-domain rules below remain because those\n* consolidated tables keep their CHECK constraints.\n*\n* ## nexus/signaldock enum-drift audit (T11809 · AC1)\n*\n* A real-data audit of `nexus.db` (106 MB) and `signaldock.db` (280 KB) against\n* the consolidated CHECK enums found ZERO out-of-enum values for every\n* CHECK-constrained column that has source data: `nexus_nodes.kind` (24,482\n* rows), `nexus_relations.type` (39,163 rows), `nexus_contracts.type` (0 rows),\n* `nexus_sigils.role` (8 rows), `agent_registry_agents.status` (19 rows),\n* `agent_registry_users.role` (0 rows). No new normalization entry was required.\n* The reported \"nexus/signaldock drop rows\" symptom was in fact the AC2 verify\n* false-negative (epoch→ISO coercion makes the source digest differ from the\n* target digest), which fixing {@link buildDigestExpr} resolves — NOT a CHECK\n* drop. See the T11809 return notes for the full per-column row counts.\n*\n* Lookup key: `${targetTable}.${column}` (lowercase, dotted).\n*\n* @since T11547 (P0 data-loss fix)\n* @since T11548 (P0 final enum coverage)\n* @since T11647 (brain target = runtime shape — brain enum coercions removed)\n*/\nvar ENUM_NORMALIZATIONS = new Map([\n\t[\"tasks_task_commits.link_source\", (src) => `CASE ${src} WHEN 'commit-message' THEN 'commit-subject' ELSE ${src} END`],\n\t[\"tasks_architecture_decisions.status\", (src) => `CASE WHEN lower(${src}) = 'accepted' OR lower(${src}) LIKE 'accepted %' OR lower(${src}) = 'approved' THEN 'accepted' WHEN lower(${src}) = 'proposed' THEN 'proposed' WHEN lower(${src}) = 'superseded' THEN 'superseded' WHEN lower(${src}) = 'deprecated' THEN 'deprecated' ELSE ${src} END`],\n\t[\"tasks_commits.conventional_type\", (src) => `CASE WHEN ${src} IS NULL THEN NULL WHEN ${src} IN ('feat', 'fix', 'chore', 'docs', 'refactor', 'test', 'build', 'ci', 'perf', 'revert', 'breaking') THEN ${src} ELSE 'chore' END`],\n\t[\"tasks_task_relations.relation_type\", (src) => `CASE ${src} WHEN 'grouped-by' THEN 'groups' ELSE ${src} END`],\n\t[\"tasks_lifecycle_stages.stage_name\", (src) => `CASE ${src} WHEN 'implemented' THEN 'implementation' WHEN 'qaPassed' THEN 'validation' WHEN 'testsPassed' THEN 'testing' ELSE ${src} END`],\n\t[\"tasks_architecture_decisions.gate_status\", (src) => `CASE WHEN ${src} LIKE 'passed%' THEN 'passed' WHEN ${src} = 'approved' THEN 'passed' ELSE ${src} END`],\n\t[\"tasks_evidence_ac_bindings.binding_type\", (src) => `CASE WHEN ${src} LIKE 'validator:%' THEN 'direct' ELSE ${src} END`]\n]);\n/**\n* Return a SQL CASE expression that normalises legacy enum values for `col` in\n* `targetTableName` to the canonical values accepted by the consolidated CHECK,\n* or return `null` when no normalization rule exists for this (table, column).\n*\n* @param targetTableName - Physical consolidated target table name.\n* @param col - Column name.\n* @param srcRef - SQL expression referencing the source column.\n* @returns A SQL CASE expression string, or `null` if no rule applies.\n*/\nfunction enumNormExpr(targetTableName, col, srcRef) {\n\tconst key = `${targetTableName}.${col}`;\n\tconst fn = ENUM_NORMALIZATIONS.get(key);\n\treturn fn ? fn(srcRef) : null;\n}\n/**\n* Per-(targetTable, column) numeric-clamp rules that coerce non-finite legacy\n* REAL values (`Inf` / `-Inf` / `NaN`) to a finite in-range value so the row is\n* NOT silently dropped by `INSERT OR IGNORE`.\n*\n* ## Why this exists (T11782)\n*\n* 188,926 of 697,780 legacy `brain_weight_history` rows carry\n* `delta_weight = Inf`/`-Inf` (the R-STDP plasticity writer saturated the delta\n* before the value was clamped at write time). SQLite stores ±Inf as the IEEE-754\n* float, but the consolidated `brain_weight_history.delta_weight` column is a\n* plain `real NOT NULL` with NO CHECK — so a verbatim copy would land the Inf\n* value. The historical deficit, however, was that those rows tripped a constraint\n* elsewhere in the copy chain and `INSERT OR IGNORE` dropped them, yielding a\n* deficit that fired the parity-gate abort. Clamping the non-finite value to a\n* finite member of the column's domain guarantees every row lands.\n*\n* The clamp mirrors the {@link ENUM_NORMALIZATIONS} shape: each entry is a\n* function `(srcRef) => CASE …`. Finite values pass through unchanged via the\n* ELSE branch. The `col != col` self-comparison is the canonical SQL NaN guard\n* (NaN is the only value not equal to itself); `9e999` is the SQLite literal that\n* evaluates to `+Infinity` (and `-9e999` to `-Infinity`).\n*\n* Lookup key: `${targetTable}.${column}` (lowercase, dotted).\n*\n* @since T11782 (P0 — brain_weight_history Inf recovery)\n*/\nvar NUMERIC_CLAMPS = new Map([[\"brain_weight_history.delta_weight\", (src) => `CASE WHEN ${src} = 9e999 THEN 1.0 WHEN ${src} = -9e999 THEN -1.0 WHEN ${src} != ${src} THEN 0.0 ELSE ${src} END`]]);\n/**\n* Return a SQL CASE expression that clamps non-finite legacy REAL values for\n* `col` in `targetTableName` to a finite in-range value, or `null` when no\n* clamp rule exists for this (table, column).\n*\n* @param targetTableName - Physical consolidated target table name.\n* @param col - Column name.\n* @param srcRef - SQL expression referencing the source column.\n* @returns A SQL CASE expression string, or `null` if no rule applies.\n*/\nfunction numericClampExpr(targetTableName, col, srcRef) {\n\tconst key = `${targetTableName}.${col}`;\n\tconst fn = NUMERIC_CLAMPS.get(key);\n\treturn fn ? fn(srcRef) : null;\n}\n/**\n* Regex to detect ISO GLOB CHECK constraints in DDL SQL.\n* Matches: `CHECK (\"colname\" IS NULL OR \"colname\" GLOB '[0-9]...')`\n* Uses `\\[0-9` to match the literal `[0-9` at the start of the GLOB pattern.\n*/\nvar ISO_CHECK_REGEX = /CHECK\\s*\\(\\s*\"([^\"]+)\"\\s+IS\\s+NULL\\s+OR\\s+\"[^\"]+\"\\s+GLOB\\s+'\\[0-9/gi;\n/**\n* Magnitude threshold distinguishing epoch SECONDS from epoch MILLISECONDS.\n*\n* A Unix epoch value for years 2020–2100 is roughly 1.6e9 – 4.1e9 seconds,\n* or 1.6e12 – 4.1e12 milliseconds. The safe boundary is 1e11 (100 billion):\n* any value BELOW 1e11 is in seconds (even year 2100 seconds ≈ 4.1e9 < 1e11);\n* any value AT OR ABOVE 1e11 is in milliseconds (year 2020 ms ≈ 1.6e12 > 1e11).\n*\n* This constant is embedded directly in the generated SQL CASE expression so\n* it is evaluated per-row — each row's epoch is classified independently.\n*/\nvar EPOCH_SECONDS_THRESHOLD = 1e11;\n/**\n* Build a SQL expression that converts an INTEGER epoch column to ISO-8601 TEXT,\n* automatically detecting whether the stored value is in seconds or milliseconds\n* using a magnitude heuristic (T11549 correctness fix).\n*\n* ## Heuristic\n*\n* A per-row CASE checks whether the column value is below {@link EPOCH_SECONDS_THRESHOLD}\n* (100 billion). If so, the value is treated as seconds and passed directly to\n* `strftime(..., 'unixepoch')`. If at or above the threshold, it is divided by\n* 1000.0 first (milliseconds → seconds).\n*\n* This replaces the previous per-source heuristic which failed when individual\n* columns within a source DB used a different epoch unit than the majority of that\n* source's columns. The specific bug: `nexus.user_profile.{first_observed_at,\n* last_reinforced_at}` stores SECONDS (value ≈ 1.78e9) but the nexus source was\n* labeled `milliseconds`, causing these values to be divided by 1000 and converted\n* to a 1970 date.\n*\n* ## NULL handling\n*\n* A NULL source value is preserved as NULL so it passes the `IS NULL` branch of\n* the ISO GLOB CHECK constraint on the target column.\n*\n* @param srcRef - SQL expression referencing the source column value.\n* @returns A SQL CASE expression producing an ISO-8601 TEXT timestamp.\n*/\nfunction buildEpochToIsoExpr(srcRef) {\n\treturn `CASE WHEN ${srcRef} IS NULL THEN NULL WHEN ${srcRef} < ${EPOCH_SECONDS_THRESHOLD} THEN strftime('%Y-%m-%dT%H:%M:%fZ', ${srcRef}, 'unixepoch') ELSE strftime('%Y-%m-%dT%H:%M:%fZ', ${srcRef}/1000.0, 'unixepoch') END`;\n}\n/**\n* Parse the DDL for a given table from `sqlite_master` and return the set of\n* column names that have an ISO GLOB CHECK constraint.\n*\n* Reads the raw DDL text and uses a regex to extract column names appearing in\n* `CHECK (\"colname\" IS NULL OR \"colname\" GLOB '[0-9]...')` patterns. This is\n* robust to Drizzle's generated CHECK format (all CHECK constraints generated\n* by T11363 follow this exact pattern).\n*\n* @param db - Target DB with the consolidated schema.\n* @param tableName - Physical table name (consolidated, e.g. `conduit_messages`).\n* @param targetSchema - Schema name the target table lives in (`'main'`, or an\n* ATTACH alias for cross-scope routing — ADR-090 nexus graph residency, T11539).\n* @returns Set of column names that require ISO GLOB validation.\n*/\nfunction detectIsoGlobColumns(db, tableName, targetSchema = \"main\") {\n\tconst escapedTable = tableName.replace(/'/g, \"''\");\n\tconst row = db.prepare(`SELECT sql FROM \"${targetSchema}\".sqlite_master WHERE type='table' AND name='${escapedTable}'`).get();\n\tif (!row?.sql) return /* @__PURE__ */ new Set();\n\tconst isoColumns = /* @__PURE__ */ new Set();\n\tISO_CHECK_REGEX.lastIndex = 0;\n\tfor (const match of row.sql.matchAll(ISO_CHECK_REGEX)) isoColumns.add(match[1]);\n\treturn isoColumns;\n}\n/**\n* Return `true` when the source column's type affinity is INTEGER-like, so an\n* epoch→ISO coercion applies when the matching target column carries an ISO GLOB\n* CHECK. Empty affinity and `NUMERIC` are treated as integer-like (matching the\n* historical `buildSelectExpr` behaviour — legacy epoch columns sometimes carry\n* no declared type or a `NUMERIC` affinity).\n*\n* @param srcType - Raw `type` string from the source `PRAGMA table_info`.\n* @returns `true` if the source column should be considered an INTEGER epoch.\n*/\nfunction isIntegerSourceType(srcType) {\n\tconst upper = srcType.toUpperCase();\n\treturn upper.includes(\"INT\") || upper === \"\" || upper === \"NUMERIC\";\n}\n/**\n* Wrap a digest value expression in the SAME `COALESCE(expr, type_default)`\n* substitution migrate's `buildSelectExpr` applies, when (and only when) the\n* matching TARGET column is NOT NULL without a schema default (T11836).\n*\n* On a faithful FRESH migration a NULL source value in such a column is stored\n* as the type default (`''`/`0`/`0.0`/`x''`) by migrate; digesting the source\n* raw would read NULL and diverge from the stored default — a false\n* `hashMatch === false` at equal row counts. Mirroring the COALESCE here makes\n* the source digest reflect what migrate actually stored, so the substitution is\n* a NON-FATAL diagnostic class rather than a content-corruption failure.\n*\n* @param expr - The value expression produced by an upstream transform branch.\n* @param tgtCol - Target column metadata, or `undefined` when unavailable (no\n* COALESCE applied — best-effort, biased to surfacing a real difference).\n* @returns The expression, COALESCE-wrapped when the target is NOT-NULL-without-default.\n*/\nfunction maybeCoalesceNotNull(expr, tgtCol) {\n\tif (tgtCol === void 0) return expr;\n\tif (!(tgtCol.notnull === 1 && tgtCol.dflt_value === null)) return expr;\n\treturn `COALESCE(${expr}, ${typeDefaultLiteral(tgtCol.type)})`;\n}\n/**\n* Build the SQL expression a column's SOURCE value must pass through so it\n* matches the canonical value the migration STORES in the target — for use by\n* the parity verifier's content digest (T11809 · AC2).\n*\n* This is the digest-oriented sibling of migrate's `buildSelectExpr`. It applies\n* the SAME value transforms the migration actually performs — and ONLY those:\n*\n* 1. **Epoch→ISO-8601** ({@link buildEpochToIsoExpr}) — when the target has an\n* ISO GLOB CHECK and the source column is INTEGER-typed.\n* 2. **Non-finite numeric clamp** ({@link numericClampExpr}).\n* 3. **Enum-value normalization** ({@link enumNormExpr}).\n* 4. **Plain column reference** otherwise.\n*\n* ## NOT-NULL default substitution mirroring (T11836)\n*\n* After the value transform, the result is wrapped in the SAME\n* `COALESCE(expr, type_default)` substitution migrate's `buildSelectExpr` uses\n* for a TARGET column that is NOT NULL without a schema default (see\n* {@link maybeCoalesceNotNull}). migrate stores the type default (`''`/`0`/\n* `0.0`/`x''`) for a NULL source value in such a column; without mirroring it\n* here the source digest would read NULL and diverge from the stored default — a\n* false `hashMatch === false` on a faithful FRESH migration (the exact T11836\n* symptom). Mirroring it makes a NULL→NOT-NULL-default substitution a NON-FATAL\n* diagnostic class rather than a hash failure. The target metadata is supplied\n* via the `tgtColByCol` map; when it is absent (best-effort) no COALESCE is\n* applied and a genuine NULL→'' divergence remains visible as before.\n*\n* The returned expression is a bare SQL value expression (no `AS \"col\"` alias)\n* suitable for embedding directly in a `SELECT <expr> ... ORDER BY ...` digest\n* query. When no transform applies, a plain quoted column reference is returned.\n*\n* @param targetTableName - Physical consolidated target table name (transform\n* lookup key).\n* @param col - Column name (present in BOTH source and target).\n* @param srcType - Raw `type` string from the source `PRAGMA table_info`.\n* @param isoGlobCols - Set of target columns carrying an ISO GLOB CHECK.\n* @param tgtCol - Target column metadata (NOT-NULL flag + default +\n* affinity) for `col`, or `undefined` when unavailable.\n* @returns A SQL value expression that maps the raw source value to the canonical\n* value the target stores.\n*/\nfunction buildDigestExpr(targetTableName, col, srcType, isoGlobCols, tgtCol) {\n\tconst srcRef = `\"${col}\"`;\n\tif (isoGlobCols.has(col) && isIntegerSourceType(srcType)) return maybeCoalesceNotNull(buildEpochToIsoExpr(srcRef), tgtCol);\n\tconst clampExpr = numericClampExpr(targetTableName, col, srcRef);\n\tif (clampExpr !== null) return maybeCoalesceNotNull(clampExpr, tgtCol);\n\tconst normExpr = enumNormExpr(targetTableName, col, srcRef);\n\tif (normExpr !== null) return maybeCoalesceNotNull(normExpr, tgtCol);\n\treturn maybeCoalesceNotNull(srcRef, tgtCol);\n}\n//#endregion\n//#region ../core/dist/store/exodus/types.js\n/**\n* Shared types for the `cleo exodus` migration subsystem.\n*\n* The exodus subsystem migrates data from the legacy multi-DB fleet\n* (tasks.db · brain.db · conduit.db · nexus.db · signaldock.db · skills.db)\n* into the consolidated dual-scope `cleo.db` (project + global).\n*\n* @task T11248 (E5 · SG-DB-SUBSTRATE-V2)\n* @saga T11242\n* @adr ADR-068, ADR-069\n*/\n/**\n* Canonical schema version tag embedded in the exodus journal.\n*\n* This constant represents the Drizzle v1.0.0-rc.3 target schema \"epoch\"\n* for the dual-scope consolidation (T11245 · E2 · SG-DB-SUBSTRATE-V2).\n* The exact value is a stable marker — not a live hash — so that import\n* refuses cross-version migration unless `--force-cross-version` is passed.\n*/\nvar EXODUS_TARGET_SCHEMA_VERSION = \"drizzle-v1.0.0-rc.3/dual-scope/2026-05\";\n//#endregion\n//#region ../core/dist/store/exodus/migrate.js\n/**\n* Exodus migration engine.\n*\n* `runExodusMigrate()` performs the actual data migration from legacy DBs\n* to the consolidated dual-scope `cleo.db`. Key invariants:\n*\n* - Source DBs are opened **read-only** via `openCleoDbSnapshot` (AC4).\n* - Source files are backed up to the staging dir before any writes (AC5).\n* - Import is wrapped in `BEGIN … COMMIT` per source; partial failure leaves\n* the target DB untouched (AC6).\n* - Idempotency keys are propagated where the source row has them; generated\n* where it does not (AC7).\n* - The staging journal is written atomically before each table copy so a\n* crash can be resumed (AC5).\n*\n* ## Type coercion — epoch INTEGER → ISO-8601 TEXT (ROOT CAUSE 1 fix — T11546)\n*\n* Many legacy tables store timestamps as INTEGER epoch values (seconds or\n* milliseconds). The consolidated schema declares these columns as `text` with\n* a CHECK constraint: `CHECK (\"col\" IS NULL OR \"col\" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]*')`.\n*\n* When a source INTEGER value is inserted into a target TEXT+GLOB column, SQLite\n* coerces the integer to its decimal string representation (e.g. `\"1717200000\"`),\n* which fails the GLOB check. `INSERT OR IGNORE` then SILENTLY DROPS the entire\n* row. Result: all conduit_messages, brain_observations, etc. → 0 rows copied\n* while migrate reports `success: true, rowsCopied: 0`.\n*\n* Fix (two parts):\n* (a) Per-column value transform: `detectEpochToIsoColumns()` reads the target\n* table DDL from `sqlite_master` to identify columns with an ISO GLOB\n* CHECK constraint. For those columns, if the source type affinity is\n* INTEGER, the SELECT expression applies `strftime('%Y-%m-%dT%H:%M:%fZ',\n* col, 'unixepoch')` (seconds) or the `/1000.0` ms variant depending on\n* the per-source/table heuristic.\n* (b) No-swallow assertion: after the bulk INSERT OR IGNORE, the actual\n* `changes` count is compared against the source row count. Any shortfall\n* is surfaced as a hard table-level error (not a silent success).\n* PK/UNIQUE conflicts on resume are tolerated (they are expected and safe\n* to ignore); unexpected shortfalls are flagged with a detailed error.\n*\n* ## ATTACH-once-per-source design (P0 fix — T11531)\n*\n* Each legacy source DB is ATTACHed to the target handle ONCE using a unique\n* per-source alias, all tables from that source are copied under the single\n* attachment, and then the alias is DETACHed. The ATTACH and DETACH are\n* performed **outside** the BEGIN/COMMIT transaction block because SQLite\n* forbids DETACH inside an active multi-statement transaction. The INSERT\n* statements themselves are issued inside the transaction for atomicity (AC6).\n*\n* Prior implementation called ATTACH/DETACH per-table inside an open\n* transaction — DETACH silently failed (SQLite restriction), the alias stayed\n* attached, and every subsequent table for the same source threw\n* \"database _exodus_src_ is already in use\", causing ~80 % data loss.\n*\n* ## FK-defer bulk copy (ROOT CAUSE 1 fix — T11533)\n*\n* Legacy tasks.db has self-referential FKs (`tasks.parent_id → tasks.id`),\n* cross-table FKs, and ~18 tables with FK relationships. When FK enforcement\n* is ON and tables are copied in arbitrary order (children before parents),\n* each child INSERT fails with FOREIGN KEY constraint error (SQLite errcode 787)\n* and the table is silently skipped — causing ~114K rows of data loss.\n*\n* Fix: set `PRAGMA foreign_keys = OFF` on the target connection before any\n* bulk INSERT, then after all tables are committed run `PRAGMA foreign_key_check`\n* to validate referential integrity. Genuine orphan rows surface as verify\n* failures; child-before-parent ordering artifacts are NOT dropped.\n* `PRAGMA foreign_keys = ON` is restored after the check.\n*\n* ## Name-mapping (ROOT CAUSE 1 fix — T11532)\n*\n* Legacy source DBs use UNPREFIXED table names (`tasks`, `messages`, `skills`,\n* …) while the consolidated `cleo.db` uses DOMAIN-PREFIXED names\n* (`tasks_tasks`, `conduit_messages`, `skills_skills`, …). The\n* `resolveConsolidatedTableName()` function from `table-name-map.ts` performs\n* the deterministic legacy→consolidated mapping before every copy. Tables with\n* no consolidated home emit an explicit WARN journal entry rather than being\n* silently discarded.\n*\n* ## Column-drift tolerance (ROOT CAUSE 2 fix — T11532, hardened T11533)\n*\n* When the source and target schemas differ (consolidated schema added/changed\n* columns vs legacy), the copy uses the INTERSECTION of source and target\n* column names. New target-only columns take their schema defaults; old\n* source-only columns are dropped. This is implemented by introspecting both\n* schemas via `PRAGMA table_info` and building an explicit column list.\n*\n* **NOT NULL / no-default hazard (T11533)**: target-only NOT NULL columns\n* WITHOUT a schema default caused `INSERT OR IGNORE` to silently drop rows\n* whose source value was NULL for that column (constraint violation → IGNORE).\n* The fix: for each intersection column that is NOT NULL in the target AND\n* has no `dflt_value`, the SELECT clause wraps the source reference in\n* `COALESCE(src_col, type_default)` so no row is silently dropped.\n* A type_default of `''` is used for TEXT affinity and `0` for numeric.\n*\n* ## Advisory file lock (AC4)\n*\n* The source DB files are opened read-only via `openCleoDbSnapshot` which\n* calls `new DatabaseSync(path, { readOnly: true })`. Node's SQLite binding\n* opens with `SQLITE_OPEN_READONLY`, which prevents any writes from this\n* process. We additionally write a `.lock` sentinel file next to each source\n* DB for the duration of the migration so that other CLEO processes can detect\n* an in-progress exodus and refuse to write.\n*\n* @task T11248 (E5 · SG-DB-SUBSTRATE-V2)\n* @task T11531 (P0 attach-leak fix)\n* @task T11532 (P0 name-mapping + column-drift + verify-rowid fix)\n* @task T11533 (P0 FK-defer + NOT NULL coalesce + signaldock-global map + nexus hash fix)\n* @task T11547 (P0 enum normalization — 7,421 rows recovered)\n* @task T11548 (P0 final enum coverage — 285 remaining rows zero-loss)\n* @task T11549 (P0 zero-loss final mile — brain_decisions enums + seconds-epoch coercion +\n* agent_credentials/brain_release_links tables)\n* @saga T11242\n*/\nvar log$2 = getLogger(\"exodus-migrate\");\nvar LOCK_SENTINEL_SUFFIX = \".exodus-lock\";\nvar JOURNAL_FILENAME = \"exodus-journal.json\";\n/**\n* Get the SQLite version string from an open DatabaseSync handle.\n*/\nfunction getSqliteVersion(db) {\n\ttry {\n\t\treturn db.prepare(\"SELECT sqlite_version() AS v\").get()?.v ?? \"unknown\";\n\t} catch {\n\t\treturn \"unknown\";\n\t}\n}\n/**\n* Read the tables list from a legacy SQLite DB (excluding SQLite internals).\n*/\nfunction listTables$1(db) {\n\treturn db.prepare(\"SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%' AND name NOT LIKE '__drizzle_%' ORDER BY name\").all().map((r) => r.name);\n}\n/**\n* Write the journal file atomically (write-then-rename pattern).\n*/\nfunction writeJournal(stagingDir, journal) {\n\tconst journalPath = join(stagingDir, JOURNAL_FILENAME);\n\tconst tmpPath = `${journalPath}.tmp`;\n\twriteFileSync(tmpPath, JSON.stringify(journal, null, 2) + \"\\n\", \"utf8\");\n\trenameSync(tmpPath, journalPath);\n}\n/**\n* Read an existing journal from the staging dir, or return `null`.\n*/\nfunction readJournal(stagingDir) {\n\tconst journalPath = join(stagingDir, JOURNAL_FILENAME);\n\tif (!existsSync(journalPath)) return null;\n\ttry {\n\t\treturn JSON.parse(readFileSync(journalPath, \"utf8\"));\n\t} catch {\n\t\treturn null;\n\t}\n}\n/**\n* Invalidate the migrate journal after an aborted/rolled-back migration so a\n* post-abort retry RE-COPIES every table from scratch (T11572).\n*\n* ## Why this is required for retry correctness\n*\n* `runExodusMigrate` is resumable (AC5): after each table copy it writes a\n* journal entry with `status: 'done'`, and a subsequent run SKIPS any table\n* already marked `done`. That resume optimisation is correct only while the\n* consolidated rows it copied still EXIST. When the parity gate aborts, the\n* exodus-on-open hook truncates the consolidated tables back to EMPTY\n* (`rollbackConsolidatedToEmpty`) — but the on-disk journal still says every\n* table is `done`. The next open therefore re-triggers (consolidated empty),\n* runs `runExodusMigrate` again, finds every table `done` in the journal, copies\n* NOTHING, re-verifies the still-empty target, and re-aborts — a permanent loop\n* that pays the full migrate+verify cost on every open.\n*\n* Deleting the journal file forces `runExodusMigrate` to `initJournal()` afresh,\n* so the retry actually re-copies. Idempotent and best-effort: a missing journal\n* (or a missing staging dir) is a no-op. The staging backups are intentionally\n* LEFT in place (they are the legacy source-of-truth snapshots — harmless to\n* keep, valuable for forensics); only the progress journal is cleared.\n*\n* @param stagingDir - The staging directory whose `exodus-journal.json` to clear.\n* @returns `true` if a journal file was removed, `false` if there was nothing to\n* remove.\n*\n* @task T11572 (abort/rollback must invalidate journal so retry re-copies)\n* @epic T11249 (E6)\n* @saga T11242\n*/\nfunction clearExodusJournal(stagingDir) {\n\tconst journalPath = join(stagingDir, JOURNAL_FILENAME);\n\ttry {\n\t\tif (!existsSync(journalPath)) return false;\n\t\tunlinkSync(journalPath);\n\t\tlog$2.info({ stagingDir }, \"exodus: cleared migrate journal after abort/rollback — a retry will RE-COPY all tables\");\n\t\treturn true;\n\t} catch (err) {\n\t\tlog$2.warn({\n\t\t\terr,\n\t\t\tstagingDir\n\t\t}, \"exodus: failed to clear migrate journal after rollback (a retry may skip already-\\\"done\\\" tables)\");\n\t\treturn false;\n\t}\n}\n/**\n* Initialise a fresh journal object.\n*/\nfunction initJournal(sqliteVersion) {\n\tconst now = (/* @__PURE__ */ new Date()).toISOString();\n\treturn {\n\t\tversion: 1,\n\t\tcleoVersion: getCleoVersion(),\n\t\ttargetSchemaVersion: EXODUS_TARGET_SCHEMA_VERSION,\n\t\tnodeVersion: process.version,\n\t\tsqliteVersion,\n\t\tstartedAt: now,\n\t\tupdatedAt: now,\n\t\ttables: []\n\t};\n}\nfunction lockPath(dbPath) {\n\treturn `${dbPath}${LOCK_SENTINEL_SUFFIX}`;\n}\nfunction acquireAdvisoryLock(dbPath) {\n\twriteFileSync(lockPath(dbPath), JSON.stringify({\n\t\tpid: process.pid,\n\t\tts: (/* @__PURE__ */ new Date()).toISOString()\n\t}), \"utf8\");\n}\nfunction releaseAdvisoryLock(dbPath) {\n\ttry {\n\t\tunlinkSync(lockPath(dbPath));\n\t} catch {}\n}\n/**\n* Return a file's size in bytes, or `0` when it cannot be stat'd (T11838).\n*\n* Used to decide whether a source exceeds the staging-copy skip threshold. A\n* non-existent / unreadable source is treated as 0 bytes (it is filtered out of\n* the copy loop separately), so it never trips the large-source skip branch.\n*\n* @param filePath - Absolute path to the file to stat.\n* @returns The file size in bytes, or `0` on any stat failure.\n*/\nfunction safeStatBytes(filePath) {\n\ttry {\n\t\treturn statSync(filePath).size;\n\t} catch {\n\t\treturn 0;\n\t}\n}\n/**\n* Convert a source DB name to a safe, unique SQLite ATTACH alias.\n*\n* SQLite identifiers may contain only word characters; we prefix with\n* `_src_` so they never collide with target table names.\n*\n* @param name - Logical name from `LegacyDbDescriptor.name` (e.g. `\"brain (project)\"`).\n* @param index - Positional index used when names collide after sanitisation.\n* @returns A unique, identifier-safe alias string.\n*/\nfunction makeAttachAlias(name, index) {\n\treturn `_src_${name.replace(/[^a-z0-9]/gi, \"_\").replace(/_+/g, \"_\").slice(0, 20)}_${index}`;\n}\n/**\n* Per-source-DB epoch unit lookup — used as a primary hint for the SQL magnitude\n* heuristic (T11549 coercion fix). When the magnitude heuristic is ambiguous\n* (value in the overlap zone), the source-level hint wins.\n*\n* Verified from schema source comments (§8.1 resolution):\n* - conduit.db: `Math.floor(Date.now() / 1000)` → SECONDS\n* - brain.db: `Date.now()` / `unixepoch * 1000` → MILLISECONDS\n* - signaldock.db: `strftime('%s','now')` → SECONDS\n* - tasks.db: `Date.now()` → MILLISECONDS (most writers)\n* - nexus.db: mixed — most columns are MILLISECONDS but `user_profile`\n* `first_observed_at`/`last_reinforced_at` are SECONDS\n* (written by PSYCHE dialectic writer via `Math.floor(Date.now() / 1000)`).\n* The magnitude heuristic handles this automatically.\n* - skills.db: `Date.now()` → MILLISECONDS\n*/\nvar SOURCE_EPOCH_UNITS = new Map([\n\t[\"conduit\", \"seconds\"],\n\t[\"brain\", \"milliseconds\"],\n\t[\"brain (project)\", \"milliseconds\"],\n\t[\"brain (global)\", \"milliseconds\"],\n\t[\"signaldock\", \"seconds\"],\n\t[\"tasks\", \"milliseconds\"],\n\t[\"nexus\", \"milliseconds\"],\n\t[\"skills\", \"milliseconds\"]\n]);\n/**\n* Return the epoch unit used by a given source DB's INTEGER timestamp columns.\n* Defaults to `'seconds'` for unknown sources (safe default — ISO-8601 output\n* will be off by 1000x only for ms sources, which are already enumerated above).\n*\n* NOTE: This is the per-source hint. The actual SQL expression generated by\n* `buildEpochToIsoExpr` uses a magnitude-based heuristic at the row level so\n* individual columns that diverge from the source default are handled correctly\n* (T11549 bug fix — nexus `user_profile` stores seconds despite nexus being\n* labeled milliseconds at the source level).\n*/\nfunction epochUnitForSource(sourceName) {\n\tconst key = sourceName.toLowerCase();\n\tfor (const [pattern, unit] of SOURCE_EPOCH_UNITS) if (key === pattern || key.startsWith(pattern)) return unit;\n\treturn \"seconds\";\n}\n/**\n* Build a SQL SELECT expression for a shared column, applying (in priority order):\n*\n* 1. **Epoch→ISO-8601 coercion** (T11546): when the target has an ISO GLOB CHECK\n* and the source column is INTEGER-typed.\n* 2. **Non-finite numeric clamp** (T11782): when `NUMERIC_CLAMPS` has an entry\n* for `(targetTableName, col)`, mapping `Inf`/`-Inf`/`NaN` to a finite in-range\n* value so the row is not silently dropped.\n* 3. **Enum-value normalization** (T11547): when `ENUM_NORMALIZATIONS` has an\n* entry for `(targetTableName, col)`, producing a SQL CASE expression that\n* maps legacy values to canonical enum members without losing semantics.\n* 4. **NOT NULL coalesce** (T11533): for non-epoch, non-normalized columns whose\n* target is NOT NULL with no schema default.\n* 5. **Plain column reference** otherwise.\n*\n* The epoch→ISO conversion uses `buildEpochToIsoExpr` (from `column-transforms.ts`)\n* which detects the epoch scale (seconds vs milliseconds) per-row using a magnitude\n* heuristic: values below `EPOCH_SECONDS_THRESHOLD` (1e11) are treated as seconds;\n* values at or above are treated as milliseconds and divided by 1000.0 before conversion\n* (T11549 correctness fix — the previous per-source unit was incorrect for\n* individual columns that diverged from the source default, e.g.\n* `nexus.user_profile.first_observed_at` stores SECONDS even though most nexus\n* writers use milliseconds).\n*\n* A NULL source value is preserved as NULL (passes the `IS NULL` branch of the\n* GLOB CHECK, and is OK for nullable columns).\n*\n* @param attachAlias - ATTACH alias for the source DB.\n* @param legacyTable - Legacy table name in the source.\n* @param targetTableName - Physical consolidated target table name (for enum lookup).\n* @param col - Column name.\n* @param srcType - Raw type string from source `PRAGMA table_info`.\n* @param tgtInfo - Target column metadata from `PRAGMA table_info`.\n* @param isoGlobCols - Set of columns requiring ISO GLOB in the target.\n* @returns SQL expression string suitable for use in a SELECT clause.\n*/\nfunction buildSelectExpr(attachAlias, legacyTable, targetTableName, col, srcType, tgtInfo, isoGlobCols) {\n\tconst srcRef = `\"${attachAlias}\".\"${legacyTable}\".\"${col}\"`;\n\tconst srcUpper = srcType.toUpperCase();\n\tconst isIntegerSource = srcUpper.includes(\"INT\") || srcUpper === \"\" || srcUpper === \"NUMERIC\";\n\tconst isNotNullWithoutDefault = tgtInfo.notnull === 1 && tgtInfo.dflt_value === null;\n\tif (isoGlobCols.has(col) && isIntegerSource) {\n\t\tconst isoExpr = buildEpochToIsoExpr(srcRef);\n\t\tif (isNotNullWithoutDefault) return `COALESCE(${isoExpr}, '') AS \"${col}\"`;\n\t\treturn `${isoExpr} AS \"${col}\"`;\n\t}\n\tconst clampExpr = numericClampExpr(targetTableName, col, srcRef);\n\tif (clampExpr !== null) {\n\t\tif (isNotNullWithoutDefault) return `COALESCE(${clampExpr}, ${typeDefaultLiteral(tgtInfo.type)}) AS \"${col}\"`;\n\t\treturn `${clampExpr} AS \"${col}\"`;\n\t}\n\tconst normExpr = enumNormExpr(targetTableName, col, srcRef);\n\tif (normExpr !== null) {\n\t\tif (isNotNullWithoutDefault) return `COALESCE(${normExpr}, ${typeDefaultLiteral(tgtInfo.type)}) AS \"${col}\"`;\n\t\treturn `${normExpr} AS \"${col}\"`;\n\t}\n\tif (isNotNullWithoutDefault) return `COALESCE(${srcRef}, ${typeDefaultLiteral(tgtInfo.type)}) AS \"${col}\"`;\n\treturn srcRef;\n}\n/**\n* Copy all rows from a legacy source table (in the already-attached alias) into\n* the corresponding consolidated target table.\n*\n* ## What changed in T11532 vs the T11531 version:\n*\n* 1. **Name mapping (ROOT CAUSE 1 — T11532)**: `legacyTableName` is resolved to\n* its consolidated name via `resolveConsolidatedTableName()`. Without this,\n* `tasks` (legacy) was looked up as `main.\"tasks\"` which doesn't exist in\n* the consolidated schema (the real target is `tasks_tasks`).\n*\n* 2. **Column-drift tolerance (ROOT CAUSE 2 — T11532 + T11533)**: the INSERT\n* uses the INTERSECTION of source and target column lists rather than source\n* columns verbatim. When the consolidated schema added new columns, old code\n* failed. Target-only NOT NULL columns without defaults now get COALESCE()\n* wrapping in the SELECT so NULL source values don't cause silent row drops.\n*\n* 3. **Explicit skip (ROOT CAUSE 5)**: tables intentionally excluded from the\n* consolidated schema (virtual tables, orphan telemetry, etc.) now return\n* a logged skip result rather than being silently treated as \"target not\n* found\".\n*\n* 4. **Epoch→ISO coercion (ROOT CAUSE 1 — T11546)**: columns with an ISO GLOB\n* CHECK in the target that are INTEGER-typed in the source are converted via\n* `strftime('%Y-%m-%dT%H:%M:%fZ', col[/1000.0], 'unixepoch')`. Without this,\n* `INSERT OR IGNORE` silently drops ALL rows for those tables (CHECK fails\n* for every row because an integer like `1717200000` doesn't match the GLOB).\n*\n* 5. **No-swallow assertion (ROOT CAUSE 1b — T11546)**: after the bulk INSERT,\n* `changes` is compared against the source row count. A shortfall is a hard\n* per-table error. PK/UNIQUE conflicts on idempotent resume are expected and\n* tolerated (checked via count of existing rows); CHECK constraint drops are\n* not tolerated.\n*\n* **Pre-condition**: the caller has already executed\n* `ATTACH DATABASE '<path>' AS \"<attachAlias>\"` on `targetNativeDb`, and\n* `PRAGMA foreign_keys = OFF` has been set so FK ordering doesn't matter.\n*\n* ## Cross-scope routing (ADR-090 · T11539)\n*\n* `targetSchema` defaults to `'main'` (the connection's own consolidated DB). For\n* the four nexus code-graph tables, which are extracted from the GLOBAL `nexus.db`\n* source but must land in the PROJECT consolidated `cleo.db`, the caller attaches\n* the project DB under an alias on the SAME connection and passes that alias as\n* `targetSchema`. All target-side introspection (`sqlite_master`, `PRAGMA\n* table_info`) and the `INSERT OR IGNORE` are then schema-qualified to that\n* attached DB instead of `main`.\n*\n* @param targetNativeDb - Writable target handle (mid-transaction, FK OFF).\n* @param srcNativeDb - Read-only source snapshot (for metadata queries).\n* @param attachAlias - Alias under which the source is attached.\n* @param legacyTableName - Physical table name in the legacy source DB.\n* @param sourceName - `LegacyDbDescriptor.name` (for name resolution).\n* @param targetSchema - Schema the consolidated target table lives in\n* (`'main'` by default, or an ATTACH alias for cross-scope routing).\n*/\nfunction copyTableFromAttached(targetNativeDb, srcNativeDb, attachAlias, legacyTableName, sourceName, targetSchema = \"main\") {\n\tconst resolution = resolveConsolidatedTableName(sourceName, legacyTableName);\n\tif (resolution.kind === \"skip\") {\n\t\tlog$2.warn({\n\t\t\tlegacyTableName,\n\t\t\tsourceName,\n\t\t\treason: resolution.reason\n\t\t}, `Exodus: explicitly skipping table — ${resolution.reason}`);\n\t\treturn {\n\t\t\trowsCopied: 0,\n\t\t\tskipped: true,\n\t\t\treason: resolution.reason\n\t\t};\n\t}\n\tconst targetTableName = resolution.targetName;\n\tconst srcPragma = srcNativeDb.prepare(`PRAGMA table_info(\"${legacyTableName}\")`).all();\n\tconst srcColumns = new Set(srcPragma.map((r) => r.name));\n\tif (srcColumns.size === 0) return {\n\t\trowsCopied: 0,\n\t\tskipped: false\n\t};\n\tconst sourceCount = srcNativeDb.prepare(`SELECT COUNT(*) AS c FROM \"${legacyTableName}\"`).get()?.c ?? 0;\n\tif (sourceCount === 0) return {\n\t\trowsCopied: 0,\n\t\tskipped: false\n\t};\n\tconst escapedTarget = targetTableName.replace(/'/g, \"''\");\n\tif (!targetNativeDb.prepare(`SELECT name FROM \"${targetSchema}\".sqlite_master WHERE type='table' AND name='${escapedTarget}'`).get()) {\n\t\tconst reason = `consolidated target '${targetTableName}' not found (mapped from legacy '${legacyTableName}')`;\n\t\tlog$2.warn({\n\t\t\tlegacyTableName,\n\t\t\ttargetTableName,\n\t\t\tsourceName,\n\t\t\tattachAlias,\n\t\t\ttargetSchema\n\t\t}, `Exodus: ${reason}`);\n\t\treturn {\n\t\t\trowsCopied: 0,\n\t\t\tskipped: true,\n\t\t\treason\n\t\t};\n\t}\n\tconst tgtPragma = targetNativeDb.prepare(`PRAGMA \"${targetSchema}\".table_info(\"${targetTableName}\")`).all();\n\tconst tgtColMap = new Map(tgtPragma.map((r) => [r.name, r]));\n\tconst sharedColumns = srcPragma.map((r) => r.name).filter((col) => tgtColMap.has(col));\n\tif (sharedColumns.length === 0) {\n\t\tconst reason = `no overlapping columns between source '${legacyTableName}' and target '${targetTableName}'`;\n\t\tlog$2.warn({\n\t\t\tlegacyTableName,\n\t\t\ttargetTableName,\n\t\t\tsourceName\n\t\t}, `Exodus: ${reason}`);\n\t\treturn {\n\t\t\trowsCopied: 0,\n\t\t\tskipped: true,\n\t\t\treason\n\t\t};\n\t}\n\tconst srcOnlyColumns = srcPragma.map((r) => r.name).filter((c) => !tgtColMap.has(c));\n\tconst tgtOnlyColumns = tgtPragma.map((r) => r.name).filter((c) => !srcColumns.has(c));\n\tif (srcOnlyColumns.length > 0 || tgtOnlyColumns.length > 0) log$2.info({\n\t\tlegacyTableName,\n\t\ttargetTableName,\n\t\tsourceName,\n\t\tsrcOnlyColumns,\n\t\ttgtOnlyColumns\n\t}, \"Exodus: column drift detected — copying intersection, dropping src-only cols, using defaults for tgt-only cols\");\n\tconst isoGlobCols = detectIsoGlobColumns(targetNativeDb, targetTableName, targetSchema);\n\tconst epochUnitHint = epochUnitForSource(sourceName);\n\tconst srcTypeMap = new Map(srcPragma.map((r) => [r.name, r.type]));\n\tif (isoGlobCols.size > 0) {\n\t\tconst coercedCols = sharedColumns.filter((col) => {\n\t\t\tconst upper = (srcTypeMap.get(col) ?? \"\").toUpperCase();\n\t\t\treturn isoGlobCols.has(col) && (upper.includes(\"INT\") || upper === \"\" || upper === \"NUMERIC\");\n\t\t});\n\t\tif (coercedCols.length > 0) log$2.info({\n\t\t\tlegacyTableName,\n\t\t\ttargetTableName,\n\t\t\tsourceName,\n\t\t\tcoercedCols,\n\t\t\tepochUnitHint\n\t\t}, `Exodus: applying epoch→ISO coercion (magnitude heuristic) for ${coercedCols.length} column(s) (T11546+T11549)`);\n\t}\n\tconst normalizedCols = sharedColumns.filter((col) => ENUM_NORMALIZATIONS.has(`${targetTableName}.${col}`));\n\tif (normalizedCols.length > 0) log$2.info({\n\t\tlegacyTableName,\n\t\ttargetTableName,\n\t\tsourceName,\n\t\tnormalizedCols\n\t}, `Exodus: applying enum-value normalization for ${normalizedCols.length} column(s) (T11547)`);\n\tconst clampedCols = sharedColumns.filter((col) => NUMERIC_CLAMPS.has(`${targetTableName}.${col}`));\n\tif (clampedCols.length > 0) log$2.info({\n\t\tlegacyTableName,\n\t\ttargetTableName,\n\t\tsourceName,\n\t\tclampedCols\n\t}, `Exodus: applying non-finite numeric clamp for ${clampedCols.length} column(s) (T11782)`);\n\tconst selectExprs = sharedColumns.map((col) => {\n\t\treturn buildSelectExpr(attachAlias, legacyTableName, targetTableName, col, srcTypeMap.get(col) ?? \"\", tgtColMap.get(col), isoGlobCols);\n\t});\n\tconst tgtOnlyNotNullCols = tgtOnlyColumns.filter((col) => {\n\t\tconst info = tgtColMap.get(col);\n\t\treturn info !== void 0 && info.notnull === 1 && info.dflt_value === null;\n\t});\n\tconst allInsertCols = [...sharedColumns, ...tgtOnlyNotNullCols];\n\tconst allSelectExprs = [...selectExprs, ...tgtOnlyNotNullCols.map((col) => {\n\t\treturn `${typeDefaultLiteral(tgtColMap.get(col).type)} AS \"${col}\"`;\n\t})];\n\tconst colList = allInsertCols.map((c) => `\"${c}\"`).join(\", \");\n\tconst selectList = allSelectExprs.join(\", \");\n\tconst existingBeforeRow = targetNativeDb.prepare(`SELECT COUNT(*) AS c FROM \"${targetSchema}\".\"${targetTableName}\"`).get();\n\tconst existingBefore = Number(existingBeforeRow?.c ?? 0);\n\tconst rowsCopied = targetNativeDb.prepare(`INSERT OR IGNORE INTO \"${targetSchema}\".\"${targetTableName}\" (${colList}) SELECT ${selectList} FROM \"${attachAlias}\".\"${legacyTableName}\"`).run().changes ?? 0;\n\tif (rowsCopied < sourceCount) {\n\t\tconst presentAccountedFor = existingBefore + rowsCopied;\n\t\tif (presentAccountedFor >= sourceCount) {\n\t\t\tlog$2.info({\n\t\t\t\tlegacyTableName,\n\t\t\t\ttargetTableName,\n\t\t\t\tsourceName,\n\t\t\t\tsourceCount,\n\t\t\t\trowsCopied,\n\t\t\t\texistingBefore\n\t\t\t}, `Exodus: '${legacyTableName}'→'${targetTableName}' — ${sourceCount - rowsCopied} of ${sourceCount} row(s) already present in target (idempotent PK dedup), ${rowsCopied} newly copied; no loss`);\n\t\t\treturn {\n\t\t\t\trowsCopied,\n\t\t\t\tskipped: false\n\t\t\t};\n\t\t}\n\t\tconst missing = sourceCount - presentAccountedFor;\n\t\tconst reason = `INSERT OR IGNORE lost ${missing} of ${sourceCount} rows from '${legacyTableName}'→'${targetTableName}' (rowsCopied=${rowsCopied}, existingBefore=${existingBefore}) — a CHECK/NOT NULL/type/enum constraint rejected them (NOT PK dedup); inspect epoch coercion + enum normalization. verify will confirm.`;\n\t\tlog$2.error({\n\t\t\tlegacyTableName,\n\t\t\ttargetTableName,\n\t\t\tsourceName,\n\t\t\tsourceCount,\n\t\t\trowsCopied,\n\t\t\texistingBefore,\n\t\t\tmissing\n\t\t}, `Exodus: ${reason}`);\n\t\treturn {\n\t\t\trowsCopied,\n\t\t\tskipped: false,\n\t\t\treason\n\t\t};\n\t}\n\treturn {\n\t\trowsCopied,\n\t\tskipped: false\n\t};\n}\n/**\n* Validate that the journal's schema version matches the current target version.\n*\n* When `forceCrossVersion === true`, mismatches are logged but not fatal.\n*/\nfunction checkSchemaVersion(journal, forceCrossVersion) {\n\tif (journal.targetSchemaVersion !== \"drizzle-v1.0.0-rc.3/dual-scope/2026-05\") {\n\t\tconst msg = `Schema version mismatch: journal=${journal.targetSchemaVersion}, expected=${EXODUS_TARGET_SCHEMA_VERSION}`;\n\t\tif (forceCrossVersion) {\n\t\t\tlog$2.warn(msg + \" (--force-cross-version: continuing anyway)\");\n\t\t\treturn true;\n\t\t}\n\t\tlog$2.error(msg + \" — pass --force-cross-version to override\");\n\t\treturn false;\n\t}\n\treturn true;\n}\n/**\n* Run the exodus migration.\n*\n* @param plan - Pre-flight plan from `buildExodusPlan()`.\n* @param forceCrossVersion - Skip the schema-version guard (AC9).\n* @param onProgress - Optional progress callback called after each table.\n*\n* @returns {@link ExodusMigrateResult}\n*\n* @task T11248 (AC4, AC5, AC6, AC7, AC9)\n* @task T11531 (P0 attach-leak fix)\n*/\nasync function runExodusMigrate(plan, forceCrossVersion = false, onProgress) {\n\tconst { sources, stagingDir, diskPreflight, projectDbPath, globalDbPath } = plan;\n\tif (!diskPreflight) {\n\t\tconst shortfall = Math.max(0, plan.requiredBytes - plan.availableBytes);\n\t\treturn {\n\t\t\tok: false,\n\t\t\ttables: [],\n\t\t\tstagingDir,\n\t\t\tbackupPaths: [],\n\t\t\terror: `Insufficient disk space for exodus: need ≥${plan.requiredBytes} bytes (≈${STAGING_HEADROOM_FACTOR}× largest source ${plan.largestSourceBytes} + consolidated estimate ${plan.totalSourceBytes}), but only ${plan.availableBytes} bytes are free on the target filesystem — ${shortfall} bytes short. Free up at least ${shortfall} bytes (e.g. \\`cleo backup prune\\`, clear caches), or move the .cleo/ directory to a larger volume, then retry.`\n\t\t};\n\t}\n\tmkdirSync(stagingDir, { recursive: true });\n\tlet sqliteVersion = \"unknown\";\n\tfor (const src of sources) if (existsSync(src.path)) {\n\t\tconst snap = openCleoDbSnapshot(src.path, { readOnly: true });\n\t\tsqliteVersion = getSqliteVersion(snap.db);\n\t\tsnap.close();\n\t\tbreak;\n\t}\n\tlet journal = readJournal(stagingDir);\n\tif (journal === null) journal = initJournal(sqliteVersion);\n\telse {\n\t\tif (!checkSchemaVersion(journal, forceCrossVersion)) return {\n\t\t\tok: false,\n\t\t\ttables: [],\n\t\t\tstagingDir,\n\t\t\tbackupPaths: [],\n\t\t\terror: \"Schema version mismatch. Pass --force-cross-version to override.\"\n\t\t};\n\t\tonProgress?.(\"Resuming from existing staging journal…\");\n\t}\n\tconst backupPaths = [];\n\tconst allTableResults = [];\n\tconst lockedPaths = [];\n\tlet projectHandle = null;\n\tlet globalHandle = null;\n\ttry {\n\t\tfor (const src of sources) {\n\t\t\tif (!existsSync(src.path)) continue;\n\t\t\tconst backupDest = join(stagingDir, `${src.name.replace(/[^a-z0-9-]/g, \"_\")}-backup.db`);\n\t\t\tconst srcBytes = safeStatBytes(src.path);\n\t\t\tif (srcBytes > plan.stagingCopyThresholdBytes) onProgress?.(`Skipping full staging copy of ${src.name} (${srcBytes} bytes > ${plan.stagingCopyThresholdBytes} threshold) — source is archived, not deleted, on success.`);\n\t\t\telse if (!existsSync(backupDest)) {\n\t\t\t\tonProgress?.(`Backing up ${src.name} → staging dir…`);\n\t\t\t\tcopyFileSync(src.path, backupDest);\n\t\t\t\tbackupPaths.push(backupDest);\n\t\t\t}\n\t\t\tacquireAdvisoryLock(src.path);\n\t\t\tlockedPaths.push(src.path);\n\t\t}\n\t\tonProgress?.(\"Opening DEDICATED project-scope cleo.db connection (running migrations)…\");\n\t\tprojectHandle = await openDualScopeDbAtPath(\"project\", projectDbPath, void 0, { dedicated: true });\n\t\tonProgress?.(\"Opening DEDICATED global-scope cleo.db connection (running migrations)…\");\n\t\tglobalHandle = await openDualScopeDbAtPath(\"global\", globalDbPath, void 0, { dedicated: true });\n\t\tfunction extractNativeDb(handle) {\n\t\t\tconst drizzleHandle = handle.db;\n\t\t\tconst client = drizzleHandle[\"$client\"];\n\t\t\tif (client && typeof client[\"prepare\"] === \"function\") return client;\n\t\t\tif (typeof drizzleHandle[\"prepare\"] === \"function\") return drizzleHandle;\n\t\t\tthrow new Error(\"Could not extract native DatabaseSync from dual-scope DB handle\");\n\t\t}\n\t\tconst projectNative = extractNativeDb(projectHandle);\n\t\tconst globalNative = extractNativeDb(globalHandle);\n\t\tconst projectSources = sources.filter((s) => s.targetScope === \"project\" && existsSync(s.path));\n\t\tconst globalSources = sources.filter((s) => s.targetScope === \"global\" && existsSync(s.path));\n\t\tawait migrateScope(\"project\", projectSources, projectNative, journal, stagingDir, allTableResults, onProgress);\n\t\tawait migrateScope(\"global\", globalSources, globalNative, journal, stagingDir, allTableResults, onProgress, projectDbPath);\n\t\tjournal.updatedAt = (/* @__PURE__ */ new Date()).toISOString();\n\t\twriteJournal(stagingDir, journal);\n\t\treturn {\n\t\t\tok: true,\n\t\t\ttables: allTableResults,\n\t\t\tstagingDir,\n\t\t\tbackupPaths\n\t\t};\n\t} catch (err) {\n\t\tconst error = err instanceof Error ? err.message : String(err);\n\t\tlog$2.error({ err }, \"Exodus migration failed\");\n\t\treturn {\n\t\t\tok: false,\n\t\t\ttables: allTableResults,\n\t\t\tstagingDir,\n\t\t\tbackupPaths,\n\t\t\terror\n\t\t};\n\t} finally {\n\t\ttry {\n\t\t\tprojectHandle?.close();\n\t\t} catch {}\n\t\ttry {\n\t\t\tglobalHandle?.close();\n\t\t} catch {}\n\t\tfor (const p of lockedPaths) releaseAdvisoryLock(p);\n\t}\n}\n/**\n* Migrate all tables from the given sources into the target native DB.\n*\n* ## ATTACH-once-per-source protocol (T11531)\n*\n* SQLite forbids `DETACH` inside an active multi-statement transaction.\n* To avoid the \"database alias is already in use\" error that caused ~80 %\n* data loss, we use the following sequence **per source DB**:\n*\n* 1. ATTACH the source path under a unique alias (outside any transaction).\n* 2. Open a read-only snapshot of the source for metadata queries.\n* 3. BEGIN the write transaction on the target.\n* 4. INSERT OR IGNORE … SELECT for each table using the attached alias.\n* 5. COMMIT (or ROLLBACK on error).\n* 6. DETACH the source alias in `finally` (outside the committed transaction).\n* 7. Close the read-only snapshot.\n*\n* Each source gets its own unique alias (`_src_<name>_<index>`) so multiple\n* sources can be processed sequentially without alias conflicts.\n*\n* ## FK-defer protocol (T11533 ROOT CAUSE 1)\n*\n* Before the first INSERT in any scope, foreign-key enforcement is switched OFF\n* on the target connection (`PRAGMA foreign_keys = OFF`) so copy order does not\n* matter (avoids \"FOREIGN KEY constraint failed\" for child-before-parent copies).\n* After all sources in the scope are committed, `PRAGMA foreign_key_check` is\n* executed to surface genuinely orphaned rows, and then FK enforcement is\n* restored (`PRAGMA foreign_keys = ON`).\n*\n* Sequence across all sources in a scope:\n* PRAGMA foreign_keys = OFF\n* for each source:\n* ATTACH … AS alias (outside tx)\n* BEGIN\n* INSERT … SELECT for each table\n* COMMIT\n* DETACH alias (outside tx)\n* PRAGMA foreign_key_check → log orphans as warnings\n* PRAGMA foreign_keys = ON\n*/\nasync function migrateScope(scope, sources, targetNativeDb, journal, stagingDir, allTableResults, onProgress, crossScopeTargetPath) {\n\tif (sources.length === 0) return;\n\tonProgress?.(`Migrating ${scope}-scope sources…`);\n\ttargetNativeDb.exec(\"PRAGMA foreign_keys = OFF\");\n\tlog$2.info({ scope }, \"Exodus: foreign_keys=OFF for bulk copy (T11533 FK-defer)\");\n\ttry {\n\t\tfor (let i = 0; i < sources.length; i++) {\n\t\t\tconst src = sources[i];\n\t\t\tconst attachAlias = makeAttachAlias(src.name, i);\n\t\t\tconst escapedPath = src.path.replace(/'/g, \"''\");\n\t\t\ttargetNativeDb.exec(`ATTACH DATABASE '${escapedPath}' AS \"${attachAlias}\"`);\n\t\t\tonProgress?.(` [${src.name}] Attached as \"${attachAlias}\"`);\n\t\t\tlet crossAlias = null;\n\t\t\tif (crossScopeTargetPath) {\n\t\t\t\tcrossAlias = `_xscope_${attachAlias}`;\n\t\t\t\tconst escapedCrossPath = crossScopeTargetPath.replace(/'/g, \"''\");\n\t\t\t\ttargetNativeDb.exec(`ATTACH DATABASE '${escapedCrossPath}' AS \"${crossAlias}\"`);\n\t\t\t\tonProgress?.(` [${src.name}] Cross-scope target attached as \"${crossAlias}\"`);\n\t\t\t}\n\t\t\tconst snap = openCleoDbSnapshot(src.path, { readOnly: true });\n\t\t\ttry {\n\t\t\t\tconst tables = listTables$1(snap.db);\n\t\t\t\ttargetNativeDb.exec(\"BEGIN\");\n\t\t\t\tlet txOpen = true;\n\t\t\t\ttry {\n\t\t\t\t\tfor (const tableName of tables) {\n\t\t\t\t\t\tconst existing = journal.tables.find((e) => e.sourceDb === src.name && e.tableName === tableName);\n\t\t\t\t\t\tif (existing?.status === \"done\") {\n\t\t\t\t\t\t\tonProgress?.(` ↳ ${src.name}.${tableName} — already done (resuming)`);\n\t\t\t\t\t\t\tallTableResults.push({\n\t\t\t\t\t\t\t\tsourceDb: src.name,\n\t\t\t\t\t\t\t\ttableName,\n\t\t\t\t\t\t\t\trowsCopied: existing.rowsCopied,\n\t\t\t\t\t\t\t\tskipped: false\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonProgress?.(` ↳ Copying ${src.name}.${tableName}…`);\n\t\t\t\t\t\tlet rowsCopied = 0;\n\t\t\t\t\t\tlet status = \"done\";\n\t\t\t\t\t\tlet errorMsg;\n\t\t\t\t\t\tlet skipped = false;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst effectiveScope = resolveTableTargetScope(src.name, tableName, scope);\n\t\t\t\t\t\t\tconst targetSchema = effectiveScope !== scope && crossAlias ? crossAlias : \"main\";\n\t\t\t\t\t\t\tif (effectiveScope !== scope && !crossAlias) throw new Error(`Table '${tableName}' from '${src.name}' routes to ${effectiveScope} scope but no cross-scope target was attached for the ${scope} pass (ADR-090 T11539)`);\n\t\t\t\t\t\t\tconst copyResult = copyTableFromAttached(targetNativeDb, snap.db, attachAlias, tableName, src.name, targetSchema);\n\t\t\t\t\t\t\trowsCopied = copyResult.rowsCopied;\n\t\t\t\t\t\t\tif (copyResult.skipped) {\n\t\t\t\t\t\t\t\tstatus = \"skipped\";\n\t\t\t\t\t\t\t\terrorMsg = copyResult.reason;\n\t\t\t\t\t\t\t\tskipped = true;\n\t\t\t\t\t\t\t} else if (copyResult.reason) {\n\t\t\t\t\t\t\t\tstatus = \"partial\";\n\t\t\t\t\t\t\t\terrorMsg = copyResult.reason;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\tconst msg = err instanceof Error ? err.message : String(err);\n\t\t\t\t\t\t\tlog$2.warn({\n\t\t\t\t\t\t\t\ttableName,\n\t\t\t\t\t\t\t\tsourceDb: src.name,\n\t\t\t\t\t\t\t\terr\n\t\t\t\t\t\t\t}, \"Table copy failed — skipping\");\n\t\t\t\t\t\t\tstatus = \"skipped\";\n\t\t\t\t\t\t\terrorMsg = msg;\n\t\t\t\t\t\t\tskipped = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst entry = {\n\t\t\t\t\t\t\tsourceDb: src.name,\n\t\t\t\t\t\t\ttableName,\n\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\trowsCopied,\n\t\t\t\t\t\t\tupdatedAt: (/* @__PURE__ */ new Date()).toISOString(),\n\t\t\t\t\t\t\t...errorMsg ? { error: errorMsg } : {}\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst idx = journal.tables.findIndex((e) => e.sourceDb === src.name && e.tableName === tableName);\n\t\t\t\t\t\tif (idx >= 0) journal.tables[idx] = entry;\n\t\t\t\t\t\telse journal.tables.push(entry);\n\t\t\t\t\t\tjournal.updatedAt = (/* @__PURE__ */ new Date()).toISOString();\n\t\t\t\t\t\twriteJournal(stagingDir, journal);\n\t\t\t\t\t\tallTableResults.push({\n\t\t\t\t\t\t\tsourceDb: src.name,\n\t\t\t\t\t\t\ttableName,\n\t\t\t\t\t\t\trowsCopied,\n\t\t\t\t\t\t\tskipped,\n\t\t\t\t\t\t\treason: errorMsg\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\ttargetNativeDb.exec(\"COMMIT\");\n\t\t\t\t\ttxOpen = false;\n\t\t\t\t} catch (err) {\n\t\t\t\t\tif (txOpen) try {\n\t\t\t\t\t\ttargetNativeDb.exec(\"ROLLBACK\");\n\t\t\t\t\t} catch {}\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tsnap.close();\n\t\t\t\ttry {\n\t\t\t\t\ttargetNativeDb.exec(`DETACH DATABASE \"${attachAlias}\"`);\n\t\t\t\t\tonProgress?.(` [${src.name}] Detached \"${attachAlias}\"`);\n\t\t\t\t} catch (detachErr) {\n\t\t\t\t\tlog$2.warn({\n\t\t\t\t\t\tattachAlias,\n\t\t\t\t\t\tsourceDb: src.name,\n\t\t\t\t\t\terr: detachErr\n\t\t\t\t\t}, \"DETACH failed — alias will be released on DB close\");\n\t\t\t\t}\n\t\t\t\tif (crossAlias) try {\n\t\t\t\t\ttargetNativeDb.exec(`DETACH DATABASE \"${crossAlias}\"`);\n\t\t\t\t\tonProgress?.(` [${src.name}] Cross-scope target detached \"${crossAlias}\"`);\n\t\t\t\t} catch (detachErr) {\n\t\t\t\t\tlog$2.warn({\n\t\t\t\t\t\tcrossAlias,\n\t\t\t\t\t\tsourceDb: src.name,\n\t\t\t\t\t\terr: detachErr\n\t\t\t\t\t}, \"Cross-scope DETACH failed — alias will be released on DB close\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} finally {\n\t\ttry {\n\t\t\tconst orphans = targetNativeDb.prepare(\"PRAGMA foreign_key_check\").all();\n\t\t\tif (orphans.length > 0) log$2.warn({\n\t\t\t\tscope,\n\t\t\t\torphanCount: orphans.length,\n\t\t\t\tsample: orphans.slice(0, 5)\n\t\t\t}, `Exodus: PRAGMA foreign_key_check found ${orphans.length} orphan row(s) after bulk copy — these are genuine data orphans (not ordering artifacts)`);\n\t\t\telse log$2.info({ scope }, \"Exodus: PRAGMA foreign_key_check PASSED — no orphan rows\");\n\t\t} catch (checkErr) {\n\t\t\tlog$2.warn({\n\t\t\t\tscope,\n\t\t\t\terr: checkErr\n\t\t\t}, \"Exodus: PRAGMA foreign_key_check failed (non-fatal) — target schema may not have FK constraints enabled\");\n\t\t}\n\t\ttry {\n\t\t\ttargetNativeDb.exec(\"PRAGMA foreign_keys = ON\");\n\t\t\tlog$2.info({ scope }, \"Exodus: foreign_keys=ON restored after bulk copy\");\n\t\t} catch (fkErr) {\n\t\t\tlog$2.warn({\n\t\t\t\tscope,\n\t\t\t\terr: fkErr\n\t\t\t}, \"Exodus: could not restore foreign_keys=ON (non-fatal)\");\n\t\t}\n\t}\n}\ngetLogger(\"exodus-seal\");\n//#endregion\n//#region ../core/dist/store/exodus/verify-migration.js\n/**\n* Reusable CORE migration-parity primitive — `verifyMigration()`.\n*\n* This is the durable guard (T11551 · DHQ-045) that prevents the exodus\n* dual-DB consolidation from silently losing rows. It is intentionally generic:\n* given a set of legacy source DBs and the consolidated target DB paths, it\n* returns a typed {@link VerifyMigrationResult} covering FOUR failure classes:\n*\n* 1. **Per-table row-count parity** — every data-bearing source table's\n* consolidated counterpart MUST NOT have FEWER rows than the source (a\n* DEFICIT = data loss → failure). A SURPLUS (target > source — e.g.\n* `nexus_audit_log` gaining the migration's own audit writes during the\n* migrating open) is NOT loss and is tolerated with a WARN (T11577). The\n* per-table `countMatch` field stays a strict `source === target`\n* diagnostic; only a deficit contributes a failure.\n* 2. **`PRAGMA foreign_key_check`** — genuine referential orphans on the\n* consolidated target surface as failures (not copy-order artifacts).\n* 3. **Content checksum** — an ordered canonical-JSON SHA-256 digest over the\n* sorted intersection of source/target columns catches content drift even\n* when counts match.\n* 4. **Enum/type-drift report** — source values outside the target column's\n* CHECK enum. This is the EXACT class that `INSERT OR IGNORE` used to drop\n* silently (the root cause of the ~805K-row exodus loss).\n*\n* ## Relationship to `runExodusVerify`\n*\n* `runExodusVerify` ({@link ./verify.ts}) is the exodus-specific entry point.\n* It now DELEGATES the row-count + checksum parity to this primitive (DRY —\n* T11551 AC2) and additionally surfaces the FK + enum-drift checks this module\n* adds. The digest, name-mapping, and rowid-safe ordering logic that the exodus\n* campaign hardened (T11531/32/33) live here as the single implementation.\n*\n* ## False-pass guard (T11531, preserved)\n*\n* When `ok === false`, `error` is ALWAYS populated with a human-readable\n* failure summary so a caller that only checks `result.error` cannot mistake a\n* silent loss for success.\n*\n* @task T11551 (DHQ-045 — exodus zero-loss durable guard)\n* @epic T10878\n* @saga T11242\n*/\nvar log = getLogger(\"verify-migration\");\nvar _require = createRequire(import.meta.url);\n/**\n* Determine a deterministic ORDER BY clause for a table.\n*\n* Uses the table's declared primary-key columns (from `PRAGMA table_info`\n* where `pk > 0`) so ordering is stable for both WITH ROWID and WITHOUT ROWID\n* tables. Falls back to `rowid` only for ordinary tables that declare no\n* explicit primary key. Avoids the `no such column: rowid` crash on virtual /\n* WITHOUT ROWID tables (T11532 ROOT CAUSE 3).\n*\n* @param db - Database handle to introspect.\n* @param tableName - Physical table name.\n* @returns A SQL ORDER BY column list.\n*/\nfunction orderByClause(db, tableName) {\n\ttry {\n\t\tconst pkCols = db.prepare(`PRAGMA table_info(\"${tableName}\")`).all().filter((r) => r.pk > 0).sort((a, b) => a.pk - b.pk).map((r) => `\"${r.name}\"`);\n\t\tif (pkCols.length > 0) return pkCols.join(\", \");\n\t} catch {}\n\treturn \"rowid\";\n}\n/**\n* Compute an ordered canonical-JSON SHA-256 digest (32 hex chars) for all rows\n* in a table, restricted to the given column list.\n*\n* When the caller passes the SORTED INTERSECTION of source and target columns,\n* both sides produce identically-structured JSON rows, eliminating spurious\n* hash mismatches from schema-definition column reordering (T11533 ROOT CAUSE\n* 4). Returns `{ count: 0, hash: '' }` for virtual tables that cannot be\n* selected from, rather than throwing.\n*\n* ## Source-side coercion (T11809 · AC2)\n*\n* When `transform` is provided (SOURCE side only), each column is SELECTed\n* through {@link buildDigestExpr} — the SAME epoch→ISO / enum-normalize /\n* non-finite-clamp transforms the migration applied — and aliased back to its\n* original name so the canonical-key serialisation matches the (already\n* canonical) target row. The TARGET side passes `transform === undefined` and\n* digests its stored values raw.\n*\n* @param db - Database handle to query.\n* @param tableName - Physical table name.\n* @param columns - Explicit column list in canonical order, or `null` for\n* `SELECT *` (used when there is no counterpart table to intersect with).\n* @param transform - Source-side transform spec, or `undefined` for the raw\n* (target-side) digest.\n* @returns `{ count, hash }` for the table.\n*/\nfunction computeTableDigest(db, tableName, columns, transform) {\n\tlet count = 0;\n\ttry {\n\t\tconst row = db.prepare(`SELECT COUNT(*) AS c FROM \"${tableName}\"`).get();\n\t\tcount = Number(row?.c ?? 0);\n\t} catch (err) {\n\t\tconst msg = err instanceof Error ? err.message : String(err);\n\t\tlog.warn({\n\t\t\ttableName,\n\t\t\terr: msg\n\t\t}, \"computeTableDigest: COUNT(*) failed (possibly a virtual/FTS table) — treating as 0 rows\");\n\t\treturn {\n\t\t\tcount: 0,\n\t\t\thash: \"\"\n\t\t};\n\t}\n\tconst { createHash } = _require(\"node:crypto\");\n\tconst hasher = createHash(\"sha256\");\n\tconst orderBy = orderByClause(db, tableName);\n\tlet selectClause;\n\tif (columns !== null && columns.length > 0) selectClause = columns.map((c) => {\n\t\tif (transform === void 0) return `\"${c}\"`;\n\t\tconst srcType = transform.srcTypeByCol.get(c) ?? \"\";\n\t\tconst tgtCol = transform.tgtColByCol.get(c);\n\t\treturn `${buildDigestExpr(transform.targetTableName, c, srcType, transform.isoGlobCols, tgtCol)} AS \"${c}\"`;\n\t}).join(\", \");\n\telse selectClause = \"*\";\n\ttry {\n\t\tconst stmt = db.prepare(`SELECT ${selectClause} FROM \"${tableName}\" ORDER BY ${orderBy}`);\n\t\tfor (const row of stmt.iterate()) {\n\t\t\tconst rowObj = row;\n\t\t\thasher.update(JSON.stringify(rowObj, Object.keys(rowObj).sort()));\n\t\t}\n\t} catch (err) {\n\t\tconst msg = err instanceof Error ? err.message : String(err);\n\t\tlog.warn({\n\t\t\ttableName,\n\t\t\terr: msg\n\t\t}, \"computeTableDigest: streamed SELECT failed (possibly a virtual/FTS table) — digest skipped (COUNT(*) parity still enforced)\");\n\t\treturn {\n\t\t\tcount,\n\t\t\thash: \"\"\n\t\t};\n\t}\n\treturn {\n\t\tcount,\n\t\thash: hasher.digest(\"hex\").slice(0, 32)\n\t};\n}\n/**\n* Return the sorted intersection of column names present in both the source and\n* target tables, for use as the canonical column ordering in\n* {@link computeTableDigest}. Returns `null` when either side has no columns\n* (virtual/FTS-table fallback).\n*\n* @param srcDb - Source database handle.\n* @param srcTable - Physical table name in the source DB.\n* @param tgtDb - Target database handle.\n* @param tgtTable - Physical table name in the target DB.\n*/\nfunction sharedColumnsSorted(srcDb, srcTable, tgtDb, tgtTable) {\n\ttry {\n\t\tconst srcCols = srcDb.prepare(`PRAGMA table_info(\"${srcTable}\")`).all().map((r) => r.name);\n\t\tconst tgtColSet = new Set(tgtDb.prepare(`PRAGMA table_info(\"${tgtTable}\")`).all().map((r) => r.name));\n\t\tif (srcCols.length === 0 || tgtColSet.size === 0) return null;\n\t\treturn srcCols.filter((c) => tgtColSet.has(c)).sort();\n\t} catch {\n\t\treturn null;\n\t}\n}\n/**\n* Build the source-side {@link DigestTransformSpec} for a source→target table\n* pair: the source column type affinities, the target's ISO-GLOB columns, and\n* the target column metadata (NOT-NULL flag + default + affinity), keyed by the\n* consolidated target name (the transform lookup key). The target metadata\n* drives the NULL→NOT-NULL-default `COALESCE` mirroring (T11836).\n*\n* Returns `undefined` (raw digest, no transform) when the source `PRAGMA\n* table_info` cannot be read — best-effort, biased to surfacing a real\n* difference rather than masking one.\n*\n* @param srcDb - Source database handle.\n* @param srcTable - Physical legacy source table name.\n* @param tgtDb - Target database handle (consolidated cleo.db).\n* @param targetTableName - Physical consolidated target table name.\n* @returns A transform spec, or `undefined` when source metadata is unavailable.\n*/\nfunction buildSourceDigestTransform(srcDb, srcTable, tgtDb, targetTableName) {\n\ttry {\n\t\treturn {\n\t\t\ttargetTableName,\n\t\t\tsrcTypeByCol: new Map(srcDb.prepare(`PRAGMA table_info(\"${srcTable}\")`).all().map((r) => [r.name, r.type])),\n\t\t\tisoGlobCols: detectIsoGlobColumns(tgtDb, targetTableName),\n\t\t\ttgtColByCol: new Map(tgtDb.prepare(`PRAGMA table_info(\"${targetTableName}\")`).all().map((r) => [r.name, {\n\t\t\t\tnotnull: r.notnull,\n\t\t\t\tdflt_value: r.dflt_value,\n\t\t\t\ttype: r.type\n\t\t\t}]))\n\t\t};\n\t} catch {\n\t\treturn;\n\t}\n}\n/**\n* List user tables in a DB (excluding SQLite internals + Drizzle journal).\n*/\nfunction listTables(db) {\n\treturn db.prepare(\"SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%' AND name NOT LIKE '__drizzle_%' ORDER BY name\").all().map((r) => r.name);\n}\n/**\n* Return `true` if `tableName` exists in `db`. Used to route an FK-orphan row to\n* the scope DB that actually declares its child table (T11572).\n*/\nfunction tableExists(db, tableName) {\n\ttry {\n\t\tconst escaped = tableName.replace(/'/g, \"''\");\n\t\treturn db.prepare(`SELECT 1 FROM sqlite_master WHERE type='table' AND name='${escaped}'`).get() !== void 0;\n\t} catch {\n\t\treturn false;\n\t}\n}\n/**\n* Regex that extracts a single-column `IN (...)` CHECK enum from a table's DDL.\n*\n* Matches the canonical Drizzle-generated form:\n* `CHECK (\"col\" IN ('a', 'b', 'c'))`\n* and the NULL-tolerant variant:\n* `CHECK (\"col\" IS NULL OR \"col\" IN ('a', 'b'))`\n*\n* Capture group 1 is the column name; group 2 is the raw `'a', 'b', …` list.\n* The regex is intentionally conservative — it only recognises the\n* string-literal `IN` enum shape (the one that drops rows on drift), not GLOB\n* or arithmetic CHECKs.\n*/\nvar CHECK_ENUM_REGEX = /CHECK\\s*\\(\\s*\"([^\"]+)\"\\s+(?:IS\\s+NULL\\s+OR\\s+\"[^\"]+\"\\s+)?IN\\s*\\(([^)]*)\\)\\s*\\)/gi;\n/**\n* Parse the `'a', 'b', 'c'` body of an `IN (...)` clause into the set of\n* canonical enum members (single-quoted SQL string literals, `''` un-escaped).\n*/\nfunction parseEnumMembers(body) {\n\tconst members = [];\n\tfor (const m of body.matchAll(/'((?:[^']|'')*)'/g)) members.push(m[1].replace(/''/g, \"'\"));\n\treturn members;\n}\n/**\n* Read a target table's DDL and return a map of `column → allowed enum members`\n* for every single-column string-literal CHECK enum on that table.\n*\n* @param db - Target DB with the consolidated schema.\n* @param tableName - Physical consolidated table name.\n* @returns Map from column name to its allowed enum members. Empty when the\n* table declares no recognised CHECK enums.\n*/\nfunction detectCheckEnums(db, tableName) {\n\tconst escaped = tableName.replace(/'/g, \"''\");\n\tconst row = db.prepare(`SELECT sql FROM sqlite_master WHERE type='table' AND name='${escaped}'`).get();\n\tconst out = /* @__PURE__ */ new Map();\n\tif (!row?.sql) return out;\n\tCHECK_ENUM_REGEX.lastIndex = 0;\n\tfor (const match of row.sql.matchAll(CHECK_ENUM_REGEX)) {\n\t\tconst col = match[1];\n\t\tconst members = parseEnumMembers(match[2]);\n\t\tif (members.length > 0) out.set(col, members);\n\t}\n\treturn out;\n}\n/**\n* Detect enum/type drift for one source→target table pair: source values in an\n* enum-constrained column that are NOT members of the target CHECK enum.\n*\n* Reads the DISTINCT non-null values of each enum column from the source table\n* and compares them against the target's allowed members. Only columns present\n* in BOTH source and target are inspected. The check is purely diagnostic — it\n* reports raw source drift; the migration layer is responsible for normalising\n* known aliases before insert.\n*\n* @param srcDb - Source DB handle.\n* @param srcTable - Physical source table name.\n* @param tgtDb - Target DB handle.\n* @param tgtTable - Physical consolidated target table name.\n* @returns Drift findings for this table (empty when fully canonical).\n*/\nfunction detectTableEnumDrift(srcDb, srcTable, tgtDb, tgtTable) {\n\tconst enums = detectCheckEnums(tgtDb, tgtTable);\n\tif (enums.size === 0) return [];\n\tlet srcCols;\n\ttry {\n\t\tsrcCols = new Set(srcDb.prepare(`PRAGMA table_info(\"${srcTable}\")`).all().map((r) => r.name));\n\t} catch {\n\t\treturn [];\n\t}\n\tconst findings = [];\n\tfor (const [col, allowed] of enums) {\n\t\tif (!srcCols.has(col)) continue;\n\t\tconst allowedSet = new Set(allowed);\n\t\tlet rows;\n\t\ttry {\n\t\t\trows = srcDb.prepare(`SELECT \"${col}\" AS v, COUNT(*) AS c FROM \"${srcTable}\" WHERE \"${col}\" IS NOT NULL GROUP BY \"${col}\"`).all();\n\t\t} catch {\n\t\t\tcontinue;\n\t\t}\n\t\tconst offending = [];\n\t\tlet driftCount = 0;\n\t\tfor (const r of rows) {\n\t\t\tconst value = String(r.v);\n\t\t\tif (!allowedSet.has(value)) {\n\t\t\t\tdriftCount += r.c;\n\t\t\t\tif (offending.length < 20) offending.push(value);\n\t\t\t}\n\t\t}\n\t\tif (driftCount > 0) findings.push({\n\t\t\ttargetTable: tgtTable,\n\t\t\tcolumn: col,\n\t\t\toffendingValues: offending,\n\t\t\tallowedValues: allowed,\n\t\t\tdriftCount\n\t\t});\n\t}\n\treturn findings;\n}\n/**\n* Run `PRAGMA foreign_key_check` on a target DB and return any orphan rows.\n*\n* @param db - Target DB handle (consolidated cleo.db).\n* @param scope - Scope label, attached to log context only.\n* @returns The list of FK violations (empty when referential integrity holds).\n*/\nfunction foreignKeyCheck(db, scope) {\n\ttry {\n\t\tconst rows = db.prepare(\"PRAGMA foreign_key_check\").all();\n\t\tif (rows.length > 0) log.warn({\n\t\t\tscope,\n\t\t\tcount: rows.length,\n\t\t\tsample: rows.slice(0, 5)\n\t\t}, `verifyMigration: PRAGMA foreign_key_check found ${rows.length} orphan row(s)`);\n\t\treturn rows.map((r) => ({\n\t\t\ttable: r.table,\n\t\t\trowid: r.rowid ?? null,\n\t\t\tparent: r.parent,\n\t\t\tfkid: r.fkid\n\t\t}));\n\t} catch (err) {\n\t\tlog.warn({\n\t\t\tscope,\n\t\t\terr\n\t\t}, \"verifyMigration: PRAGMA foreign_key_check failed (non-fatal)\");\n\t\treturn [];\n\t}\n}\n/**\n* Compute a **migration-stable, name-mapping-stable signature** for one FK\n* orphan so the same dangling row can be matched between the legacy SOURCE and\n* the consolidated TARGET — despite (a) a different `rowid` after the copy AND\n* (b) the legacy→consolidated table RENAME (`task_relations`→`tasks_task_relations`,\n* parent `tasks`→`tasks_tasks`).\n*\n* `PRAGMA foreign_key_check` returns `{ table, rowid, parent, fkid }`. We key the\n* orphan on:\n* - the CONSOLIDATED child-table name (source names are mapped via\n* {@link resolveConsolidatedTableName} so both sides agree),\n* - the CONSOLIDATED parent-table name (same mapping),\n* - the actual VALUES of the foreign-key child columns for that row (read via\n* `PRAGMA foreign_key_list` + the row at `rowid`) — these travel with the row\n* unchanged, so the dangling reference is identical on both sides.\n*\n* `fkid` is intentionally EXCLUDED — the consolidated table may declare its FKs\n* in a different order than the legacy one, so the per-table fkid is not stable.\n* The (consolidated child, consolidated parent, dangling FK column values) triple\n* uniquely identifies the orphan reference.\n*\n* Falls back to a column-name-only shape if the child columns can't be read\n* (best-effort — a fallback only ever makes two orphans compare as *different*,\n* which biases toward treating an orphan as \"introduced\", the SAFE/strict\n* direction).\n*\n* @param db - DB handle the orphan was found in.\n* @param v - One `PRAGMA foreign_key_check` row.\n* @param sourceName - When set, the orphan is on the SOURCE side and its\n* `table`/`parent` names are mapped to their consolidated equivalents so the\n* signature matches the target side. Omit for the already-consolidated target.\n* @returns A stable string signature.\n*/\nfunction orphanSignature(db, v, sourceName) {\n\tconst mapName = (name) => {\n\t\tif (sourceName === void 0) return name;\n\t\tconst res = resolveConsolidatedTableName(sourceName, name);\n\t\treturn res.kind === \"skip\" ? name : res.targetName;\n\t};\n\tconst childTable = mapName(v.table);\n\tconst parentTable = mapName(v.parent);\n\tlet childCols = [];\n\ttry {\n\t\tchildCols = db.prepare(`PRAGMA foreign_key_list(\"${v.table}\")`).all().filter((r) => r.id === v.fkid).map((r) => r.from);\n\t} catch {}\n\tif (v.rowid !== null && childCols.length > 0) try {\n\t\tconst sel = childCols.map((c) => `\"${c}\"`).join(\", \");\n\t\tconst row = db.prepare(`SELECT ${sel} FROM \"${v.table}\" WHERE rowid = ?`).get(v.rowid);\n\t\tif (row) return `${childTable}|${parentTable}|${childCols.slice().sort().map((c) => `${c}=${JSON.stringify(row[c])}`).join(\"&\")}`;\n\t} catch {}\n\treturn `${childTable}|${parentTable}|rowid:${v.rowid ?? \"?\"}`;\n}\n/**\n* Collect the set of {@link orphanSignature}s for every FK orphan in a SOURCE DB.\n*\n* Used to compute SOURCE-side orphan signatures so the parity gate can subtract\n* pre-existing orphans from the target's orphan set and fail only on the orphans\n* the migration INTRODUCED (T11572). The signatures are mapped to consolidated\n* table names so they compare equal to the target-side signatures.\n*\n* @param db - SOURCE DB handle to scan.\n* @param sourceName - `LegacyDbDescriptor.name` (for table-name mapping).\n* @param scope - Scope label for diagnostics.\n* @returns A set of name-mapping-stable orphan signatures.\n*/\nfunction sourceOrphanSignatures(db, sourceName, scope) {\n\tconst sigs = /* @__PURE__ */ new Set();\n\ttry {\n\t\tconst rows = db.prepare(\"PRAGMA foreign_key_check\").all();\n\t\tfor (const r of rows) sigs.add(orphanSignature(db, r, sourceName));\n\t\tif (rows.length > 0) log.warn({\n\t\t\tscope,\n\t\t\tcount: rows.length,\n\t\t\tsample: rows.slice(0, 5)\n\t\t}, `verifyMigration: source already has ${rows.length} pre-existing FK orphan(s) — these are tolerated (carried forward losslessly, flagged for data-hygiene)`);\n\t} catch (err) {\n\t\tlog.warn({\n\t\t\tscope,\n\t\t\terr\n\t\t}, \"verifyMigration: source PRAGMA foreign_key_check failed (non-fatal)\");\n\t}\n\treturn sigs;\n}\n/**\n* Verify that a source→target SQLite migration preserved every row, referential\n* integrity, content, and enum validity.\n*\n* Opens all source DBs and the consolidated target DBs **read-only**, then for\n* each legacy source table:\n*\n* 1. Resolves the consolidated target name via {@link resolveConsolidatedTableName}.\n* 2. Compares row counts (parity gate).\n* 3. Computes a column-intersection content digest on both sides.\n* 4. Records any enum/type drift (source values outside the target CHECK enum).\n*\n* After all tables, it runs `PRAGMA foreign_key_check` on each distinct target\n* DB and folds the orphan rows into the result.\n*\n* @param sources - Legacy source descriptors (from `buildExodusPlan()`).\n* @param projectDbPath - Absolute path to the consolidated project `cleo.db`.\n* @param globalDbPath - Absolute path to the consolidated global `cleo.db`.\n* @param onProgress - Optional progress callback.\n*\n* @returns A {@link VerifyMigrationResult}. `ok === false` (with `error`\n* populated) on any count mismatch, content mismatch, FK orphan, or enum\n* drift.\n*\n* @task T11551 (DHQ-045 — exodus zero-loss durable guard · AC1)\n*/\nfunction verifyMigration(sources, projectDbPath, globalDbPath, onProgress) {\n\tconst tables = [];\n\tconst enumDrift = [];\n\tconst foreignKeyViolations = [];\n\tconst introducedForeignKeyViolations = [];\n\tconst preExistingForeignKeyViolations = [];\n\tconst failureLines = [];\n\t/**\n\t* Signatures of FK orphans ALREADY present in the legacy SOURCE DBs (T11572).\n\t* Target orphans whose signature is in this set are pre-existing — carried\n\t* forward losslessly — and do NOT fail the parity gate.\n\t*/\n\tconst sourceOrphanSigs = /* @__PURE__ */ new Set();\n\tif (!existsSync(projectDbPath)) return {\n\t\tok: false,\n\t\ttables: [],\n\t\tforeignKeyViolations: [],\n\t\tintroducedForeignKeyViolations: [],\n\t\tpreExistingForeignKeyViolations: [],\n\t\tenumDrift: [],\n\t\terror: `Consolidated project cleo.db not found at ${projectDbPath}. Run 'cleo exodus migrate' first.`\n\t};\n\tif (!existsSync(globalDbPath)) return {\n\t\tok: false,\n\t\ttables: [],\n\t\tforeignKeyViolations: [],\n\t\tintroducedForeignKeyViolations: [],\n\t\tpreExistingForeignKeyViolations: [],\n\t\tenumDrift: [],\n\t\terror: `Consolidated global cleo.db not found at ${globalDbPath}. Run 'cleo exodus migrate' first.`\n\t};\n\tconst projectSnap = openCleoDbSnapshot(projectDbPath, { readOnly: true });\n\tconst globalSnap = openCleoDbSnapshot(globalDbPath, { readOnly: true });\n\ttry {\n\t\tfor (const src of sources) {\n\t\t\tif (!existsSync(src.path)) {\n\t\t\t\tonProgress?.(`Skipping ${src.name} (not present)`);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst srcSnap = openCleoDbSnapshot(src.path, { readOnly: true });\n\t\t\ttry {\n\t\t\t\tfor (const sig of sourceOrphanSignatures(srcSnap.db, src.name, `source:${src.name}`)) sourceOrphanSigs.add(sig);\n\t\t\t\tconst sourceTables = listTables(srcSnap.db);\n\t\t\t\tconst projectTables = new Set(listTables(projectSnap.db));\n\t\t\t\tconst globalTables = new Set(listTables(globalSnap.db));\n\t\t\t\tfor (const legacyTableName of sourceTables) {\n\t\t\t\t\tonProgress?.(`Verifying ${src.name}.${legacyTableName}…`);\n\t\t\t\t\tconst resolution = resolveConsolidatedTableName(src.name, legacyTableName);\n\t\t\t\t\tif (resolution.kind === \"skip\") {\n\t\t\t\t\t\tonProgress?.(` [skip] ${src.name}.${legacyTableName} — ${resolution.reason}`);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tconst targetTableName = resolution.targetName;\n\t\t\t\t\tconst scope = resolveTableTargetScope(src.name, legacyTableName, src.targetScope);\n\t\t\t\t\tconst targetSnap = scope === \"project\" ? projectSnap : globalSnap;\n\t\t\t\t\tconst targetTables = scope === \"project\" ? projectTables : globalTables;\n\t\t\t\t\tif (targetTables.has(targetTableName)) {\n\t\t\t\t\t\tconst drift = detectTableEnumDrift(srcSnap.db, legacyTableName, targetSnap.db, targetTableName);\n\t\t\t\t\t\tif (drift.length > 0) {\n\t\t\t\t\t\t\tenumDrift.push(...drift);\n\t\t\t\t\t\t\tfor (const d of drift) failureLines.push(`[${scope}] ${targetTableName}.${d.column}: ${d.driftCount} row(s) with value(s) outside enum {${d.allowedValues.join(\", \")}} — e.g. ${d.offendingValues.map((v) => `'${v}'`).join(\", \")}`);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!targetTables.has(targetTableName)) {\n\t\t\t\t\t\tconst srcResult = computeTableDigest(srcSnap.db, legacyTableName, null);\n\t\t\t\t\t\tconst countMatch = srcResult.count === 0;\n\t\t\t\t\t\ttables.push({\n\t\t\t\t\t\t\tsourceTable: legacyTableName,\n\t\t\t\t\t\t\ttargetTable: targetTableName,\n\t\t\t\t\t\t\tscope,\n\t\t\t\t\t\t\tsourceCount: srcResult.count,\n\t\t\t\t\t\t\ttargetCount: 0,\n\t\t\t\t\t\t\tsourceHash: srcResult.hash,\n\t\t\t\t\t\t\ttargetHash: \"\",\n\t\t\t\t\t\t\thashMatch: countMatch,\n\t\t\t\t\t\t\tcountMatch\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (!countMatch) failureLines.push(`[${scope}] ${src.name}.${legacyTableName} → ${targetTableName}: missing from target (source has ${srcResult.count} rows)`);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tconst cols = sharedColumnsSorted(srcSnap.db, legacyTableName, targetSnap.db, targetTableName);\n\t\t\t\t\tconst srcTransform = buildSourceDigestTransform(srcSnap.db, legacyTableName, targetSnap.db, targetTableName);\n\t\t\t\t\tconst srcDigest = computeTableDigest(srcSnap.db, legacyTableName, cols, srcTransform);\n\t\t\t\t\tconst tgtDigest = computeTableDigest(targetSnap.db, targetTableName, cols);\n\t\t\t\t\tconst countMatch = srcDigest.count === tgtDigest.count;\n\t\t\t\t\tconst hashMatch = srcDigest.hash === tgtDigest.hash;\n\t\t\t\t\tif (tgtDigest.count < srcDigest.count) failureLines.push(`[${scope}] ${src.name}.${legacyTableName} → ${targetTableName}: DEFICIT — source=${srcDigest.count} rows, target=${tgtDigest.count} rows (${srcDigest.count - tgtDigest.count} missing), hashMatch=${hashMatch}`);\n\t\t\t\t\telse if (tgtDigest.count > srcDigest.count) log.warn({\n\t\t\t\t\t\tscope,\n\t\t\t\t\t\tsource: src.name,\n\t\t\t\t\t\ttable: targetTableName,\n\t\t\t\t\t\tsourceCount: srcDigest.count,\n\t\t\t\t\t\ttargetCount: tgtDigest.count,\n\t\t\t\t\t\tdelta: tgtDigest.count - srcDigest.count\n\t\t\t\t\t}, `verifyMigration: ${targetTableName} has ${tgtDigest.count - srcDigest.count} MORE row(s) in target than source (surplus — NOT data loss, tolerated; e.g. migration-time audit writes). Verify it is not an unexpected double-copy.`);\n\t\t\t\t\telse if (!hashMatch) failureLines.push(`[${scope}] ${src.name}.${legacyTableName} → ${targetTableName}: source=${srcDigest.count} rows, target=${tgtDigest.count} rows, hashMatch=${hashMatch}`);\n\t\t\t\t\ttables.push({\n\t\t\t\t\t\tsourceTable: legacyTableName,\n\t\t\t\t\t\ttargetTable: targetTableName,\n\t\t\t\t\t\tscope,\n\t\t\t\t\t\tsourceCount: srcDigest.count,\n\t\t\t\t\t\ttargetCount: tgtDigest.count,\n\t\t\t\t\t\tsourceHash: srcDigest.hash,\n\t\t\t\t\t\ttargetHash: tgtDigest.hash,\n\t\t\t\t\t\thashMatch,\n\t\t\t\t\t\tcountMatch\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tsrcSnap.close();\n\t\t\t}\n\t\t}\n\t\tconst targetOrphans = [];\n\t\ttargetOrphans.push(...foreignKeyCheck(projectSnap.db, \"project\"));\n\t\ttargetOrphans.push(...foreignKeyCheck(globalSnap.db, \"global\"));\n\t\tforeignKeyViolations.push(...targetOrphans);\n\t\tfor (const fk of targetOrphans) {\n\t\t\tconst sig = orphanSignature(tableExists(projectSnap.db, fk.table) ? projectSnap.db : globalSnap.db, fk);\n\t\t\tif (sourceOrphanSigs.has(sig)) preExistingForeignKeyViolations.push(fk);\n\t\t\telse {\n\t\t\t\tintroducedForeignKeyViolations.push(fk);\n\t\t\t\tfailureLines.push(`[fk] ${fk.table}.rowid=${fk.rowid ?? \"?\"} references missing ${fk.parent} (fkid=${fk.fkid}) — INTRODUCED by migration`);\n\t\t\t}\n\t\t}\n\t\tif (preExistingForeignKeyViolations.length > 0) log.warn({\n\t\t\tcount: preExistingForeignKeyViolations.length,\n\t\t\tsample: preExistingForeignKeyViolations.slice(0, 5)\n\t\t}, `verifyMigration: ${preExistingForeignKeyViolations.length} pre-existing source FK orphan(s) carried forward losslessly — tolerated (flag for data-hygiene follow-up, NOT a migration failure)`);\n\t} catch (err) {\n\t\tconst error = err instanceof Error ? err.message : String(err);\n\t\tlog.error({ err }, \"verifyMigration failed\");\n\t\treturn {\n\t\t\tok: false,\n\t\t\ttables,\n\t\t\tforeignKeyViolations,\n\t\t\tintroducedForeignKeyViolations,\n\t\t\tpreExistingForeignKeyViolations,\n\t\t\tenumDrift,\n\t\t\terror\n\t\t};\n\t} finally {\n\t\tprojectSnap.close();\n\t\tglobalSnap.close();\n\t}\n\tif (failureLines.length > 0) {\n\t\tconst error = `verifyMigration FAILED: ${failureLines.length} issue(s):\\n${failureLines.map((l) => ` • ${l}`).join(\"\\n\")}`;\n\t\tlog.error({ failureCount: failureLines.length }, error);\n\t\treturn {\n\t\t\tok: false,\n\t\t\ttables,\n\t\t\tforeignKeyViolations,\n\t\t\tintroducedForeignKeyViolations,\n\t\t\tpreExistingForeignKeyViolations,\n\t\t\tenumDrift,\n\t\t\terror\n\t\t};\n\t}\n\treturn {\n\t\tok: true,\n\t\ttables,\n\t\tforeignKeyViolations,\n\t\tintroducedForeignKeyViolations,\n\t\tpreExistingForeignKeyViolations,\n\t\tenumDrift\n\t};\n}\n//#endregion\nexport { buildExodusPlan, clearExodusJournal, detectStrandedResidue, runExodusMigrate, verifyMigration };\n"],"names":[],"mappings":"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CAAC,OAAO,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,4BAA4B,GAAG,wCAAwC;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,GAAG,SAAS,CAAC,gBAAgB,CAAC;AACvC,IAAI,oBAAoB,GAAG,cAAc;AACzC,IAAI,gBAAgB,GAAG,qBAAqB;AAC5C;AACA;AACA;AACA,SAAS,gBAAgB,CAAC,EAAE,EAAE;AAC9B,CAAC,IAAI;AACL,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,SAAS;AACzE,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,SAAS;AAClB,CAAC;AACD;AACA;AACA;AACA;AACA,SAAS,YAAY,CAAC,EAAE,EAAE;AAC1B,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,8HAA8H,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,K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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"explorer-loader-BN_mkt3_.js","sources":["../../../.svelte-kit/adapter-node/chunks/explorer-loader.js"],"sourcesContent":["import { o as getTasksDb } from \"./connections2.js\";\n//#region src/lib/server/tasks/explorer-loader.ts\n/**\n* Parse a JSON column into a string array, returning `[]` on any failure.\n*\n* Used for `labels_json`, `notes_json`, `files_json`. Defensive: bad JSON\n* must not poison the entire bundle — silently degrade to empty.\n*/\nfunction parseStringArray(raw) {\n\tif (!raw) return [];\n\ttry {\n\t\tconst parsed = JSON.parse(raw);\n\t\tif (!Array.isArray(parsed)) return [];\n\t\treturn parsed.filter((x) => typeof x === \"string\");\n\t} catch {\n\t\treturn [];\n\t}\n}\n/**\n* Parse a JSON column into an unknown array, preserving object entries.\n*\n* Used for `acceptance_json` (mixed strings + AcceptanceGate objects) and\n* for passing through `verification_json` shape without imposing strict\n* validation in this loader.\n*/\nfunction parseJsonArray(raw) {\n\tif (!raw) return [];\n\ttry {\n\t\tconst parsed = JSON.parse(raw);\n\t\treturn Array.isArray(parsed) ? parsed : [];\n\t} catch {\n\t\treturn [];\n\t}\n}\n/**\n* Parse a JSON column into an object, returning `undefined` on any failure.\n*/\nfunction parseJsonObject(raw) {\n\tif (!raw) return void 0;\n\ttry {\n\t\tconst parsed = JSON.parse(raw);\n\t\treturn typeof parsed === \"object\" && parsed !== null ? parsed : void 0;\n\t} catch {\n\t\treturn;\n\t}\n}\n/**\n* Convert a raw snake_case SQLite row to the canonical camelCase\n* {@link Task} contract used across CLEO.\n*\n* Mirrors `packages/core/src/store/converters.ts#rowToTask` for consumers\n* that read directly from `node:sqlite` (Studio server load) instead of the\n* Drizzle-backed DataAccessor path.\n*/\nfunction rowToTask(row) {\n\tconst provenance = row.created_by !== null || row.modified_by !== null || row.session_id !== null ? {\n\t\tcreatedBy: row.created_by,\n\t\tmodifiedBy: row.modified_by,\n\t\tsessionId: row.session_id\n\t} : void 0;\n\treturn {\n\t\tid: row.id,\n\t\ttitle: row.title,\n\t\tdescription: row.description ?? \"\",\n\t\tstatus: row.status,\n\t\tpriority: row.priority,\n\t\ttype: row.type ?? void 0,\n\t\tparentId: row.parent_id ?? void 0,\n\t\tposition: row.position ?? void 0,\n\t\tpositionVersion: row.position_version ?? void 0,\n\t\tsize: row.size ?? void 0,\n\t\tphase: row.phase ?? void 0,\n\t\tfiles: parseStringArray(row.files_json),\n\t\tacceptance: parseJsonArray(row.acceptance_json),\n\t\tlabels: parseStringArray(row.labels_json),\n\t\tnotes: parseStringArray(row.notes_json),\n\t\torigin: row.origin ?? void 0,\n\t\tblockedBy: row.blocked_by ?? void 0,\n\t\tepicLifecycle: row.epic_lifecycle ?? void 0,\n\t\tnoAutoComplete: row.no_auto_complete === null ? void 0 : row.no_auto_complete !== 0,\n\t\tcreatedAt: row.created_at,\n\t\tupdatedAt: row.updated_at ?? void 0,\n\t\tcompletedAt: row.completed_at ?? void 0,\n\t\tcancelledAt: row.cancelled_at ?? void 0,\n\t\tcancellationReason: row.cancellation_reason ?? void 0,\n\t\tverification: parseJsonObject(row.verification_json),\n\t\tprovenance,\n\t\tpipelineStage: row.pipeline_stage ?? void 0,\n\t\tassignee: row.assignee ?? void 0\n\t};\n}\n/**\n* Build `{ epicId -> EpicProgressBucket }` from the already-loaded task\n* array.\n*\n* Pure function — no DB access. Algorithm:\n*\n* 1. Bucket every task by `parentId` into `childrenByParent`.\n* 2. For every epic (`type = 'epic'`), look up its direct children and tally\n* their statuses.\n*\n* Complexity: O(N) where N is `tasks.length`.\n*\n* @remarks\n* Archived children are already filtered out at the SQL layer when\n* `includeArchived` is false. When `includeArchived` is true, archived\n* children are included in `total` but NOT tallied in any of\n* `done/cancelled/active` (they belong in none of those buckets).\n*/\nfunction _computeEpicProgressRollup(tasks) {\n\tconst childrenByParent = /* @__PURE__ */ new Map();\n\tfor (const task of tasks) {\n\t\tconst parent = task.parentId;\n\t\tif (!parent) continue;\n\t\tconst bucket = childrenByParent.get(parent);\n\t\tif (bucket) bucket.push(task);\n\t\telse childrenByParent.set(parent, [task]);\n\t}\n\tconst result = {};\n\tfor (const task of tasks) {\n\t\tif (task.type !== \"epic\") continue;\n\t\tconst children = childrenByParent.get(task.id) ?? [];\n\t\tlet done = 0;\n\t\tlet cancelled = 0;\n\t\tlet active = 0;\n\t\tfor (const child of children) switch (child.status) {\n\t\t\tcase \"done\":\n\t\t\t\tdone += 1;\n\t\t\t\tbreak;\n\t\t\tcase \"cancelled\":\n\t\t\t\tcancelled += 1;\n\t\t\t\tbreak;\n\t\t\tcase \"active\":\n\t\t\t\tactive += 1;\n\t\t\t\tbreak;\n\t\t\tdefault: break;\n\t\t}\n\t\tresult[task.id] = {\n\t\t\ttotal: children.length,\n\t\t\tdone,\n\t\t\tcancelled,\n\t\t\tactive\n\t\t};\n\t}\n\treturn result;\n}\n/**\n* Aggregate distinct labels from the loaded task set. Output is sorted for\n* deterministic rendering in the `FilterChipGroup`.\n*/\nfunction _collectDistinctLabels(tasks) {\n\tconst seen = /* @__PURE__ */ new Set();\n\tfor (const task of tasks) {\n\t\tconst labels = task.labels;\n\t\tif (!labels) continue;\n\t\tfor (const label of labels) if (typeof label === \"string\" && label.length > 0) seen.add(label);\n\t}\n\treturn [...seen].sort();\n}\n/** SELECT list that maps 1:1 to {@link TaskRowSqlite}. Hoisted for reuse. */\nvar TASKS_SELECT_COLUMNS = `\n id, title, description, status, priority, type, parent_id, pipeline_stage,\n size, phase, position, position_version, labels_json, acceptance_json,\n files_json, notes_json, verification_json, origin, blocked_by,\n epic_lifecycle, no_auto_complete, created_at, updated_at, completed_at,\n cancelled_at, cancellation_reason, created_by, modified_by, session_id,\n assignee\n`;\n/** Fallback empty bundle returned when tasks.db does not exist. */\nfunction emptyBundle() {\n\treturn {\n\t\ttasks: [],\n\t\tdeps: [],\n\t\tepicProgress: {},\n\t\tlabels: [],\n\t\tloadedAt: (/* @__PURE__ */ new Date()).toISOString()\n\t};\n}\n/**\n* Load the full Task Explorer payload for the active project context.\n*\n* @param opts - Load options (project context + optional filters).\n* @returns A snapshot of the entire explorer-relevant data set.\n*\n* @remarks\n* When `tasks.db` does not exist for the project (e.g. freshly-registered\n* project that hasn't run `cleo init`), returns an empty bundle rather than\n* throwing. Callers render a \"tasks.db not found\" empty state.\n*\n* Closes the SQLite connection before returning so the loader does not leak\n* file handles. One connection per call is fine — `node:sqlite` open is\n* sub-millisecond per {@link getTasksDb} documentation.\n*\n* @example\n* ```ts\n* // In packages/studio/src/routes/tasks/+page.server.ts\n* export const load: PageServerLoad = async ({ locals, url }) => {\n* const bundle = await loadExplorerBundle({ projectCtx: locals.projectCtx });\n* return { bundle };\n* };\n* ```\n*/\nasync function loadExplorerBundle(opts) {\n\tconst { projectCtx } = opts;\n\tconst includeArchived = opts.includeArchived ?? false;\n\tconst rawLimit = opts.limit ?? 2e3;\n\tconst limit = Number.isFinite(rawLimit) && rawLimit > 0 ? Math.floor(rawLimit) : 2e3;\n\tconst db = getTasksDb(projectCtx);\n\tif (!db) return emptyBundle();\n\ttry {\n\t\tconst whereClause = includeArchived ? \"\" : `WHERE status != 'archived'`;\n\t\tconst tasks = db.prepare(`SELECT ${TASKS_SELECT_COLUMNS}\n FROM tasks\n ${whereClause}\n ORDER BY id ASC\n LIMIT ?`).all(limit).map(rowToTask);\n\t\tconst depRows = db.prepare(\"SELECT task_id, depends_on FROM task_dependencies\").all();\n\t\tconst loadedIds = new Set(tasks.map((t) => t.id));\n\t\treturn {\n\t\t\ttasks,\n\t\t\tdeps: depRows.filter((r) => loadedIds.has(r.task_id) && loadedIds.has(r.depends_on)).map((r) => ({\n\t\t\t\ttaskId: r.task_id,\n\t\t\t\tdependsOn: r.depends_on\n\t\t\t})),\n\t\t\tepicProgress: _computeEpicProgressRollup(tasks),\n\t\t\tlabels: _collectDistinctLabels(tasks),\n\t\t\tloadedAt: (/* @__PURE__ */ new Date()).toISOString()\n\t\t};\n\t} finally {\n\t\tdb.close();\n\t}\n}\n//#endregion\nexport { loadExplorerBundle as t };\n"],"names":[],"mappings":";;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,gBAAgB,CAAC,GAAG,EAAE;AAC/B,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE;AACpB,CAAC,IAAI;AACL,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAChC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE;AACvC,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,QAAQ,CAAC;AACpD,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,EAAE;AACX,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,cAAc,CAAC,GAAG,EAAE;AAC7B,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE;AACpB,CAAC,IAAI;AACL,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAChC,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,EAAE;AAC5C,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,EAAE;AACX,CAAC;AACD;AACA;AACA;AACA;AACA,SAAS,eAAe,CAAC,GAAG,EAAE;AAC9B,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,MAAM;AACxB,CAAC,IAAI;AACL,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAChC,EAAE,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC;AACxE,CAAC,CAAC,CAAC,MAAM;AACT,EAAE;AACF,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS,CAAC,GAAG,EAAE;AACxB,CAAC,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,KAAK,IAAI,IAAI,GAAG,CAAC,WAAW,KAAK,IAAI,IAAI,GAAG,CAAC,UAAU,KAAK,IAAI,GAAG;AACrG,EAAE,SAAS,EAAE,GAAG,CAAC,UAAU;AAC3B,EAAE,UAAU,EAAE,GAAG,CAAC,WAAW;AAC7B,EAAE,SAAS,EAAE,GAAG,CAAC;AACjB,EAAE,GAAG,MAAM;AACX,CAAC,OAAO;AACR,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE;AACZ,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK;AAClB,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE;AACpC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM;AACpB,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ;AACxB,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,MAAM;AAC1B,EAAE,QAAQ,EAAE,GAAG,CAAC,SAAS,IAAI,MAAM;AACnC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,MAAM;AAClC,EAAE,eAAe,EAAE,GAAG,CAAC,gBAAgB,IAAI,MAAM;AACjD,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,MAAM;AAC1B,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,MAAM;AAC5B,EAAE,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;AACzC,EAAE,UAAU,EAAE,cAAc,CAAC,GAAG,CAAC,eAAe,CAAC;AACjD,EAAE,MAAM,EAAE,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC;AAC3C,EAAE,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;AACzC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,MAAM;AAC9B,EAAE,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,MAAM;AACrC,EAAE,aAAa,EAAE,GAAG,CAAC,cAAc,IAAI,MAAM;AAC7C,EAAE,cAAc,EAAE,GAAG,CAAC,gBAAgB,KAAK,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,gBAAgB,KAAK,CAAC;AACrF,EAAE,SAAS,EAAE,GAAG,CAAC,UAAU;AAC3B,EAAE,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,MAAM;AACrC,EAAE,WAAW,EAAE,GAAG,CAAC,YAAY,IAAI,MAAM;AACzC,EAAE,WAAW,EAAE,GAAG,CAAC,YAAY,IAAI,MAAM;AACzC,EAAE,kBAAkB,EAAE,GAAG,CAAC,mBAAmB,IAAI,MAAM;AACvD,EAAE,YAAY,EAAE,eAAe,CAAC,GAAG,CAAC,iBAAiB,CAAC;AACtD,EAAE,UAAU;AACZ,EAAE,aAAa,EAAE,GAAG,CAAC,cAAc,IAAI,MAAM;AAC7C,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI;AAC5B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,0BAA0B,CAAC,KAAK,EAAE;AAC3C,CAAC,MAAM,gBAAgB,mBAAmB,IAAI,GAAG,EAAE;AACnD,CAAC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAC3B,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ;AAC9B,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,EAAE,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC;AAC7C,EAAE,IAAI,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,OAAO,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC;AACD,CAAC,MAAM,MAAM,GAAG,EAAE;AAClB,CAAC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAC3B,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;AAC5B,EAAE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE;AACtD,EAAE,IAAI,IAAI,GAAG,CAAC;AACd,EAAE,IAAI,SAAS,GAAG,CAAC;AACnB,EAAE,IAAI,MAAM,GAAG,CAAC;AAChB,EAAE,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,QAAQ,KAAK,CAAC,MAAM;AACpD,GAAG,KAAK,MAAM;AACd,IAAI,IAAI,IAAI,CAAC;AACb,IAAI;AACJ,GAAG,KAAK,WAAW;AACnB,IAAI,SAAS,IAAI,CAAC;AAClB,IAAI;AACJ,GAAG,KAAK,QAAQ;AAChB,IAAI,MAAM,IAAI,CAAC;AACf,IAAI;AAEJ;AACA,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;AACpB,GAAG,KAAK,EAAE,QAAQ,CAAC,MAAM;AACzB,GAAG,IAAI;AACP,GAAG,SAAS;AACZ,GAAG;AACH,GAAG;AACH,CAAC;AACD,CAAC,OAAO,MAAM;AACd;AACA;AACA;AACA;AACA;AACA,SAAS,sBAAsB,CAAC,KAAK,EAAE;AACvC,CAAC,MAAM,IAAI,mBAAmB,IAAI,GAAG,EAAE;AACvC,CAAC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAC3B,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;AAC5B,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,EAAE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AAChG,CAAC;AACD,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE;AACxB;AACA;AACA,IAAI,oBAAoB,GAAG;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,SAAS,WAAW,GAAG;AACvB,CAAC,OAAO;AACR,EAAE,KAAK,EAAE,EAAE;AACX,EAAE,IAAI,EAAE,EAAE;AACV,EAAE,YAAY,EAAE,EAAE;AAClB,EAAE,MAAM,EAAE,EAAE;AACZ,EAAE,QAAQ,EAAE,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW;AACpD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kBAAkB,CAAC,IAAI,EAAE;AACxC,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI;AAC5B,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,KAAK;AACtD,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,IAAI,GAAG;AACnC,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,GAAG;AACrF,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC;AAClC,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,WAAW,EAAE;AAC9B,CAAC,IAAI;AACL,EAAE,MAAM,WAAW,GAAG,eAAe,GAAG,EAAE,GAAG,CAAC,0BAA0B,CAAC;AACzE,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,oBAAoB;AACzD;AACA,SAAS,EAAE,WAAW;AACtB;AACA,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;AAC5C,EAAE,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC,GAAG,EAAE;AACvF,EAAE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AACnD,EAAE,OAAO;AACT,GAAG,KAAK;AACR,GAAG,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AACpG,IAAI,MAAM,EAAE,CAAC,CAAC,OAAO;AACrB,IAAI,SAAS,EAAE,CAAC,CAAC;AACjB,IAAI,CAAC,CAAC;AACN,GAAG,YAAY,EAAE,0BAA0B,CAAC,KAAK,CAAC;AAClD,GAAG,MAAM,EAAE,sBAAsB,CAAC,KAAK,CAAC;AACxC,GAAG,QAAQ,EAAE,iBAAiB,IAAI,IAAI,EAAE,EAAE,WAAW;AACrD,GAAG;AACH,CAAC,CAAC,SAAS;AACX,EAAE,EAAE,CAAC,KAAK,EAAE;AACZ,CAAC;AACD;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"externalDataInterceptor-C3C4cObe.js","sources":["../../../.svelte-kit/adapter-node/chunks/externalDataInterceptor.js"],"sourcesContent":["import { t as fileIntercept } from \"./readFile.js\";\nimport { n as tokenIntercept } from \"./getSSOTokenFromFile.js\";\n//#region ../../node_modules/.pnpm/@smithy+core@3.24.3/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/externalDataInterceptor.js\nvar externalDataInterceptor = {\n\tgetFileRecord() {\n\t\treturn fileIntercept;\n\t},\n\tinterceptFile(path, contents) {\n\t\tfileIntercept[path] = Promise.resolve(contents);\n\t},\n\tgetTokenRecord() {\n\t\treturn tokenIntercept;\n\t},\n\tinterceptToken(id, contents) {\n\t\ttokenIntercept[id] = contents;\n\t}\n};\n//#endregion\nexport { externalDataInterceptor as t };\n"],"names":[],"mappings":";;;AAEA;AACG,IAAC,uBAAuB,GAAG;AAC9B,CAAC,aAAa,GAAG;AACjB,EAAE,OAAO,aAAa;AACtB,CAAC,CAAC;AACF,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE;AAC/B,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;AACjD,CAAC,CAAC;AACF,CAAC,cAAc,GAAG;AAClB,EAAE,OAAO,cAAc;AACvB,CAAC,CAAC;AACF,CAAC,cAAc,CAAC,EAAE,EAAE,QAAQ,EAAE;AAC9B,EAAE,cAAc,CAAC,EAAE,CAAC,GAAG,QAAQ;AAC/B,CAAC;AACD;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"extraction-gate-DDNBq7gu.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"extraction-gate2-D77EZBQ6.js","sources":["../../../.svelte-kit/adapter-node/chunks/extraction-gate2.js"],"sourcesContent":["import { r as isEmbeddingAvailable } from \"./brain-embedding2.js\";\nimport { t as addGraphEdge } from \"./graph-auto-populate2.js\";\nimport { t as searchSimilar } from \"./brain-similarity.js\";\nimport { createHash } from \"node:crypto\";\n//#region ../core/dist/memory/extraction-gate.js\n/**\n* Extraction Gate — Verification layer before BRAIN memory storage.\n*\n* Wraps all memory writes with three ordered checks:\n* A. Content-hash deduplication (always runs — fast, no embedding needed)\n* B. Cosine similarity deduplication (runs when embedding is available; skipped for trusted sources)\n* C. Confidence threshold enforcement (always runs)\n*\n* Trusted sources (manual, owner) bypass Check B but still run A and C.\n*\n* Design goals:\n* - NEVER block the primary write path on error — all checks wrapped in try/catch\n* - Degrade gracefully to hash-only dedup when embedding is unavailable\n* - Contradiction detection uses a polarity-flip heuristic (no LLM required)\n*\n* @task T549 Wave 2-A\n* @epic T549\n*/\n/** Cosine distance below which two entries are considered exact duplicates. */\nvar DUPLICATE_THRESHOLD = .15;\n/** Cosine distance below which two entries are considered closely related. */\nvar SIMILAR_THRESHOLD = .3;\n/** Minimum confidence score required to store an entry. */\nvar MINIMUM_CONFIDENCE = .4;\n/**\n* Title prefixes that identify known-noise entries (task lifecycle chatter,\n* session scaffolding, evidence bookkeeping, etc.).\n*\n* Check A0 in verifyCandidate rejects any candidate whose title starts with\n* one of these prefixes before any expensive hash/similarity work runs.\n*\n* Ported from brain-purge.ts:207-248 janitor classifier so this becomes the\n* single source of truth. brain-purge.ts should import this const if it needs\n* the same list (follow-on cleanup tracked separately).\n*\n* @task T993\n*/\nvar BRAIN_NOISE_PREFIXES = [\n\t\"Task start:\",\n\t\"Session note:\",\n\t\"Started work on:\",\n\t\"Fix evidence:\",\n\t\"Verified:\",\n\t\"Completed:\",\n\t\"Auto-generated:\"\n];\n/**\n* Negation markers used in polarity-flip contradiction detection.\n* A contradiction is signalled when exactly one of two related entries\n* contains one of these markers near shared keyword overlap.\n*/\nvar NEGATION_MARKERS = [\n\t\"not\",\n\t\"never\",\n\t\"no longer\",\n\t\"deprecated\",\n\t\"removed\",\n\t\"replaced\",\n\t\"broken\",\n\t\"avoid\",\n\t\"do not\",\n\t\"don't\",\n\t\"invalid\",\n\t\"obsolete\"\n];\n/**\n* Compute a short SHA-256 prefix over the normalised text content.\n* Used for exact-duplicate detection without embedding.\n*/\nfunction contentHashPrefix(text) {\n\treturn createHash(\"sha256\").update(text.trim().toLowerCase()).digest(\"hex\").slice(0, 16);\n}\n/**\n* Polarity-flip contradiction heuristic.\n*\n* Returns true when exactly one of the two texts carries a negation marker\n* AND both texts share at least 3 meaningful keywords (>4 chars).\n*\n* This is intentionally approximate — false positives cause a supersede\n* write (safe), false negatives allow a duplicate (harmless, caught later\n* by cosine merge).\n*/\nfunction hasContradictingPolarity(existingText, newText) {\n\tconst existingLower = existingText.toLowerCase();\n\tconst newLower = newText.toLowerCase();\n\tif (NEGATION_MARKERS.some((m) => existingLower.includes(m)) === NEGATION_MARKERS.some((m) => newLower.includes(m))) return false;\n\tconst existingWords = new Set(existingLower.split(/\\s+/).filter((w) => w.length > 4));\n\treturn [...new Set(newLower.split(/\\s+/).filter((w) => w.length > 4))].filter((w) => existingWords.has(w)).length >= 3;\n}\n/**\n* Mark an existing entry as invalid (superseded).\n* Sets the invalid_at column to now on whichever typed table owns the entry.\n*\n* Determined by ID prefix conventions:\n* D... → brain_decisions\n* P... → brain_patterns\n* L... → brain_learnings\n* O... / CM-... → brain_observations\n*/\nasync function invalidateEntry(projectRoot, entryId) {\n\tconst now = (/* @__PURE__ */ new Date()).toISOString().replace(\"T\", \" \").slice(0, 19);\n\ttry {\n\t\tconst { getBrainNativeDb, getBrainDb } = await import(\"./memory-sqlite2.js\");\n\t\tawait getBrainDb(projectRoot);\n\t\tconst nativeDb = getBrainNativeDb(projectRoot);\n\t\tif (!nativeDb) return;\n\t\tif (entryId.startsWith(\"D-\") || /^D\\d/.test(entryId)) nativeDb.prepare(\"UPDATE brain_decisions SET invalid_at = ? WHERE id = ? AND invalid_at IS NULL\").run(now, entryId);\n\t\telse if (entryId.startsWith(\"P-\") || /^P\\d/.test(entryId)) nativeDb.prepare(\"UPDATE brain_patterns SET invalid_at = ? WHERE id = ? AND invalid_at IS NULL\").run(now, entryId);\n\t\telse if (entryId.startsWith(\"L-\") || /^L\\d/.test(entryId)) nativeDb.prepare(\"UPDATE brain_learnings SET invalid_at = ? WHERE id = ? AND invalid_at IS NULL\").run(now, entryId);\n\t\telse nativeDb.prepare(\"UPDATE brain_observations SET invalid_at = ? WHERE id = ? AND invalid_at IS NULL\").run(now, entryId);\n\t} catch {}\n}\n/**\n* Increment the citation_count of an existing entry by 1.\n* Routes by the same ID-prefix convention as invalidateEntry.\n*/\nasync function incrementCitationCount(projectRoot, entryId) {\n\ttry {\n\t\tconst { getBrainNativeDb, getBrainDb } = await import(\"./memory-sqlite2.js\");\n\t\tawait getBrainDb(projectRoot);\n\t\tconst nativeDb = getBrainNativeDb(projectRoot);\n\t\tif (!nativeDb) return;\n\t\tif (entryId.startsWith(\"D-\") || /^D\\d/.test(entryId)) nativeDb.prepare(\"UPDATE brain_decisions SET citation_count = citation_count + 1 WHERE id = ?\").run(entryId);\n\t\telse if (entryId.startsWith(\"P-\") || /^P\\d/.test(entryId)) nativeDb.prepare(\"UPDATE brain_patterns SET citation_count = citation_count + 1 WHERE id = ?\").run(entryId);\n\t\telse if (entryId.startsWith(\"L-\") || /^L\\d/.test(entryId)) nativeDb.prepare(\"UPDATE brain_learnings SET citation_count = citation_count + 1 WHERE id = ?\").run(entryId);\n\t\telse nativeDb.prepare(\"UPDATE brain_observations SET citation_count = citation_count + 1 WHERE id = ?\").run(entryId);\n\t} catch {}\n}\n/**\n* Check A: SHA-256 content-hash deduplication for any of the four brain tables.\n*\n* Queries the specified table for a row with a matching content_hash that is\n* still valid (invalid_at IS NULL). When a match is found, returns 'merged'\n* so the caller avoids a duplicate insert and instead increments citation_count\n* on the existing row.\n*\n* T737: Extended from observations-only to all four typed tables. Each table\n* now has the content_hash column (migration 20260416000005_t726-dedup-tier-columns).\n*\n* @param projectRoot - Project root for brain.db access\n* @param table - Which typed table to search\n* @param text - Candidate content text (hashed internally)\n*/\nasync function hashDedupCheck(projectRoot, text, table = \"brain_observations\") {\n\ttry {\n\t\tconst { getBrainNativeDb, getBrainDb } = await import(\"./memory-sqlite2.js\");\n\t\tawait getBrainDb(projectRoot);\n\t\tconst nativeDb = getBrainNativeDb(projectRoot);\n\t\tif (!nativeDb) return { matched: false };\n\t\tconst hash = contentHashPrefix(text);\n\t\tconst rows = nativeDb.prepare(`SELECT id FROM ${table} WHERE content_hash = ? AND invalid_at IS NULL LIMIT 1`).all(hash);\n\t\tif (rows.length > 0) return {\n\t\t\tmatched: true,\n\t\t\tid: rows[0].id\n\t\t};\n\t} catch {}\n\treturn { matched: false };\n}\n/**\n* Determine whether the candidate is from a trusted source that bypasses\n* the similarity/contradiction checks (Checks B).\n*\n* Trusted: explicit candidate.trusted flag, source='manual', or\n* sourceConfidence='owner' or 'task-outcome'.\n*/\nfunction isTrustedSource(candidate) {\n\tif (candidate.trusted === true) return true;\n\tif (candidate.source === \"manual\") return true;\n\tif (candidate.sourceConfidence === \"owner\" || candidate.sourceConfidence === \"task-outcome\") return true;\n\treturn false;\n}\n/**\n* Public SHA-256 content-hash deduplication check.\n*\n* Exported for use by write paths (llm-extraction.ts, decisions.ts, patterns.ts)\n* that need to run hash dedup before an INSERT without going through the full\n* verifyCandidate gate (T736, T737).\n*\n* @param projectRoot - Project root for brain.db access\n* @param text - Candidate content text (hashed internally)\n* @param table - Which typed table to probe\n*/\nasync function checkHashDedup(projectRoot, text, table) {\n\treturn hashDedupCheck(projectRoot, text, table);\n}\n/**\n* Run a MemoryCandidate through the verification gate.\n*\n* Checks (in order):\n* A0. Title-prefix blocklist (T993) — rejects known-noise titles before any DB work\n* A. Content-hash deduplication (always; degrades to observations-only when DB unavailable)\n* B. Cosine similarity deduplication + contradiction detection (skipped for trusted sources)\n* C. Confidence threshold >= 0.40 (always)\n*\n* The gate NEVER stores the entry itself — it only decides whether the caller\n* should store, merge into an existing entry, queue as pending, or reject.\n*\n* To store after receiving action='stored', call the appropriate storage\n* function (observeBrain, storeLearning, storePattern, storeDecision).\n*\n* @param projectRoot - Project root for brain.db access\n* @param candidate - Candidate to verify\n* @returns GateResult describing what should happen\n*/\nasync function verifyCandidate(projectRoot, candidate) {\n\ttry {\n\t\tconst candidateTitle = candidate.title ?? \"\";\n\t\tif (BRAIN_NOISE_PREFIXES.some((prefix) => candidateTitle.startsWith(prefix))) return {\n\t\t\taction: \"rejected\",\n\t\t\tid: null,\n\t\t\treason: \"noise-prefix\"\n\t\t};\n\t\tconst dedupTable = candidate.memoryType === \"semantic\" ? \"brain_learnings\" : candidate.memoryType === \"procedural\" ? \"brain_patterns\" : \"brain_observations\";\n\t\tconst hashCheck = await hashDedupCheck(projectRoot, candidate.text, dedupTable);\n\t\tif (hashCheck.matched) {\n\t\t\tincrementCitationCount(projectRoot, hashCheck.id).catch(() => void 0);\n\t\t\treturn {\n\t\t\t\taction: \"merged\",\n\t\t\t\tid: hashCheck.id,\n\t\t\t\treason: `exact-duplicate (hash match) of ${hashCheck.id}`\n\t\t\t};\n\t\t}\n\t\tif (!isTrustedSource(candidate) && isEmbeddingAvailable()) try {\n\t\t\tconst similar = await searchSimilar(candidate.text, projectRoot, 5);\n\t\t\tif (similar.length > 0) {\n\t\t\t\tconst nearest = similar[0];\n\t\t\t\tif (nearest.distance < DUPLICATE_THRESHOLD) {\n\t\t\t\t\tincrementCitationCount(projectRoot, nearest.id).catch(() => void 0);\n\t\t\t\t\treturn {\n\t\t\t\t\t\taction: \"merged\",\n\t\t\t\t\t\tid: nearest.id,\n\t\t\t\t\t\treason: `near-duplicate of ${nearest.id} (cosine distance=${nearest.distance.toFixed(3)})`,\n\t\t\t\t\t\tsimilarity: nearest.distance\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (nearest.distance < SIMILAR_THRESHOLD) {\n\t\t\t\t\tif (hasContradictingPolarity(nearest.text, candidate.text)) {\n\t\t\t\t\t\tawait invalidateEntry(projectRoot, nearest.id);\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\taction: \"stored\",\n\t\t\t\t\t\t\tid: null,\n\t\t\t\t\t\t\treason: `contradiction-supersedes ${nearest.id}`,\n\t\t\t\t\t\t\tsimilarity: nearest.distance\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\taction: \"stored\",\n\t\t\t\t\t\tid: null,\n\t\t\t\t\t\treason: `similar-but-distinct to ${nearest.id} (distance=${nearest.distance.toFixed(3)})`,\n\t\t\t\t\t\tsimilarity: nearest.distance\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t} catch {}\n\t\tif (candidate.confidence < MINIMUM_CONFIDENCE) return {\n\t\t\taction: \"pending\",\n\t\t\tid: null,\n\t\t\treason: `confidence ${candidate.confidence.toFixed(2)} below minimum ${MINIMUM_CONFIDENCE}`\n\t\t};\n\t\treturn {\n\t\t\taction: \"stored\",\n\t\t\tid: null,\n\t\t\treason: \"verified-new\"\n\t\t};\n\t} catch (err) {\n\t\tconst message = err instanceof Error ? err.message : String(err);\n\t\tconsole.warn(`[extraction-gate] verifyCandidate error (allowing store): ${message}`);\n\t\treturn {\n\t\t\taction: \"stored\",\n\t\t\tid: null,\n\t\t\treason: `gate-error-passthrough: ${message}`\n\t\t};\n\t}\n}\n/**\n* Store a verified candidate in the appropriate BRAIN table based on memoryType.\n*\n* Routes:\n* semantic → brain_learnings (storeLearning)\n* episodic → brain_observations (observeBrain)\n* procedural → brain_patterns (storePattern)\n*\n* Called only after verifyCandidate returns action='stored'.\n*\n* @param projectRoot - Project root for brain.db access\n* @param candidate - Verified candidate to store\n* @returns ID of the newly created entry\n*/\nasync function storeVerifiedCandidate(projectRoot, candidate) {\n\tconst title = candidate.title ?? candidate.text.slice(0, 120);\n\tswitch (candidate.memoryType) {\n\t\tcase \"semantic\": {\n\t\t\tconst { storeLearning } = await import(\"./learnings.js\");\n\t\t\treturn (await storeLearning(projectRoot, {\n\t\t\t\tinsight: candidate.text,\n\t\t\t\tsource: candidate.source,\n\t\t\t\tconfidence: candidate.confidence,\n\t\t\t\tactionable: candidate.source === \"task-completion\",\n\t\t\t\t_skipGate: true\n\t\t\t})).id;\n\t\t}\n\t\tcase \"episodic\": {\n\t\t\tconst { observeBrain } = await import(\"./brain-retrieval2.js\");\n\t\t\treturn (await observeBrain(projectRoot, {\n\t\t\t\ttext: candidate.text,\n\t\t\t\ttitle,\n\t\t\t\tsourceSessionId: candidate.sourceSessionId,\n\t\t\t\tsourceType: candidate.source === \"manual\" ? \"manual\" : \"agent\",\n\t\t\t\t_skipGate: true\n\t\t\t})).id;\n\t\t}\n\t\tcase \"procedural\": {\n\t\t\tconst { storePattern } = await import(\"./patterns.js\");\n\t\t\treturn (await storePattern(projectRoot, {\n\t\t\t\ttype: \"workflow\",\n\t\t\t\tpattern: candidate.text,\n\t\t\t\tcontext: title,\n\t\t\t\t_skipGate: true\n\t\t\t})).id;\n\t\t}\n\t\tdefault: {\n\t\t\tconst { observeBrain } = await import(\"./brain-retrieval2.js\");\n\t\t\treturn (await observeBrain(projectRoot, {\n\t\t\t\ttext: candidate.text,\n\t\t\t\ttitle,\n\t\t\t\tsourceSessionId: candidate.sourceSessionId,\n\t\t\t\tsourceType: candidate.source === \"manual\" ? \"manual\" : \"agent\",\n\t\t\t\t_skipGate: true\n\t\t\t})).id;\n\t\t}\n\t}\n}\n/**\n* Full gate-and-store pipeline for a single candidate.\n*\n* Runs verifyCandidate then calls storeVerifiedCandidate when action='stored'.\n* For 'merged', increments the existing entry's citation_count (already done inside verifyCandidate).\n* For 'pending' and 'rejected', returns the GateResult with no storage.\n*\n* After storage, adds a supersedes edge when the gate returned a contradiction reason.\n*\n* @param projectRoot - Project root for brain.db access\n* @param candidate - Candidate to verify and store\n* @returns Final GateResult with the stored/merged entry ID populated\n*/\nasync function verifyAndStore(projectRoot, candidate) {\n\tconst gateResult = await verifyCandidate(projectRoot, candidate);\n\tif (gateResult.action !== \"stored\") return gateResult;\n\ttry {\n\t\tconst newId = await storeVerifiedCandidate(projectRoot, candidate);\n\t\tif (gateResult.reason.startsWith(\"contradiction-supersedes \")) {\n\t\t\tconst oldId = gateResult.reason.replace(\"contradiction-supersedes \", \"\");\n\t\t\taddGraphEdge(projectRoot, `observation:${newId}`, `observation:${oldId}`, \"supersedes\", 1, \"extraction-gate\").catch(() => void 0);\n\t\t}\n\t\treturn {\n\t\t\t...gateResult,\n\t\t\tid: newId\n\t\t};\n\t} catch (err) {\n\t\treturn {\n\t\t\taction: \"rejected\",\n\t\t\tid: null,\n\t\t\treason: `storage-error: ${err instanceof Error ? err.message : String(err)}`\n\t\t};\n\t}\n}\n//#endregion\nexport { verifyCandidate as a, verifyAndStore as i, checkHashDedup as n, storeVerifiedCandidate as r, BRAIN_NOISE_PREFIXES as t };\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"getSSOTokenFromFile-yZAJxDci.js","sources":["../../../.svelte-kit/adapter-node/chunks/getSSOTokenFromFile.js"],"sourcesContent":["import { r as getHomeDir } from \"./readFile.js\";\nimport { join } from \"node:path\";\nimport { createHash } from \"node:crypto\";\nimport { readFile } from \"node:fs/promises\";\n//#region ../../node_modules/.pnpm/@smithy+core@3.24.3/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/getSSOTokenFilepath.js\nvar getSSOTokenFilepath = (id) => {\n\tconst cacheName = createHash(\"sha1\").update(id).digest(\"hex\");\n\treturn join(getHomeDir(), \".aws\", \"sso\", \"cache\", `${cacheName}.json`);\n};\n//#endregion\n//#region ../../node_modules/.pnpm/@smithy+core@3.24.3/node_modules/@smithy/core/dist-es/submodules/config/shared-ini-file-loader/getSSOTokenFromFile.js\nvar tokenIntercept = {};\nvar getSSOTokenFromFile = async (id) => {\n\tif (tokenIntercept[id]) return tokenIntercept[id];\n\tconst ssoTokenText = await readFile(getSSOTokenFilepath(id), \"utf8\");\n\treturn JSON.parse(ssoTokenText);\n};\n//#endregion\nexport { tokenIntercept as n, getSSOTokenFilepath as r, getSSOTokenFromFile as t };\n"],"names":[],"mappings":";;;;;AAIA;AACG,IAAC,mBAAmB,GAAG,CAAC,EAAE,KAAK;AAClC,CAAC,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAC9D,CAAC,OAAO,IAAI,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;AACvE;AACA;AACA;AACG,IAAC,cAAc,GAAG;AAClB,IAAC,mBAAmB,GAAG,OAAO,EAAE,KAAK;AACxC,CAAC,IAAI,cAAc,CAAC,EAAE,CAAC,EAAE,OAAO,cAAc,CAAC,EAAE,CAAC;AAClD,CAAC,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;AACrE,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;AAChC;;;;"}