@unbrained/pm-cli 2026.7.1 → 2026.7.2

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 (563) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/cli/commander-usage.d.ts +2 -0
  3. package/dist/cli/commander-usage.js +58 -47
  4. package/dist/cli/commander-usage.js.map +1 -1
  5. package/dist/cli/commands/aggregate.js +102 -79
  6. package/dist/cli/commands/aggregate.js.map +1 -1
  7. package/dist/cli/commands/calendar.js +278 -243
  8. package/dist/cli/commands/calendar.js.map +1 -1
  9. package/dist/cli/commands/close-many.js +89 -68
  10. package/dist/cli/commands/close-many.js.map +1 -1
  11. package/dist/cli/commands/close.js +157 -129
  12. package/dist/cli/commands/close.js.map +1 -1
  13. package/dist/cli/commands/comments-audit.js +50 -42
  14. package/dist/cli/commands/comments-audit.js.map +1 -1
  15. package/dist/cli/commands/config.d.ts +2 -0
  16. package/dist/cli/commands/config.js +443 -879
  17. package/dist/cli/commands/config.js.map +1 -1
  18. package/dist/cli/commands/context.js +365 -287
  19. package/dist/cli/commands/context.js.map +1 -1
  20. package/dist/cli/commands/contracts.js +352 -238
  21. package/dist/cli/commands/contracts.js.map +1 -1
  22. package/dist/cli/commands/dedupe-audit.js +46 -39
  23. package/dist/cli/commands/dedupe-audit.js.map +1 -1
  24. package/dist/cli/commands/dedupe-merge.js +88 -69
  25. package/dist/cli/commands/dedupe-merge.js.map +1 -1
  26. package/dist/cli/commands/get.js +114 -81
  27. package/dist/cli/commands/get.js.map +1 -1
  28. package/dist/cli/commands/health.d.ts +17 -0
  29. package/dist/cli/commands/health.js +446 -307
  30. package/dist/cli/commands/health.js.map +1 -1
  31. package/dist/cli/commands/history-compact.js +209 -140
  32. package/dist/cli/commands/history-compact.js.map +1 -1
  33. package/dist/cli/commands/history-redact.js +162 -119
  34. package/dist/cli/commands/history-redact.js.map +1 -1
  35. package/dist/cli/commands/history-repair.js +120 -85
  36. package/dist/cli/commands/history-repair.js.map +1 -1
  37. package/dist/cli/commands/init.d.ts +8 -2
  38. package/dist/cli/commands/init.js +263 -162
  39. package/dist/cli/commands/init.js.map +1 -1
  40. package/dist/cli/commands/list.js +152 -102
  41. package/dist/cli/commands/list.js.map +1 -1
  42. package/dist/cli/commands/next.js +49 -32
  43. package/dist/cli/commands/next.js.map +1 -1
  44. package/dist/cli/commands/plan.js +373 -298
  45. package/dist/cli/commands/plan.js.map +1 -1
  46. package/dist/cli/commands/recurrence-parsers.js +43 -25
  47. package/dist/cli/commands/recurrence-parsers.js.map +1 -1
  48. package/dist/cli/commands/reindex.d.ts +21 -5
  49. package/dist/cli/commands/reindex.js +345 -205
  50. package/dist/cli/commands/reindex.js.map +1 -1
  51. package/dist/cli/commands/restore.d.ts +8 -7
  52. package/dist/cli/commands/restore.js +105 -69
  53. package/dist/cli/commands/restore.js.map +1 -1
  54. package/dist/cli/commands/schema.js +33 -30
  55. package/dist/cli/commands/schema.js.map +1 -1
  56. package/dist/cli/commands/search.d.ts +10 -2
  57. package/dist/cli/commands/search.js +503 -470
  58. package/dist/cli/commands/search.js.map +1 -1
  59. package/dist/cli/commands/telemetry.js +98 -87
  60. package/dist/cli/commands/telemetry.js.map +1 -1
  61. package/dist/cli/commands/test-all.js +237 -168
  62. package/dist/cli/commands/test-all.js.map +1 -1
  63. package/dist/cli/commands/test.d.ts +6 -5
  64. package/dist/cli/commands/test.js +424 -344
  65. package/dist/cli/commands/test.js.map +1 -1
  66. package/dist/cli/commands/update-many.js +57 -42
  67. package/dist/cli/commands/update-many.js.map +1 -1
  68. package/dist/cli/commands/update.d.ts +1 -1
  69. package/dist/cli/commands/update.js +738 -671
  70. package/dist/cli/commands/update.js.map +1 -1
  71. package/dist/cli/commands/validate.d.ts +18 -1
  72. package/dist/cli/commands/validate.js +466 -343
  73. package/dist/cli/commands/validate.js.map +1 -1
  74. package/dist/cli/error-guidance.js +399 -357
  75. package/dist/cli/error-guidance.js.map +1 -1
  76. package/dist/cli/main.d.ts +47 -0
  77. package/dist/cli/main.js +428 -341
  78. package/dist/cli/main.js.map +1 -1
  79. package/dist/cli/migration-gates.js +22 -45
  80. package/dist/cli/migration-gates.js.map +1 -1
  81. package/dist/cli/register-list-query.js +94 -105
  82. package/dist/cli/register-list-query.js.map +1 -1
  83. package/dist/cli/register-mutation.js +400 -416
  84. package/dist/cli/register-mutation.js.map +1 -1
  85. package/dist/cli/register-operations.js +86 -66
  86. package/dist/cli/register-operations.js.map +1 -1
  87. package/dist/cli/register-setup.js +120 -101
  88. package/dist/cli/register-setup.js.map +1 -1
  89. package/dist/cli-bundle/chunks/{activity-DBLQVIP6.js → activity-CUC4JY3U.js} +9 -9
  90. package/dist/cli-bundle/chunks/activity-WEIEMM73.js +16 -0
  91. package/dist/cli-bundle/chunks/{aggregate-JTEF4BP7.js → aggregate-DKUTRY6R.js} +108 -84
  92. package/dist/cli-bundle/chunks/aggregate-DKUTRY6R.js.map +1 -0
  93. package/dist/cli-bundle/chunks/{aggregate-SDF7DUOD.js → aggregate-SW5PNGCS.js} +107 -83
  94. package/dist/cli-bundle/chunks/{aggregate-SDF7DUOD.js.map → aggregate-SW5PNGCS.js.map} +2 -2
  95. package/dist/cli-bundle/chunks/{append-QCFJSDFL.js → append-H32VOR2Y.js} +6 -6
  96. package/dist/cli-bundle/chunks/{append-LOVPGVPT.js → append-UBM632FK.js} +6 -6
  97. package/dist/cli-bundle/chunks/{chunk-RLDHZHQS.js → chunk-2227673O.js} +158 -114
  98. package/dist/cli-bundle/chunks/chunk-2227673O.js.map +1 -0
  99. package/dist/cli-bundle/chunks/{chunk-SLMUGTK3.js → chunk-2ASNV4DH.js} +4 -4
  100. package/dist/cli-bundle/chunks/{chunk-UZIWVBE6.js → chunk-2CHRYUXL.js} +2 -2
  101. package/dist/cli-bundle/chunks/{chunk-NWMZWYYB.js → chunk-2KWL5NPW.js} +42 -27
  102. package/dist/cli-bundle/chunks/chunk-2KWL5NPW.js.map +1 -0
  103. package/dist/cli-bundle/chunks/{chunk-NFDPYAIP.js → chunk-36UGKF4O.js} +21 -29
  104. package/dist/cli-bundle/chunks/chunk-36UGKF4O.js.map +7 -0
  105. package/dist/cli-bundle/chunks/{chunk-NU2UEROZ.js → chunk-3AZUFQK6.js} +6 -6
  106. package/dist/cli-bundle/chunks/{chunk-LB6TP6MC.js → chunk-3LCUASYG.js} +2 -2
  107. package/dist/cli-bundle/chunks/{chunk-HPPFYYOV.js → chunk-3Q2HBMTI.js} +2 -2
  108. package/dist/cli-bundle/chunks/{chunk-IPYBJWTE.js → chunk-4NUOWFBT.js} +109 -72
  109. package/dist/cli-bundle/chunks/chunk-4NUOWFBT.js.map +7 -0
  110. package/dist/cli-bundle/chunks/{chunk-W4ULYO7Z.js → chunk-55XRYWEG.js} +6 -6
  111. package/dist/cli-bundle/chunks/{chunk-HXTQJXWT.js → chunk-5GVTFFTC.js} +2 -2
  112. package/dist/cli-bundle/chunks/{chunk-BDTISOSD.js → chunk-5PGBHRY3.js} +41 -26
  113. package/dist/cli-bundle/chunks/chunk-5PGBHRY3.js.map +7 -0
  114. package/dist/cli-bundle/chunks/{chunk-YITK2PJ6.js → chunk-66Z3X7ZG.js} +261 -161
  115. package/dist/cli-bundle/chunks/chunk-66Z3X7ZG.js.map +7 -0
  116. package/dist/cli-bundle/chunks/{chunk-NUHHPVVS.js → chunk-6ITZLD4T.js} +712 -612
  117. package/dist/cli-bundle/chunks/chunk-6ITZLD4T.js.map +7 -0
  118. package/dist/cli-bundle/chunks/{chunk-V3NOKJF2.js → chunk-6YCYF2AI.js} +262 -162
  119. package/dist/cli-bundle/chunks/chunk-6YCYF2AI.js.map +1 -0
  120. package/dist/cli-bundle/chunks/{chunk-BZCEN4JA.js → chunk-6ZMBJRDJ.js} +492 -403
  121. package/dist/cli-bundle/chunks/chunk-6ZMBJRDJ.js.map +7 -0
  122. package/dist/cli-bundle/chunks/{chunk-CF7RL6FR.js → chunk-7MYWF4ZX.js} +110 -73
  123. package/dist/cli-bundle/chunks/chunk-7MYWF4ZX.js.map +1 -0
  124. package/dist/cli-bundle/chunks/{chunk-RVUALSJF.js → chunk-7NSPKJUS.js} +356 -285
  125. package/dist/cli-bundle/chunks/chunk-7NSPKJUS.js.map +7 -0
  126. package/dist/cli-bundle/chunks/{chunk-4DSGXSBL.js → chunk-7TH5NMVB.js} +95 -53
  127. package/dist/cli-bundle/chunks/chunk-7TH5NMVB.js.map +7 -0
  128. package/dist/cli-bundle/chunks/{chunk-ZETXE4SE.js → chunk-7W4H4K26.js} +713 -613
  129. package/dist/cli-bundle/chunks/chunk-7W4H4K26.js.map +1 -0
  130. package/dist/cli-bundle/chunks/{chunk-64HNBBFQ.js → chunk-A6VOGKBA.js} +6 -6
  131. package/dist/cli-bundle/chunks/{chunk-WYDHYJPO.js → chunk-AIAIXG7I.js} +2 -2
  132. package/dist/cli-bundle/chunks/{chunk-CWFNTKQJ.js → chunk-AJEBCRIY.js} +5 -5
  133. package/dist/cli-bundle/chunks/{chunk-VZDBVEZR.js → chunk-B4O5S7I3.js} +79 -57
  134. package/dist/cli-bundle/chunks/{chunk-VZDBVEZR.js.map → chunk-B4O5S7I3.js.map} +2 -2
  135. package/dist/cli-bundle/chunks/{chunk-NOLPZMSV.js → chunk-BTX5MIQF.js} +2 -2
  136. package/dist/cli-bundle/chunks/{chunk-RH5ZBYFD.js → chunk-BVZZN2LH.js} +3 -3
  137. package/dist/cli-bundle/chunks/{chunk-27BXPBAY.js → chunk-CYBDUHNO.js} +3 -3
  138. package/dist/cli-bundle/chunks/{chunk-A7FPBAQS.js → chunk-CZPVDLD2.js} +4 -4
  139. package/dist/cli-bundle/chunks/{chunk-3VGN2UWE.js → chunk-EMPGXBUF.js} +22 -30
  140. package/dist/cli-bundle/chunks/chunk-EMPGXBUF.js.map +1 -0
  141. package/dist/cli-bundle/chunks/{chunk-JPECA746.js → chunk-EUKTMRN3.js} +2 -2
  142. package/dist/cli-bundle/chunks/{chunk-2466X6E4.js → chunk-FFOQHGNH.js} +6 -6
  143. package/dist/cli-bundle/chunks/{chunk-JLM7BHI7.js → chunk-GFMSLORL.js} +6 -6
  144. package/dist/cli-bundle/chunks/{chunk-SDR5J34Q.js → chunk-GRRG3MCT.js} +4 -4
  145. package/dist/cli-bundle/chunks/{chunk-GJ326ZKX.js → chunk-H4GRLYJS.js} +3 -3
  146. package/dist/cli-bundle/chunks/{chunk-OGXLACHC.js → chunk-HQTPRV4D.js} +6 -6
  147. package/dist/cli-bundle/chunks/{chunk-7R4QEMZZ.js → chunk-I66WE2HE.js} +354 -283
  148. package/dist/cli-bundle/chunks/chunk-I66WE2HE.js.map +1 -0
  149. package/dist/cli-bundle/chunks/{chunk-BHO33VBQ.js → chunk-IEEJQCZ4.js} +3 -3
  150. package/dist/cli-bundle/chunks/{chunk-JMP4E6D7.js → chunk-IG5JYZGU.js} +390 -312
  151. package/dist/cli-bundle/chunks/{chunk-JMP4E6D7.js.map → chunk-IG5JYZGU.js.map} +2 -2
  152. package/dist/cli-bundle/chunks/{chunk-4DUVCVLZ.js → chunk-JMK5GCK2.js} +2 -2
  153. package/dist/cli-bundle/chunks/{chunk-3K2M5OYU.js → chunk-JXAUVO6X.js} +258 -169
  154. package/dist/cli-bundle/chunks/{chunk-3K2M5OYU.js.map → chunk-JXAUVO6X.js.map} +2 -2
  155. package/dist/cli-bundle/chunks/{chunk-AXIDKKAT.js → chunk-K2VYLVX4.js} +2 -2
  156. package/dist/cli-bundle/chunks/{chunk-EJUDVUYZ.js → chunk-KCO2EAN5.js} +3 -3
  157. package/dist/cli-bundle/chunks/{chunk-6AQZPVHQ.js → chunk-KIYCOJ63.js} +4 -4
  158. package/dist/cli-bundle/chunks/{chunk-ZRP4VG5U.js → chunk-KLXF7NCC.js} +2 -2
  159. package/dist/cli-bundle/chunks/{chunk-QCWF6IYD.js → chunk-KN3URLKS.js} +3 -3
  160. package/dist/cli-bundle/chunks/{chunk-N74UMG5H.js → chunk-LRKMWUUV.js} +2 -2
  161. package/dist/cli-bundle/chunks/{chunk-AVEE5EHK.js → chunk-LTRAF2D7.js} +3 -3
  162. package/dist/cli-bundle/chunks/{chunk-VARHOHYV.js → chunk-MNBPX5JS.js} +55 -36
  163. package/dist/cli-bundle/chunks/chunk-MNBPX5JS.js.map +7 -0
  164. package/dist/cli-bundle/chunks/{chunk-IJYK2T43.js → chunk-MRD4T5LF.js} +2 -2
  165. package/dist/cli-bundle/chunks/{chunk-G7I7DEZA.js → chunk-N2JSWVWG.js} +4 -4
  166. package/dist/cli-bundle/chunks/{chunk-5QFDBI4F.js → chunk-N3QCJS4M.js} +6 -6
  167. package/dist/cli-bundle/chunks/{chunk-JSU5P7VS.js → chunk-NRZS637N.js} +258 -169
  168. package/dist/cli-bundle/chunks/chunk-NRZS637N.js.map +1 -0
  169. package/dist/cli-bundle/chunks/{chunk-4A3BJ675.js → chunk-OTUJZKGI.js} +3 -3
  170. package/dist/cli-bundle/chunks/{chunk-5CGRF3L5.js → chunk-Q6K2OACU.js} +153 -90
  171. package/dist/cli-bundle/chunks/chunk-Q6K2OACU.js.map +1 -0
  172. package/dist/cli-bundle/chunks/{chunk-3XZCOZ5J.js → chunk-Q6NXOHS6.js} +391 -313
  173. package/dist/cli-bundle/chunks/chunk-Q6NXOHS6.js.map +1 -0
  174. package/dist/cli-bundle/chunks/{chunk-HZZEHPRG.js → chunk-QH3FSKRJ.js} +2 -2
  175. package/dist/cli-bundle/chunks/{chunk-4XOIEKSD.js → chunk-RM37OPYK.js} +56 -37
  176. package/dist/cli-bundle/chunks/chunk-RM37OPYK.js.map +1 -0
  177. package/dist/cli-bundle/chunks/{chunk-NKZAN7BD.js → chunk-S62UANU7.js} +3 -3
  178. package/dist/cli-bundle/chunks/{chunk-RMMQ74TG.js → chunk-SPM2XLWI.js} +37 -28
  179. package/dist/cli-bundle/chunks/chunk-SPM2XLWI.js.map +7 -0
  180. package/dist/cli-bundle/chunks/{chunk-3J6JRJ3I.js → chunk-SYNKD3ZG.js} +5 -5
  181. package/dist/cli-bundle/chunks/{chunk-FFMQB7WR.js → chunk-SYVUU7EK.js} +493 -404
  182. package/dist/cli-bundle/chunks/chunk-SYVUU7EK.js.map +1 -0
  183. package/dist/cli-bundle/chunks/{chunk-UYUYDGIB.js → chunk-TPOFWBMY.js} +95 -53
  184. package/dist/cli-bundle/chunks/chunk-TPOFWBMY.js.map +1 -0
  185. package/dist/cli-bundle/chunks/{chunk-OTUHB4HS.js → chunk-TTHCEV5Q.js} +92 -77
  186. package/dist/cli-bundle/chunks/chunk-TTHCEV5Q.js.map +1 -0
  187. package/dist/cli-bundle/chunks/{chunk-L5OEFZQG.js → chunk-U2BEEM2X.js} +3 -3
  188. package/dist/cli-bundle/chunks/{chunk-KNPEF7QG.js → chunk-UGLU6Q2I.js} +91 -76
  189. package/dist/cli-bundle/chunks/chunk-UGLU6Q2I.js.map +7 -0
  190. package/dist/cli-bundle/chunks/{chunk-EVMTBV6V.js → chunk-UT73HUPC.js} +3 -3
  191. package/dist/cli-bundle/chunks/{chunk-VICZWYGZ.js → chunk-UTSH5GWX.js} +4 -4
  192. package/dist/cli-bundle/chunks/{chunk-IZBR4NRW.js → chunk-UWKEJMZU.js} +157 -113
  193. package/dist/cli-bundle/chunks/chunk-UWKEJMZU.js.map +7 -0
  194. package/dist/cli-bundle/chunks/{chunk-3S2KT7NG.js → chunk-W47SML5B.js} +152 -89
  195. package/dist/cli-bundle/chunks/chunk-W47SML5B.js.map +7 -0
  196. package/dist/cli-bundle/chunks/{chunk-RGEMWD6Q.js → chunk-WJAMWAHZ.js} +157 -118
  197. package/dist/cli-bundle/chunks/chunk-WJAMWAHZ.js.map +7 -0
  198. package/dist/cli-bundle/chunks/{chunk-JWXRETDF.js → chunk-XCHUVHKU.js} +626 -484
  199. package/dist/cli-bundle/chunks/chunk-XCHUVHKU.js.map +1 -0
  200. package/dist/cli-bundle/chunks/{chunk-55SNVXRQ.js → chunk-XEWQKDYZ.js} +626 -484
  201. package/dist/cli-bundle/chunks/chunk-XEWQKDYZ.js.map +7 -0
  202. package/dist/cli-bundle/chunks/{chunk-TP5Q5ZD3.js → chunk-XTHQWXVC.js} +158 -119
  203. package/dist/cli-bundle/chunks/chunk-XTHQWXVC.js.map +1 -0
  204. package/dist/cli-bundle/chunks/{chunk-MDPEOIGN.js → chunk-XWGEMNBR.js} +2 -2
  205. package/dist/cli-bundle/chunks/{chunk-HYTGA6GI.js → chunk-Y4NRKBFW.js} +3 -3
  206. package/dist/cli-bundle/chunks/{chunk-2D4HATP2.js → chunk-YLZZ6T54.js} +38 -29
  207. package/dist/cli-bundle/chunks/chunk-YLZZ6T54.js.map +1 -0
  208. package/dist/cli-bundle/chunks/{chunk-22WKIL3H.js → chunk-YPKFV2JR.js} +6 -6
  209. package/dist/cli-bundle/chunks/{chunk-OKQ22KTH.js → chunk-Z4DGFQDH.js} +80 -58
  210. package/dist/cli-bundle/chunks/{chunk-OKQ22KTH.js.map → chunk-Z4DGFQDH.js.map} +1 -1
  211. package/dist/cli-bundle/chunks/{chunk-DDPTYJIM.js → chunk-ZNHEYCDD.js} +2 -2
  212. package/dist/cli-bundle/chunks/{chunk-MAUKX7JC.js → chunk-ZNT7KEWE.js} +2 -2
  213. package/dist/cli-bundle/chunks/{claim-T3GCKV7C.js → claim-SENTPZBN.js} +8 -8
  214. package/dist/cli-bundle/chunks/{claim-EMQLYPRW.js → claim-Z7MEQCBT.js} +8 -8
  215. package/dist/cli-bundle/chunks/{close-TQYAAFJP.js → close-424MX4CU.js} +7 -7
  216. package/dist/cli-bundle/chunks/close-YCWQQPDS.js +14 -0
  217. package/dist/cli-bundle/chunks/{close-many-LDRVEQY2.js → close-many-2IV4J2TR.js} +102 -81
  218. package/dist/cli-bundle/chunks/close-many-2IV4J2TR.js.map +1 -0
  219. package/dist/cli-bundle/chunks/{close-many-BG5QQIDQ.js → close-many-SWY34BII.js} +101 -80
  220. package/dist/cli-bundle/chunks/close-many-SWY34BII.js.map +7 -0
  221. package/dist/cli-bundle/chunks/{comments-YUXJRZPQ.js → comments-4FGNTSNV.js} +8 -8
  222. package/dist/cli-bundle/chunks/{comments-QCKR2YY2.js → comments-7YS5MY5X.js} +8 -8
  223. package/dist/cli-bundle/chunks/config-BZJKK7FZ.js +1062 -0
  224. package/dist/cli-bundle/chunks/config-BZJKK7FZ.js.map +1 -0
  225. package/dist/cli-bundle/chunks/config-G74GISC4.js +1072 -0
  226. package/dist/cli-bundle/chunks/config-G74GISC4.js.map +7 -0
  227. package/dist/cli-bundle/chunks/{context-OCZ3FJ4Z.js → context-LHVKJSPJ.js} +12 -12
  228. package/dist/cli-bundle/chunks/{context-B6275WPX.js → context-ZQY54JNS.js} +12 -12
  229. package/dist/cli-bundle/chunks/{contracts-HN7ABKLP.js → contracts-CP2EZJC7.js} +320 -199
  230. package/dist/cli-bundle/chunks/contracts-CP2EZJC7.js.map +7 -0
  231. package/dist/cli-bundle/chunks/{contracts-W4FZVVD6.js → contracts-FIZLMP7O.js} +321 -200
  232. package/dist/cli-bundle/chunks/contracts-FIZLMP7O.js.map +1 -0
  233. package/dist/cli-bundle/chunks/{copy-DEM4DATS.js → copy-GYNQQPW2.js} +5 -5
  234. package/dist/cli-bundle/chunks/{copy-BTJOSKKT.js → copy-TLW7JTQT.js} +5 -5
  235. package/dist/cli-bundle/chunks/{create-RLRJMRTM.js → create-VSKYSOCD.js} +12 -12
  236. package/dist/cli-bundle/chunks/create-XTMAPS7I.js +28 -0
  237. package/dist/cli-bundle/chunks/{delete-LSVHAB4Y.js → delete-4W5JYCEG.js} +5 -5
  238. package/dist/cli-bundle/chunks/{delete-BHK7VB2Z.js → delete-ANTOTI2I.js} +5 -5
  239. package/dist/cli-bundle/chunks/{deps-XHYXWEPT.js → deps-HPPE6MJN.js} +5 -5
  240. package/dist/cli-bundle/chunks/{deps-4UDFJRUA.js → deps-ZQZN54EZ.js} +5 -5
  241. package/dist/cli-bundle/chunks/{docs-GYZNVS26.js → docs-RPOVFMP3.js} +7 -7
  242. package/dist/cli-bundle/chunks/{docs-26S44RXU.js → docs-XJNYBJGE.js} +7 -7
  243. package/dist/cli-bundle/chunks/{eval-PGRVIJQU.js → eval-DM6JBZTS.js} +10 -10
  244. package/dist/cli-bundle/chunks/{eval-UYF3ZPVO.js → eval-RFBI5FGS.js} +10 -10
  245. package/dist/cli-bundle/chunks/{extension-CPSLJQVE.js → extension-B3YY4WY5.js} +11 -11
  246. package/dist/cli-bundle/chunks/{extension-CXJ6RELI.js → extension-TTSEFQTS.js} +11 -11
  247. package/dist/cli-bundle/chunks/{files-NQHEXUZD.js → files-5D65CHGE.js} +7 -7
  248. package/dist/cli-bundle/chunks/{files-MBNICQFM.js → files-GPIG77EN.js} +7 -7
  249. package/dist/cli-bundle/chunks/{focus-XZW5423D.js → focus-C3PEJV2C.js} +6 -6
  250. package/dist/cli-bundle/chunks/{focus-DWYIG7GU.js → focus-ZHN7WIGX.js} +6 -6
  251. package/dist/cli-bundle/chunks/{gc-LPVMKJQJ.js → gc-D4JQ6OWN.js} +3 -3
  252. package/dist/cli-bundle/chunks/{gc-7GQYOS2G.js → gc-VZIXDL32.js} +3 -3
  253. package/dist/cli-bundle/chunks/{get-DSDEKJ3L.js → get-GIBRUUOP.js} +121 -81
  254. package/dist/cli-bundle/chunks/get-GIBRUUOP.js.map +1 -0
  255. package/dist/cli-bundle/chunks/{get-A7MAOHCU.js → get-IOVAN6RU.js} +120 -80
  256. package/dist/cli-bundle/chunks/get-IOVAN6RU.js.map +7 -0
  257. package/dist/cli-bundle/chunks/{health-3IPFLKXB.js → health-L2U3AFKV.js} +437 -265
  258. package/dist/cli-bundle/chunks/health-L2U3AFKV.js.map +1 -0
  259. package/dist/cli-bundle/chunks/{health-GZXGBZ36.js → health-MM7AWXYF.js} +436 -264
  260. package/dist/cli-bundle/chunks/health-MM7AWXYF.js.map +7 -0
  261. package/dist/cli-bundle/chunks/history-DD7L7BNL.js +18 -0
  262. package/dist/cli-bundle/chunks/{history-NERDJNUB.js → history-IL7XCEX2.js} +8 -8
  263. package/dist/cli-bundle/chunks/{history-compact-HR7BB4LR.js → history-compact-HALOTOU7.js} +214 -135
  264. package/dist/cli-bundle/chunks/history-compact-HALOTOU7.js.map +1 -0
  265. package/dist/cli-bundle/chunks/{history-compact-2WRZ2WK4.js → history-compact-MV25P7DM.js} +213 -134
  266. package/dist/cli-bundle/chunks/history-compact-MV25P7DM.js.map +7 -0
  267. package/dist/cli-bundle/chunks/history-redact-IX4YEWMY.js +19 -0
  268. package/dist/cli-bundle/chunks/{history-redact-O3NBCNWC.js → history-redact-VYCWQFK7.js} +9 -9
  269. package/dist/cli-bundle/chunks/{history-repair-XA3LC4GA.js → history-repair-44MODPQF.js} +124 -84
  270. package/dist/cli-bundle/chunks/history-repair-44MODPQF.js.map +1 -0
  271. package/dist/cli-bundle/chunks/{history-repair-LCMOS45X.js → history-repair-CPNAOCNF.js} +123 -83
  272. package/dist/cli-bundle/chunks/history-repair-CPNAOCNF.js.map +7 -0
  273. package/dist/cli-bundle/chunks/{init-64XDLQJB.js → init-F27NHENZ.js} +12 -12
  274. package/dist/cli-bundle/chunks/init-HHVQQP6C.js +22 -0
  275. package/dist/cli-bundle/chunks/{learnings-LPKCSJX7.js → learnings-HJVDQIGY.js} +8 -8
  276. package/dist/cli-bundle/chunks/{learnings-JR6MA5TI.js → learnings-XSFSUUWK.js} +8 -8
  277. package/dist/cli-bundle/chunks/{list-G5Y65VF6.js → list-HPMEKCAA.js} +8 -8
  278. package/dist/cli-bundle/chunks/{list-DNBJVO3E.js → list-VMPWTURB.js} +8 -8
  279. package/dist/cli-bundle/chunks/{next-BCERKDUR.js → next-ETXF2ZCN.js} +59 -37
  280. package/dist/cli-bundle/chunks/next-ETXF2ZCN.js.map +7 -0
  281. package/dist/cli-bundle/chunks/{next-FYTQF6HG.js → next-QM6YJIIS.js} +60 -38
  282. package/dist/cli-bundle/chunks/next-QM6YJIIS.js.map +1 -0
  283. package/dist/cli-bundle/chunks/{notes-2BMU3VVQ.js → notes-GDZIKGR6.js} +8 -8
  284. package/dist/cli-bundle/chunks/{notes-6KTGO2OJ.js → notes-WDDBPC4D.js} +8 -8
  285. package/dist/cli-bundle/chunks/{plan-RKZHQVXR.js → plan-BGDR73Z6.js} +373 -279
  286. package/dist/cli-bundle/chunks/plan-BGDR73Z6.js.map +1 -0
  287. package/dist/cli-bundle/chunks/{plan-4WXEQCTN.js → plan-C5IMM335.js} +372 -278
  288. package/dist/cli-bundle/chunks/plan-C5IMM335.js.map +7 -0
  289. package/dist/cli-bundle/chunks/{profile-QLER5ENE.js → profile-CCOKZ2IQ.js} +9 -9
  290. package/dist/cli-bundle/chunks/{profile-4OMM32CD.js → profile-HUCENIEQ.js} +9 -9
  291. package/dist/cli-bundle/chunks/{register-list-query-7LV46VAU.js → register-list-query-ROSNIL52.js} +80 -83
  292. package/dist/cli-bundle/chunks/register-list-query-ROSNIL52.js.map +1 -0
  293. package/dist/cli-bundle/chunks/{register-list-query-SNG5PGA4.js → register-list-query-XN4ZRHSV.js} +79 -82
  294. package/dist/cli-bundle/chunks/register-list-query-XN4ZRHSV.js.map +7 -0
  295. package/dist/cli-bundle/chunks/{register-mutation-ENNDUAZG.js → register-mutation-CFSB2MS3.js} +403 -382
  296. package/dist/cli-bundle/chunks/register-mutation-CFSB2MS3.js.map +1 -0
  297. package/dist/cli-bundle/chunks/{register-mutation-KK7PHYYU.js → register-mutation-KRLAHEL2.js} +402 -381
  298. package/dist/cli-bundle/chunks/register-mutation-KRLAHEL2.js.map +7 -0
  299. package/dist/cli-bundle/chunks/{register-operations-HZ6XERQG.js → register-operations-4PASGJDB.js} +112 -93
  300. package/dist/cli-bundle/chunks/register-operations-4PASGJDB.js.map +7 -0
  301. package/dist/cli-bundle/chunks/{register-operations-C6OWLDSH.js → register-operations-MBN4KGUM.js} +113 -94
  302. package/dist/cli-bundle/chunks/register-operations-MBN4KGUM.js.map +1 -0
  303. package/dist/cli-bundle/chunks/{register-setup-P67EMBDJ.js → register-setup-VIAWYFP5.js} +129 -104
  304. package/dist/cli-bundle/chunks/register-setup-VIAWYFP5.js.map +1 -0
  305. package/dist/cli-bundle/chunks/{register-setup-ZKJ53RS7.js → register-setup-ZCGKHDKL.js} +128 -103
  306. package/dist/cli-bundle/chunks/register-setup-ZCGKHDKL.js.map +7 -0
  307. package/dist/cli-bundle/chunks/{restore-4MHZFJ2E.js → restore-4CBWUMCX.js} +9 -9
  308. package/dist/cli-bundle/chunks/restore-5UEAGG3W.js +17 -0
  309. package/dist/cli-bundle/chunks/{scheduling-shortcuts-LB6DOLRL.js → scheduling-shortcuts-6VFKNKCM.js} +12 -12
  310. package/dist/cli-bundle/chunks/{scheduling-shortcuts-UTOYKLXQ.js → scheduling-shortcuts-ERHCVTEM.js} +12 -12
  311. package/dist/cli-bundle/chunks/{schema-73HR2OJW.js → schema-TDGK6N3I.js} +7 -7
  312. package/dist/cli-bundle/chunks/{schema-U6LJKSIR.js → schema-UE5KKAUX.js} +7 -7
  313. package/dist/cli-bundle/chunks/{search-KILGT37L.js → search-FP7MEU4S.js} +10 -10
  314. package/dist/cli-bundle/chunks/{search-AXPXKZER.js → search-K4CFLQ5S.js} +10 -10
  315. package/dist/cli-bundle/chunks/{stats-PSYVVTNZ.js → stats-NJJCALEZ.js} +6 -6
  316. package/dist/cli-bundle/chunks/{stats-W5KNVJWQ.js → stats-XT6QRKQY.js} +6 -6
  317. package/dist/cli-bundle/chunks/{telemetry-GAHHQTOS.js → telemetry-5SQ5UDXC.js} +84 -70
  318. package/dist/cli-bundle/chunks/telemetry-5SQ5UDXC.js.map +7 -0
  319. package/dist/cli-bundle/chunks/{telemetry-BZUF6H7G.js → telemetry-HVXFZA2U.js} +85 -71
  320. package/dist/cli-bundle/chunks/telemetry-HVXFZA2U.js.map +1 -0
  321. package/dist/cli-bundle/chunks/{test-ACD52Z3S.js → test-UFSJ5YIO.js} +15 -15
  322. package/dist/cli-bundle/chunks/{test-PWDIZ255.js → test-YCDAUBWF.js} +15 -15
  323. package/dist/cli-bundle/chunks/test-all-2BWKY3GQ.js +427 -0
  324. package/dist/cli-bundle/chunks/test-all-2BWKY3GQ.js.map +1 -0
  325. package/dist/cli-bundle/chunks/test-all-PM7UYN42.js +430 -0
  326. package/dist/cli-bundle/chunks/test-all-PM7UYN42.js.map +7 -0
  327. package/dist/cli-bundle/chunks/{test-runs-UXIXPDKU.js → test-runs-FK5E75AA.js} +185 -147
  328. package/dist/cli-bundle/chunks/test-runs-FK5E75AA.js.map +1 -0
  329. package/dist/cli-bundle/chunks/{test-runs-PLRAZEFW.js → test-runs-H4TGWGRN.js} +184 -146
  330. package/dist/cli-bundle/chunks/test-runs-H4TGWGRN.js.map +7 -0
  331. package/dist/cli-bundle/chunks/update-MTCFES6X.js +24 -0
  332. package/dist/cli-bundle/chunks/{update-KFX2SIAC.js → update-Y5WQVT5O.js} +15 -15
  333. package/dist/cli-bundle/chunks/{update-many-Z5GJS5LC.js → update-many-6YAYYRLE.js} +82 -67
  334. package/dist/cli-bundle/chunks/{update-many-Z5GJS5LC.js.map → update-many-6YAYYRLE.js.map} +2 -2
  335. package/dist/cli-bundle/chunks/{update-many-RNSBX2TA.js → update-many-JTKKSA7Y.js} +83 -68
  336. package/dist/cli-bundle/chunks/{update-many-RNSBX2TA.js.map → update-many-JTKKSA7Y.js.map} +1 -1
  337. package/dist/cli-bundle/chunks/{upgrade-HAK6JG2O.js → upgrade-DTAHZ236.js} +11 -11
  338. package/dist/cli-bundle/chunks/{upgrade-BRL6KCOJ.js → upgrade-JUDU7YL4.js} +11 -11
  339. package/dist/cli-bundle/chunks/{validate-MTUVL5VC.js → validate-732RWS5W.js} +440 -320
  340. package/dist/cli-bundle/chunks/validate-732RWS5W.js.map +7 -0
  341. package/dist/cli-bundle/chunks/{validate-X5W76YJL.js → validate-W7H5TEDC.js} +441 -321
  342. package/dist/cli-bundle/chunks/validate-W7H5TEDC.js.map +1 -0
  343. package/dist/cli-bundle/main.js +945 -812
  344. package/dist/cli-bundle/main.js.map +3 -3
  345. package/dist/core/config/nested-settings.js +89 -67
  346. package/dist/core/config/nested-settings.js.map +1 -1
  347. package/dist/core/governance/metadata-coverage.js +20 -28
  348. package/dist/core/governance/metadata-coverage.js.map +1 -1
  349. package/dist/core/history/drift-scan.js +93 -81
  350. package/dist/core/history/drift-scan.js.map +1 -1
  351. package/dist/core/item/item-type-definition.js +14 -14
  352. package/dist/core/item/item-type-definition.js.map +1 -1
  353. package/dist/core/item/type-registry.js +87 -82
  354. package/dist/core/item/type-registry.js.map +1 -1
  355. package/dist/core/output/mutation-projection.js +42 -26
  356. package/dist/core/output/mutation-projection.js.map +1 -1
  357. package/dist/core/schema/runtime-schema.js +34 -28
  358. package/dist/core/schema/runtime-schema.js.map +1 -1
  359. package/dist/core/search/semantic-defaults.js +64 -37
  360. package/dist/core/search/semantic-defaults.js.map +1 -1
  361. package/dist/core/search/vector-stores.js +32 -17
  362. package/dist/core/search/vector-stores.js.map +1 -1
  363. package/dist/core/sentry/helpers.js +31 -28
  364. package/dist/core/sentry/helpers.js.map +1 -1
  365. package/dist/core/sentry/instrument.js +54 -43
  366. package/dist/core/sentry/instrument.js.map +1 -1
  367. package/dist/core/store/front-matter-cache.js +239 -153
  368. package/dist/core/store/front-matter-cache.js.map +1 -1
  369. package/dist/core/store/item-store.js +33 -26
  370. package/dist/core/store/item-store.js.map +1 -1
  371. package/dist/core/store/settings.js +247 -203
  372. package/dist/core/store/settings.js.map +1 -1
  373. package/dist/core/test/background-runs.js +189 -160
  374. package/dist/core/test/background-runs.js.map +1 -1
  375. package/package.json +2 -2
  376. package/packages/pm-beads/extensions/beads/runtime.ts +240 -167
  377. package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +65 -58
  378. package/packages/pm-todos/extensions/todos/runtime.ts +65 -42
  379. package/dist/cli-bundle/chunks/activity-AW6XVFH6.js +0 -16
  380. package/dist/cli-bundle/chunks/aggregate-JTEF4BP7.js.map +0 -1
  381. package/dist/cli-bundle/chunks/chunk-2D4HATP2.js.map +0 -1
  382. package/dist/cli-bundle/chunks/chunk-3S2KT7NG.js.map +0 -7
  383. package/dist/cli-bundle/chunks/chunk-3VGN2UWE.js.map +0 -1
  384. package/dist/cli-bundle/chunks/chunk-3XZCOZ5J.js.map +0 -1
  385. package/dist/cli-bundle/chunks/chunk-4DSGXSBL.js.map +0 -7
  386. package/dist/cli-bundle/chunks/chunk-4XOIEKSD.js.map +0 -1
  387. package/dist/cli-bundle/chunks/chunk-55SNVXRQ.js.map +0 -7
  388. package/dist/cli-bundle/chunks/chunk-5CGRF3L5.js.map +0 -1
  389. package/dist/cli-bundle/chunks/chunk-7R4QEMZZ.js.map +0 -1
  390. package/dist/cli-bundle/chunks/chunk-BDTISOSD.js.map +0 -7
  391. package/dist/cli-bundle/chunks/chunk-BZCEN4JA.js.map +0 -7
  392. package/dist/cli-bundle/chunks/chunk-CF7RL6FR.js.map +0 -1
  393. package/dist/cli-bundle/chunks/chunk-FFMQB7WR.js.map +0 -1
  394. package/dist/cli-bundle/chunks/chunk-IPYBJWTE.js.map +0 -7
  395. package/dist/cli-bundle/chunks/chunk-IZBR4NRW.js.map +0 -7
  396. package/dist/cli-bundle/chunks/chunk-JSU5P7VS.js.map +0 -1
  397. package/dist/cli-bundle/chunks/chunk-JWXRETDF.js.map +0 -1
  398. package/dist/cli-bundle/chunks/chunk-KNPEF7QG.js.map +0 -7
  399. package/dist/cli-bundle/chunks/chunk-NFDPYAIP.js.map +0 -7
  400. package/dist/cli-bundle/chunks/chunk-NUHHPVVS.js.map +0 -7
  401. package/dist/cli-bundle/chunks/chunk-NWMZWYYB.js.map +0 -1
  402. package/dist/cli-bundle/chunks/chunk-OTUHB4HS.js.map +0 -1
  403. package/dist/cli-bundle/chunks/chunk-RGEMWD6Q.js.map +0 -7
  404. package/dist/cli-bundle/chunks/chunk-RLDHZHQS.js.map +0 -1
  405. package/dist/cli-bundle/chunks/chunk-RMMQ74TG.js.map +0 -7
  406. package/dist/cli-bundle/chunks/chunk-RVUALSJF.js.map +0 -7
  407. package/dist/cli-bundle/chunks/chunk-TP5Q5ZD3.js.map +0 -1
  408. package/dist/cli-bundle/chunks/chunk-UYUYDGIB.js.map +0 -1
  409. package/dist/cli-bundle/chunks/chunk-V3NOKJF2.js.map +0 -1
  410. package/dist/cli-bundle/chunks/chunk-VARHOHYV.js.map +0 -7
  411. package/dist/cli-bundle/chunks/chunk-YITK2PJ6.js.map +0 -7
  412. package/dist/cli-bundle/chunks/chunk-ZETXE4SE.js.map +0 -1
  413. package/dist/cli-bundle/chunks/close-E6ZZGCJY.js +0 -14
  414. package/dist/cli-bundle/chunks/close-many-BG5QQIDQ.js.map +0 -7
  415. package/dist/cli-bundle/chunks/close-many-LDRVEQY2.js.map +0 -1
  416. package/dist/cli-bundle/chunks/config-DMSU64QO.js +0 -1541
  417. package/dist/cli-bundle/chunks/config-DMSU64QO.js.map +0 -7
  418. package/dist/cli-bundle/chunks/config-QH2DICD6.js +0 -1531
  419. package/dist/cli-bundle/chunks/config-QH2DICD6.js.map +0 -1
  420. package/dist/cli-bundle/chunks/contracts-HN7ABKLP.js.map +0 -7
  421. package/dist/cli-bundle/chunks/contracts-W4FZVVD6.js.map +0 -1
  422. package/dist/cli-bundle/chunks/create-OH3BDGBB.js +0 -28
  423. package/dist/cli-bundle/chunks/get-A7MAOHCU.js.map +0 -7
  424. package/dist/cli-bundle/chunks/get-DSDEKJ3L.js.map +0 -1
  425. package/dist/cli-bundle/chunks/health-3IPFLKXB.js.map +0 -1
  426. package/dist/cli-bundle/chunks/health-GZXGBZ36.js.map +0 -7
  427. package/dist/cli-bundle/chunks/history-WSZHY3PN.js +0 -18
  428. package/dist/cli-bundle/chunks/history-compact-2WRZ2WK4.js.map +0 -7
  429. package/dist/cli-bundle/chunks/history-compact-HR7BB4LR.js.map +0 -1
  430. package/dist/cli-bundle/chunks/history-redact-MP6CH7U5.js +0 -19
  431. package/dist/cli-bundle/chunks/history-repair-LCMOS45X.js.map +0 -7
  432. package/dist/cli-bundle/chunks/history-repair-XA3LC4GA.js.map +0 -1
  433. package/dist/cli-bundle/chunks/init-PAX32BJA.js +0 -22
  434. package/dist/cli-bundle/chunks/next-BCERKDUR.js.map +0 -7
  435. package/dist/cli-bundle/chunks/next-FYTQF6HG.js.map +0 -1
  436. package/dist/cli-bundle/chunks/plan-4WXEQCTN.js.map +0 -7
  437. package/dist/cli-bundle/chunks/plan-RKZHQVXR.js.map +0 -1
  438. package/dist/cli-bundle/chunks/register-list-query-7LV46VAU.js.map +0 -1
  439. package/dist/cli-bundle/chunks/register-list-query-SNG5PGA4.js.map +0 -7
  440. package/dist/cli-bundle/chunks/register-mutation-ENNDUAZG.js.map +0 -1
  441. package/dist/cli-bundle/chunks/register-mutation-KK7PHYYU.js.map +0 -7
  442. package/dist/cli-bundle/chunks/register-operations-C6OWLDSH.js.map +0 -1
  443. package/dist/cli-bundle/chunks/register-operations-HZ6XERQG.js.map +0 -7
  444. package/dist/cli-bundle/chunks/register-setup-P67EMBDJ.js.map +0 -1
  445. package/dist/cli-bundle/chunks/register-setup-ZKJ53RS7.js.map +0 -7
  446. package/dist/cli-bundle/chunks/restore-YALDGTQR.js +0 -17
  447. package/dist/cli-bundle/chunks/telemetry-BZUF6H7G.js.map +0 -1
  448. package/dist/cli-bundle/chunks/telemetry-GAHHQTOS.js.map +0 -7
  449. package/dist/cli-bundle/chunks/test-all-L2MDDUCA.js +0 -358
  450. package/dist/cli-bundle/chunks/test-all-L2MDDUCA.js.map +0 -1
  451. package/dist/cli-bundle/chunks/test-all-RBZ6DLU2.js +0 -361
  452. package/dist/cli-bundle/chunks/test-all-RBZ6DLU2.js.map +0 -7
  453. package/dist/cli-bundle/chunks/test-runs-PLRAZEFW.js.map +0 -7
  454. package/dist/cli-bundle/chunks/test-runs-UXIXPDKU.js.map +0 -1
  455. package/dist/cli-bundle/chunks/update-AMRSOIWP.js +0 -24
  456. package/dist/cli-bundle/chunks/validate-MTUVL5VC.js.map +0 -7
  457. package/dist/cli-bundle/chunks/validate-X5W76YJL.js.map +0 -1
  458. /package/dist/cli-bundle/chunks/{activity-DBLQVIP6.js.map → activity-CUC4JY3U.js.map} +0 -0
  459. /package/dist/cli-bundle/chunks/{activity-AW6XVFH6.js.map → activity-WEIEMM73.js.map} +0 -0
  460. /package/dist/cli-bundle/chunks/{append-QCFJSDFL.js.map → append-H32VOR2Y.js.map} +0 -0
  461. /package/dist/cli-bundle/chunks/{append-LOVPGVPT.js.map → append-UBM632FK.js.map} +0 -0
  462. /package/dist/cli-bundle/chunks/{chunk-SLMUGTK3.js.map → chunk-2ASNV4DH.js.map} +0 -0
  463. /package/dist/cli-bundle/chunks/{chunk-UZIWVBE6.js.map → chunk-2CHRYUXL.js.map} +0 -0
  464. /package/dist/cli-bundle/chunks/{chunk-NU2UEROZ.js.map → chunk-3AZUFQK6.js.map} +0 -0
  465. /package/dist/cli-bundle/chunks/{chunk-LB6TP6MC.js.map → chunk-3LCUASYG.js.map} +0 -0
  466. /package/dist/cli-bundle/chunks/{chunk-HPPFYYOV.js.map → chunk-3Q2HBMTI.js.map} +0 -0
  467. /package/dist/cli-bundle/chunks/{chunk-W4ULYO7Z.js.map → chunk-55XRYWEG.js.map} +0 -0
  468. /package/dist/cli-bundle/chunks/{chunk-HXTQJXWT.js.map → chunk-5GVTFFTC.js.map} +0 -0
  469. /package/dist/cli-bundle/chunks/{chunk-64HNBBFQ.js.map → chunk-A6VOGKBA.js.map} +0 -0
  470. /package/dist/cli-bundle/chunks/{chunk-WYDHYJPO.js.map → chunk-AIAIXG7I.js.map} +0 -0
  471. /package/dist/cli-bundle/chunks/{chunk-CWFNTKQJ.js.map → chunk-AJEBCRIY.js.map} +0 -0
  472. /package/dist/cli-bundle/chunks/{chunk-NOLPZMSV.js.map → chunk-BTX5MIQF.js.map} +0 -0
  473. /package/dist/cli-bundle/chunks/{chunk-RH5ZBYFD.js.map → chunk-BVZZN2LH.js.map} +0 -0
  474. /package/dist/cli-bundle/chunks/{chunk-27BXPBAY.js.map → chunk-CYBDUHNO.js.map} +0 -0
  475. /package/dist/cli-bundle/chunks/{chunk-A7FPBAQS.js.map → chunk-CZPVDLD2.js.map} +0 -0
  476. /package/dist/cli-bundle/chunks/{chunk-JPECA746.js.map → chunk-EUKTMRN3.js.map} +0 -0
  477. /package/dist/cli-bundle/chunks/{chunk-2466X6E4.js.map → chunk-FFOQHGNH.js.map} +0 -0
  478. /package/dist/cli-bundle/chunks/{chunk-JLM7BHI7.js.map → chunk-GFMSLORL.js.map} +0 -0
  479. /package/dist/cli-bundle/chunks/{chunk-SDR5J34Q.js.map → chunk-GRRG3MCT.js.map} +0 -0
  480. /package/dist/cli-bundle/chunks/{chunk-GJ326ZKX.js.map → chunk-H4GRLYJS.js.map} +0 -0
  481. /package/dist/cli-bundle/chunks/{chunk-OGXLACHC.js.map → chunk-HQTPRV4D.js.map} +0 -0
  482. /package/dist/cli-bundle/chunks/{chunk-BHO33VBQ.js.map → chunk-IEEJQCZ4.js.map} +0 -0
  483. /package/dist/cli-bundle/chunks/{chunk-4DUVCVLZ.js.map → chunk-JMK5GCK2.js.map} +0 -0
  484. /package/dist/cli-bundle/chunks/{chunk-AXIDKKAT.js.map → chunk-K2VYLVX4.js.map} +0 -0
  485. /package/dist/cli-bundle/chunks/{chunk-EJUDVUYZ.js.map → chunk-KCO2EAN5.js.map} +0 -0
  486. /package/dist/cli-bundle/chunks/{chunk-6AQZPVHQ.js.map → chunk-KIYCOJ63.js.map} +0 -0
  487. /package/dist/cli-bundle/chunks/{chunk-ZRP4VG5U.js.map → chunk-KLXF7NCC.js.map} +0 -0
  488. /package/dist/cli-bundle/chunks/{chunk-QCWF6IYD.js.map → chunk-KN3URLKS.js.map} +0 -0
  489. /package/dist/cli-bundle/chunks/{chunk-N74UMG5H.js.map → chunk-LRKMWUUV.js.map} +0 -0
  490. /package/dist/cli-bundle/chunks/{chunk-AVEE5EHK.js.map → chunk-LTRAF2D7.js.map} +0 -0
  491. /package/dist/cli-bundle/chunks/{chunk-IJYK2T43.js.map → chunk-MRD4T5LF.js.map} +0 -0
  492. /package/dist/cli-bundle/chunks/{chunk-G7I7DEZA.js.map → chunk-N2JSWVWG.js.map} +0 -0
  493. /package/dist/cli-bundle/chunks/{chunk-5QFDBI4F.js.map → chunk-N3QCJS4M.js.map} +0 -0
  494. /package/dist/cli-bundle/chunks/{chunk-4A3BJ675.js.map → chunk-OTUJZKGI.js.map} +0 -0
  495. /package/dist/cli-bundle/chunks/{chunk-HZZEHPRG.js.map → chunk-QH3FSKRJ.js.map} +0 -0
  496. /package/dist/cli-bundle/chunks/{chunk-NKZAN7BD.js.map → chunk-S62UANU7.js.map} +0 -0
  497. /package/dist/cli-bundle/chunks/{chunk-3J6JRJ3I.js.map → chunk-SYNKD3ZG.js.map} +0 -0
  498. /package/dist/cli-bundle/chunks/{chunk-L5OEFZQG.js.map → chunk-U2BEEM2X.js.map} +0 -0
  499. /package/dist/cli-bundle/chunks/{chunk-EVMTBV6V.js.map → chunk-UT73HUPC.js.map} +0 -0
  500. /package/dist/cli-bundle/chunks/{chunk-VICZWYGZ.js.map → chunk-UTSH5GWX.js.map} +0 -0
  501. /package/dist/cli-bundle/chunks/{chunk-MDPEOIGN.js.map → chunk-XWGEMNBR.js.map} +0 -0
  502. /package/dist/cli-bundle/chunks/{chunk-HYTGA6GI.js.map → chunk-Y4NRKBFW.js.map} +0 -0
  503. /package/dist/cli-bundle/chunks/{chunk-22WKIL3H.js.map → chunk-YPKFV2JR.js.map} +0 -0
  504. /package/dist/cli-bundle/chunks/{chunk-DDPTYJIM.js.map → chunk-ZNHEYCDD.js.map} +0 -0
  505. /package/dist/cli-bundle/chunks/{chunk-MAUKX7JC.js.map → chunk-ZNT7KEWE.js.map} +0 -0
  506. /package/dist/cli-bundle/chunks/{claim-T3GCKV7C.js.map → claim-SENTPZBN.js.map} +0 -0
  507. /package/dist/cli-bundle/chunks/{claim-EMQLYPRW.js.map → claim-Z7MEQCBT.js.map} +0 -0
  508. /package/dist/cli-bundle/chunks/{close-TQYAAFJP.js.map → close-424MX4CU.js.map} +0 -0
  509. /package/dist/cli-bundle/chunks/{close-E6ZZGCJY.js.map → close-YCWQQPDS.js.map} +0 -0
  510. /package/dist/cli-bundle/chunks/{comments-YUXJRZPQ.js.map → comments-4FGNTSNV.js.map} +0 -0
  511. /package/dist/cli-bundle/chunks/{comments-QCKR2YY2.js.map → comments-7YS5MY5X.js.map} +0 -0
  512. /package/dist/cli-bundle/chunks/{context-OCZ3FJ4Z.js.map → context-LHVKJSPJ.js.map} +0 -0
  513. /package/dist/cli-bundle/chunks/{context-B6275WPX.js.map → context-ZQY54JNS.js.map} +0 -0
  514. /package/dist/cli-bundle/chunks/{copy-DEM4DATS.js.map → copy-GYNQQPW2.js.map} +0 -0
  515. /package/dist/cli-bundle/chunks/{copy-BTJOSKKT.js.map → copy-TLW7JTQT.js.map} +0 -0
  516. /package/dist/cli-bundle/chunks/{create-RLRJMRTM.js.map → create-VSKYSOCD.js.map} +0 -0
  517. /package/dist/cli-bundle/chunks/{create-OH3BDGBB.js.map → create-XTMAPS7I.js.map} +0 -0
  518. /package/dist/cli-bundle/chunks/{delete-LSVHAB4Y.js.map → delete-4W5JYCEG.js.map} +0 -0
  519. /package/dist/cli-bundle/chunks/{delete-BHK7VB2Z.js.map → delete-ANTOTI2I.js.map} +0 -0
  520. /package/dist/cli-bundle/chunks/{deps-XHYXWEPT.js.map → deps-HPPE6MJN.js.map} +0 -0
  521. /package/dist/cli-bundle/chunks/{deps-4UDFJRUA.js.map → deps-ZQZN54EZ.js.map} +0 -0
  522. /package/dist/cli-bundle/chunks/{docs-GYZNVS26.js.map → docs-RPOVFMP3.js.map} +0 -0
  523. /package/dist/cli-bundle/chunks/{docs-26S44RXU.js.map → docs-XJNYBJGE.js.map} +0 -0
  524. /package/dist/cli-bundle/chunks/{eval-PGRVIJQU.js.map → eval-DM6JBZTS.js.map} +0 -0
  525. /package/dist/cli-bundle/chunks/{eval-UYF3ZPVO.js.map → eval-RFBI5FGS.js.map} +0 -0
  526. /package/dist/cli-bundle/chunks/{extension-CPSLJQVE.js.map → extension-B3YY4WY5.js.map} +0 -0
  527. /package/dist/cli-bundle/chunks/{extension-CXJ6RELI.js.map → extension-TTSEFQTS.js.map} +0 -0
  528. /package/dist/cli-bundle/chunks/{files-NQHEXUZD.js.map → files-5D65CHGE.js.map} +0 -0
  529. /package/dist/cli-bundle/chunks/{files-MBNICQFM.js.map → files-GPIG77EN.js.map} +0 -0
  530. /package/dist/cli-bundle/chunks/{focus-XZW5423D.js.map → focus-C3PEJV2C.js.map} +0 -0
  531. /package/dist/cli-bundle/chunks/{focus-DWYIG7GU.js.map → focus-ZHN7WIGX.js.map} +0 -0
  532. /package/dist/cli-bundle/chunks/{gc-LPVMKJQJ.js.map → gc-D4JQ6OWN.js.map} +0 -0
  533. /package/dist/cli-bundle/chunks/{gc-7GQYOS2G.js.map → gc-VZIXDL32.js.map} +0 -0
  534. /package/dist/cli-bundle/chunks/{history-WSZHY3PN.js.map → history-DD7L7BNL.js.map} +0 -0
  535. /package/dist/cli-bundle/chunks/{history-NERDJNUB.js.map → history-IL7XCEX2.js.map} +0 -0
  536. /package/dist/cli-bundle/chunks/{history-redact-MP6CH7U5.js.map → history-redact-IX4YEWMY.js.map} +0 -0
  537. /package/dist/cli-bundle/chunks/{history-redact-O3NBCNWC.js.map → history-redact-VYCWQFK7.js.map} +0 -0
  538. /package/dist/cli-bundle/chunks/{init-64XDLQJB.js.map → init-F27NHENZ.js.map} +0 -0
  539. /package/dist/cli-bundle/chunks/{init-PAX32BJA.js.map → init-HHVQQP6C.js.map} +0 -0
  540. /package/dist/cli-bundle/chunks/{learnings-LPKCSJX7.js.map → learnings-HJVDQIGY.js.map} +0 -0
  541. /package/dist/cli-bundle/chunks/{learnings-JR6MA5TI.js.map → learnings-XSFSUUWK.js.map} +0 -0
  542. /package/dist/cli-bundle/chunks/{list-G5Y65VF6.js.map → list-HPMEKCAA.js.map} +0 -0
  543. /package/dist/cli-bundle/chunks/{list-DNBJVO3E.js.map → list-VMPWTURB.js.map} +0 -0
  544. /package/dist/cli-bundle/chunks/{notes-2BMU3VVQ.js.map → notes-GDZIKGR6.js.map} +0 -0
  545. /package/dist/cli-bundle/chunks/{notes-6KTGO2OJ.js.map → notes-WDDBPC4D.js.map} +0 -0
  546. /package/dist/cli-bundle/chunks/{profile-QLER5ENE.js.map → profile-CCOKZ2IQ.js.map} +0 -0
  547. /package/dist/cli-bundle/chunks/{profile-4OMM32CD.js.map → profile-HUCENIEQ.js.map} +0 -0
  548. /package/dist/cli-bundle/chunks/{restore-4MHZFJ2E.js.map → restore-4CBWUMCX.js.map} +0 -0
  549. /package/dist/cli-bundle/chunks/{restore-YALDGTQR.js.map → restore-5UEAGG3W.js.map} +0 -0
  550. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-LB6DOLRL.js.map → scheduling-shortcuts-6VFKNKCM.js.map} +0 -0
  551. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-UTOYKLXQ.js.map → scheduling-shortcuts-ERHCVTEM.js.map} +0 -0
  552. /package/dist/cli-bundle/chunks/{schema-73HR2OJW.js.map → schema-TDGK6N3I.js.map} +0 -0
  553. /package/dist/cli-bundle/chunks/{schema-U6LJKSIR.js.map → schema-UE5KKAUX.js.map} +0 -0
  554. /package/dist/cli-bundle/chunks/{search-KILGT37L.js.map → search-FP7MEU4S.js.map} +0 -0
  555. /package/dist/cli-bundle/chunks/{search-AXPXKZER.js.map → search-K4CFLQ5S.js.map} +0 -0
  556. /package/dist/cli-bundle/chunks/{stats-PSYVVTNZ.js.map → stats-NJJCALEZ.js.map} +0 -0
  557. /package/dist/cli-bundle/chunks/{stats-W5KNVJWQ.js.map → stats-XT6QRKQY.js.map} +0 -0
  558. /package/dist/cli-bundle/chunks/{test-ACD52Z3S.js.map → test-UFSJ5YIO.js.map} +0 -0
  559. /package/dist/cli-bundle/chunks/{test-PWDIZ255.js.map → test-YCDAUBWF.js.map} +0 -0
  560. /package/dist/cli-bundle/chunks/{update-AMRSOIWP.js.map → update-MTCFES6X.js.map} +0 -0
  561. /package/dist/cli-bundle/chunks/{update-KFX2SIAC.js.map → update-Y5WQVT5O.js.map} +0 -0
  562. /package/dist/cli-bundle/chunks/{upgrade-HAK6JG2O.js.map → upgrade-DTAHZ236.js.map} +0 -0
  563. /package/dist/cli-bundle/chunks/{upgrade-BRL6KCOJ.js.map → upgrade-JUDU7YL4.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  extractReferencedPmItemIdsFromCommand
3
- } from "./chunk-JMP4E6D7.js";
3
+ } from "./chunk-IG5JYZGU.js";
4
4
  import {
5
5
  buildRemediationCommands
6
6
  } from "./chunk-JINYH2DB.js";
@@ -9,30 +9,30 @@ import {
9
9
  } from "./chunk-7M2HAZEB.js";
10
10
  import {
11
11
  scanHistoryDrift
12
- } from "./chunk-KNPEF7QG.js";
13
- import "./chunk-HYTGA6GI.js";
14
- import "./chunk-DDPTYJIM.js";
15
- import "./chunk-G7I7DEZA.js";
16
- import "./chunk-YITK2PJ6.js";
17
- import "./chunk-5QFDBI4F.js";
12
+ } from "./chunk-UGLU6Q2I.js";
13
+ import "./chunk-Y4NRKBFW.js";
14
+ import "./chunk-ZNHEYCDD.js";
15
+ import "./chunk-N2JSWVWG.js";
16
+ import "./chunk-66Z3X7ZG.js";
17
+ import "./chunk-N3QCJS4M.js";
18
18
  import "./chunk-5HIZDR5A.js";
19
- import "./chunk-RMMQ74TG.js";
20
- import "./chunk-LB6TP6MC.js";
21
- import "./chunk-SDR5J34Q.js";
22
- import "./chunk-RH5ZBYFD.js";
23
- import "./chunk-MDPEOIGN.js";
19
+ import "./chunk-SPM2XLWI.js";
20
+ import "./chunk-3LCUASYG.js";
21
+ import "./chunk-GRRG3MCT.js";
22
+ import "./chunk-BVZZN2LH.js";
23
+ import "./chunk-XWGEMNBR.js";
24
24
  import {
25
25
  listAllFrontMatterWithBody
26
- } from "./chunk-3K2M5OYU.js";
26
+ } from "./chunk-JXAUVO6X.js";
27
27
  import {
28
28
  CURRENT_ITEM_FORMAT_VERSION,
29
29
  effectiveItemFormatVersion,
30
30
  normalizeStatusInput,
31
31
  scanItemFormatVersions
32
- } from "./chunk-BHO33VBQ.js";
32
+ } from "./chunk-IEEJQCZ4.js";
33
33
  import {
34
34
  nowIso
35
- } from "./chunk-WYDHYJPO.js";
35
+ } from "./chunk-AIAIXG7I.js";
36
36
  import {
37
37
  DEFAULT_VALIDATE_CLOSURE_LIKE_METADATA_FIELD_PATTERNS,
38
38
  DEFAULT_VALIDATE_STALE_BLOCKER_REASON_PATTERNS,
@@ -48,7 +48,7 @@ import {
48
48
  resolvePmRoot,
49
49
  resolveRuntimeStatusRegistry,
50
50
  toNonEmptyStringOrUndefined
51
- } from "./chunk-RVUALSJF.js";
51
+ } from "./chunk-7NSPKJUS.js";
52
52
 
53
53
  // dist/cli/commands/validate.js
54
54
  import fs from "node:fs/promises";
@@ -418,7 +418,7 @@ function summarizeMissingLinkedPathRows(rows) {
418
418
  !(function() {
419
419
  try {
420
420
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
421
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "a9087567-b334-5e9c-8ed7-e52d8cb35801");
421
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "96011574-703c-57e6-979f-dbae265fd01b");
422
422
  } catch (e2) {
423
423
  }
424
424
  })();
@@ -952,61 +952,59 @@ function summarizeDuplicateIssueCodes(duplicates, verboseDiagnostics) {
952
952
  warnings: [`${DUPLICATE_ISSUE_CODE_WARNING_TOKEN}:${duplicates.length}`]
953
953
  };
954
954
  }
955
- function buildMetadataCheck(items, metadataPolicy, statusRegistry, verboseDiagnostics) {
956
- const missingByField = Object.fromEntries(SUPPORTED_METADATA_REQUIRED_FIELDS.map((field) => [field, []]));
957
- const itemsById = new Map(items.map((item) => [item.id, item]));
958
- const enforcePlanningFieldsOnTerminal = metadataPolicy.profile === "strict";
955
+ function initializeMissingMetadataByField() {
956
+ return Object.fromEntries(SUPPORTED_METADATA_REQUIRED_FIELDS.map((field) => [field, []]));
957
+ }
958
+ function collectMissingMetadataByField(items, statusRegistry, enforcePlanningFieldsOnTerminal) {
959
+ const missingByField = initializeMissingMetadataByField();
959
960
  for (const item of items) {
960
961
  for (const field of SUPPORTED_METADATA_REQUIRED_FIELDS) {
961
- if (!isMetadataFieldMissing(item, field, statusRegistry, enforcePlanningFieldsOnTerminal)) {
962
- continue;
962
+ if (isMetadataFieldMissing(item, field, statusRegistry, enforcePlanningFieldsOnTerminal)) {
963
+ missingByField[field].push(item.id);
963
964
  }
964
- missingByField[field].push(item.id);
965
965
  }
966
966
  }
967
+ return missingByField;
968
+ }
969
+ function buildMetadataWarningTokens(metadataPolicy, missingByField, duplicateWarnings) {
967
970
  const warningTokens = [...metadataPolicy.warnings];
968
971
  for (const field of metadataPolicy.required_fields) {
969
972
  const missingItems = missingByField[field];
970
- if (missingItems.length === 0) {
971
- continue;
973
+ if (missingItems.length > 0) {
974
+ warningTokens.push(`${METADATA_WARNING_TOKEN_BY_FIELD[field]}:${missingItems.length}`);
972
975
  }
973
- warningTokens.push(`${METADATA_WARNING_TOKEN_BY_FIELD[field]}:${missingItems.length}`);
974
976
  }
975
- const duplicateIssueCodes = findDuplicateIssueCodes(items);
976
- const duplicateIssueCodeSummary = summarizeDuplicateIssueCodes(duplicateIssueCodes, verboseDiagnostics);
977
- warningTokens.push(...duplicateIssueCodeSummary.warnings);
977
+ warningTokens.push(...duplicateWarnings);
978
+ return warningTokens;
979
+ }
980
+ function buildMetadataCounts(metadataPolicy, missingByField) {
978
981
  const counts = {};
979
982
  for (const field of metadataPolicy.required_fields) {
980
- const value = missingByField[field]?.length ?? 0;
983
+ const missing = missingByField[field];
984
+ const value = missing ? missing.length : 0;
981
985
  const countKey = METADATA_COUNT_KEY_BY_FIELD[field];
982
986
  if (value > 0 && countKey) {
983
987
  counts[countKey] = value;
984
988
  }
985
989
  }
986
- const missingFieldOccurrences = [];
990
+ return counts;
991
+ }
992
+ function buildMissingFieldOccurrences(metadataPolicy, missingByField, itemsById) {
993
+ const occurrences = [];
987
994
  for (const field of metadataPolicy.required_fields) {
988
- for (const itemId of missingByField[field] ?? []) {
995
+ const missing = missingByField[field];
996
+ if (!missing) {
997
+ continue;
998
+ }
999
+ for (const itemId of missing) {
989
1000
  const itemType = itemsById.get(itemId)?.type;
990
- missingFieldOccurrences.push({ item_type: typeof itemType === "string" && itemType.length > 0 ? itemType : "Unknown", field });
1001
+ const normalizedItemType = typeof itemType === "string" && itemType.length > 0 ? itemType : "Unknown";
1002
+ occurrences.push({ item_type: normalizedItemType, field });
991
1003
  }
992
1004
  }
993
- const missingByType = buildMissingByTypeCounts(missingFieldOccurrences);
994
- const details = {
995
- checked_items: items.length,
996
- metadata_profile: metadataPolicy.profile,
997
- metadata_profile_source: metadataPolicy.profile_source,
998
- metadata_profile_fallback_to_core: metadataPolicy.fallback_to_core,
999
- required_fields: [...metadataPolicy.required_fields],
1000
- supported_required_fields: [...SUPPORTED_METADATA_REQUIRED_FIELDS],
1001
- counts,
1002
- missing_by_type: missingByType,
1003
- duplicate_issue_codes_count: duplicateIssueCodes.length,
1004
- duplicate_issue_codes: duplicateIssueCodeSummary.rows,
1005
- duplicate_issue_codes_truncated: duplicateIssueCodeSummary.truncated
1006
- };
1007
- if (metadataPolicy.configured_custom_fields.length > 0) {
1008
- details.configured_custom_required_fields = [...metadataPolicy.configured_custom_fields];
1009
- }
1005
+ return occurrences;
1006
+ }
1007
+ function attachMissingMetadataItemIds(details, metadataPolicy, missingByField, verboseDiagnostics) {
1010
1008
  for (const field of metadataPolicy.required_fields) {
1011
1009
  const missing = missingByField[field];
1012
1010
  if (!missing || missing.length === 0) {
@@ -1021,14 +1019,62 @@ function buildMetadataCheck(items, metadataPolicy, statusRegistry, verboseDiagno
1021
1019
  details[idsKey] = summarized.values;
1022
1020
  details[truncatedKey] = summarized.truncated;
1023
1021
  }
1024
- const closeReasonBackfillRows = metadataPolicy.required_fields.includes("close_reason") ? (missingByField.close_reason ?? []).map((itemId) => ({
1022
+ }
1023
+ function buildCloseReasonBackfillRows(metadataPolicy, missingByField, itemsById) {
1024
+ if (!metadataPolicy.required_fields.includes("close_reason")) {
1025
+ return [];
1026
+ }
1027
+ const missing = missingByField.close_reason;
1028
+ if (!missing) {
1029
+ return [];
1030
+ }
1031
+ return missing.map((itemId) => ({
1025
1032
  id: itemId,
1026
1033
  resolution: toNonEmptyStringOrUndefined(itemsById.get(itemId)?.resolution)
1027
- })) : [];
1028
- const estimateBackfillRows = metadataPolicy.required_fields.includes("estimated_minutes") ? (missingByField.estimated_minutes ?? []).map((itemId) => ({
1034
+ }));
1035
+ }
1036
+ function buildEstimateBackfillRows(metadataPolicy, missingByField, itemsById) {
1037
+ if (!metadataPolicy.required_fields.includes("estimated_minutes")) {
1038
+ return [];
1039
+ }
1040
+ const missing = missingByField.estimated_minutes;
1041
+ if (!missing) {
1042
+ return [];
1043
+ }
1044
+ return missing.map((itemId) => ({
1029
1045
  id: itemId,
1030
1046
  type: toNonEmptyStringOrUndefined(itemsById.get(itemId)?.type)
1031
- })) : [];
1047
+ }));
1048
+ }
1049
+ function buildMetadataCheck(items, metadataPolicy, statusRegistry, verboseDiagnostics) {
1050
+ const itemsById = new Map(items.map((item) => [item.id, item]));
1051
+ const enforcePlanningFieldsOnTerminal = metadataPolicy.profile === "strict";
1052
+ const missingByField = collectMissingMetadataByField(items, statusRegistry, enforcePlanningFieldsOnTerminal);
1053
+ const duplicateIssueCodes = findDuplicateIssueCodes(items);
1054
+ const duplicateIssueCodeSummary = summarizeDuplicateIssueCodes(duplicateIssueCodes, verboseDiagnostics);
1055
+ const warningTokens = buildMetadataWarningTokens(metadataPolicy, missingByField, duplicateIssueCodeSummary.warnings);
1056
+ const counts = buildMetadataCounts(metadataPolicy, missingByField);
1057
+ const missingFieldOccurrences = buildMissingFieldOccurrences(metadataPolicy, missingByField, itemsById);
1058
+ const missingByType = buildMissingByTypeCounts(missingFieldOccurrences);
1059
+ const details = {
1060
+ checked_items: items.length,
1061
+ metadata_profile: metadataPolicy.profile,
1062
+ metadata_profile_source: metadataPolicy.profile_source,
1063
+ metadata_profile_fallback_to_core: metadataPolicy.fallback_to_core,
1064
+ required_fields: [...metadataPolicy.required_fields],
1065
+ supported_required_fields: [...SUPPORTED_METADATA_REQUIRED_FIELDS],
1066
+ counts,
1067
+ missing_by_type: missingByType,
1068
+ duplicate_issue_codes_count: duplicateIssueCodes.length,
1069
+ duplicate_issue_codes: duplicateIssueCodeSummary.rows,
1070
+ duplicate_issue_codes_truncated: duplicateIssueCodeSummary.truncated
1071
+ };
1072
+ if (metadataPolicy.configured_custom_fields.length > 0) {
1073
+ details.configured_custom_required_fields = [...metadataPolicy.configured_custom_fields];
1074
+ }
1075
+ attachMissingMetadataItemIds(details, metadataPolicy, missingByField, verboseDiagnostics);
1076
+ const closeReasonBackfillRows = buildCloseReasonBackfillRows(metadataPolicy, missingByField, itemsById);
1077
+ const estimateBackfillRows = buildEstimateBackfillRows(metadataPolicy, missingByField, itemsById);
1032
1078
  return {
1033
1079
  check: {
1034
1080
  name: "metadata",
@@ -1269,6 +1315,24 @@ function sharedDirectoryPrefixLength(left, right) {
1269
1315
  }
1270
1316
  return count;
1271
1317
  }
1318
+ function scoreOrphanOwnerCandidate(pathValue, linkedPath) {
1319
+ const linkedDir = directoryOf(linkedPath);
1320
+ const orphanDir = directoryOf(pathValue);
1321
+ const directoryPrefix = linkedPath.endsWith("/") ? linkedPath : `${linkedPath}/`;
1322
+ const isDirectoryPrefix = pathValue.startsWith(directoryPrefix);
1323
+ const sameDirectory = linkedDir.length > 0 && linkedDir === orphanDir;
1324
+ const sharedPrefixLength = sharedDirectoryPrefixLength(pathValue, linkedPath);
1325
+ if (!isDirectoryPrefix && !sameDirectory && sharedPrefixLength === 0) {
1326
+ return null;
1327
+ }
1328
+ if (isDirectoryPrefix) {
1329
+ return { score: linkedPath.length + 1e3, confidence: "path_prefix" };
1330
+ }
1331
+ return sameDirectory ? { score: sharedPrefixLength + 500, confidence: "same_directory" } : { score: sharedPrefixLength, confidence: "shared_directory" };
1332
+ }
1333
+ function shouldReplaceOrphanOwnerCandidate(best, item, score) {
1334
+ return best === void 0 || score > best.score || score === best.score && item.id.localeCompare(best.item.id) < 0;
1335
+ }
1272
1336
  function findOrphanOwnerCandidate(pathValue, classification, items) {
1273
1337
  const linkKind = classification === "docs_unowned" ? "docs" : "files";
1274
1338
  let best;
@@ -1282,21 +1346,15 @@ function findOrphanOwnerCandidate(pathValue, classification, items) {
1282
1346
  if (linkedPath.length === 0 || linkedPath === pathValue) {
1283
1347
  continue;
1284
1348
  }
1285
- const linkedDir = directoryOf(linkedPath);
1286
- const orphanDir = directoryOf(pathValue);
1287
- const directoryPrefix = linkedPath.endsWith("/") ? linkedPath : `${linkedPath}/`;
1288
- const isDirectoryPrefix = pathValue.startsWith(directoryPrefix);
1289
- const sameDirectory = linkedDir.length > 0 && linkedDir === orphanDir;
1290
- const sharedPrefixLength = sharedDirectoryPrefixLength(pathValue, linkedPath);
1291
- if (!isDirectoryPrefix && !sameDirectory && sharedPrefixLength === 0) {
1349
+ const scored = scoreOrphanOwnerCandidate(pathValue, linkedPath);
1350
+ if (scored === null) {
1292
1351
  continue;
1293
1352
  }
1294
- const score = isDirectoryPrefix ? linkedPath.length + 1e3 : sameDirectory ? sharedPrefixLength + 500 : sharedPrefixLength;
1295
- if (best === void 0 || score > best.score || score === best.score && item.id.localeCompare(best.item.id) < 0) {
1353
+ if (shouldReplaceOrphanOwnerCandidate(best, item, scored.score)) {
1296
1354
  best = {
1297
1355
  item,
1298
- score,
1299
- confidence: isDirectoryPrefix ? "path_prefix" : sameDirectory ? "same_directory" : "shared_directory"
1356
+ score: scored.score,
1357
+ confidence: scored.confidence
1300
1358
  };
1301
1359
  }
1302
1360
  }
@@ -1329,74 +1387,74 @@ function buildOrphanedPathRows(orphanedFiles, items) {
1329
1387
  function summarizeOrphanedPathRows(rows) {
1330
1388
  return rows.map((row) => `${row.path}:${row.classification} owner_candidate=${row.owner_candidate?.id ?? "unowned"} hint=${JSON.stringify(row.remediation_hint)}`);
1331
1389
  }
1332
- function buildLifecycleCheck(items, includeStaleBlockers, dependencyCycleSeverity, parentCycleSeverity, statusRegistry, lifecyclePatternPolicy, verboseDiagnostics, idPrefix = "pm") {
1390
+ function closureLikeFieldsForItem(item, lifecyclePatternPolicy) {
1391
+ return Object.entries(lifecyclePatternPolicy.closure_like_metadata_field_patterns).filter(([field, patterns]) => {
1392
+ const value = toMeaningfulString(item[field]);
1393
+ return value ? patterns.some((pattern) => value.toLowerCase().includes(pattern)) : false;
1394
+ }).map(([field]) => field).sort((left, right) => left.localeCompare(right));
1395
+ }
1396
+ function buildTerminalParentFixRow(item, parent, itemsById, canonicalIdByLowercase, statusRegistry) {
1397
+ const grandparentId = toMeaningfulString(parent.parent);
1398
+ const grandparent = grandparentId ? itemsById.get(canonicalIdByLowercase.get(grandparentId.toLowerCase()) ?? grandparentId) : void 0;
1399
+ return {
1400
+ id: item.id,
1401
+ parent_id: parent.id,
1402
+ grandparent_id: grandparent?.id,
1403
+ grandparent_active: grandparent !== void 0 && !isTerminalStatus(grandparent.status, statusRegistry)
1404
+ };
1405
+ }
1406
+ function staleBlockerReasonsForItem(item, blockedStatuses, statusRegistry, lifecyclePatternPolicy) {
1407
+ const blockedBy = toMeaningfulString(item.blocked_by);
1408
+ const blockedReason = toMeaningfulString(item.blocked_reason);
1409
+ const blockedReasonNormalized = blockedReason?.toLowerCase();
1410
+ const normalizedStatus = normalizeStatusForRegistry(item.status, statusRegistry);
1411
+ const reasons = [];
1412
+ if (!blockedStatuses.has(normalizedStatus)) {
1413
+ if (blockedBy) {
1414
+ reasons.push("non_blocked_status_has_blocked_by");
1415
+ }
1416
+ if (blockedReason) {
1417
+ reasons.push("non_blocked_status_has_blocked_reason");
1418
+ }
1419
+ return reasons;
1420
+ }
1421
+ if (!blockedBy && !blockedReason) {
1422
+ reasons.push("blocked_status_missing_blocker_context");
1423
+ }
1424
+ if (blockedReasonNormalized?.includes("no active blocker")) {
1425
+ reasons.push("blocked_status_reason_reports_no_active_blocker");
1426
+ }
1427
+ if (blockedReasonNormalized && lifecyclePatternPolicy.stale_blocker_reason_patterns.some((pattern) => blockedReasonNormalized.includes(pattern))) {
1428
+ reasons.push("blocked_status_reason_matches_stale_pattern");
1429
+ }
1430
+ return reasons;
1431
+ }
1432
+ function collectLifecycleScanRows(items, includeStaleBlockers, statusRegistry, lifecyclePatternPolicy) {
1333
1433
  const itemsById = new Map(items.map((item) => [item.id, item]));
1434
+ const canonicalIdByLowercase = new Map(items.map((item) => [item.id.toLowerCase(), item.id]));
1334
1435
  const blockedStatuses = statusRegistry.blocked_statuses.size > 0 ? statusRegistry.blocked_statuses : /* @__PURE__ */ new Set(["blocked"]);
1335
- const activeItems = items.filter((item) => !isTerminalStatus(item.status, statusRegistry));
1336
- const closureLikeRows = [];
1337
- const terminalParentRows = [];
1338
- const terminalParentFixRows = [];
1339
- const staleBlockerRows = [];
1340
- for (const item of activeItems) {
1341
- const closureLikeFields = Object.entries(lifecyclePatternPolicy.closure_like_metadata_field_patterns).filter(([field, patterns]) => {
1342
- const value = toMeaningfulString(item[field]);
1343
- if (!value) {
1344
- return false;
1345
- }
1346
- const normalized = value.toLowerCase();
1347
- return patterns.some((pattern) => normalized.includes(pattern));
1348
- }).map(([field]) => field).sort((left, right) => left.localeCompare(right));
1436
+ const rows = {
1437
+ activeItems: items.filter((item) => !isTerminalStatus(item.status, statusRegistry)),
1438
+ closureLikeRows: [],
1439
+ terminalParentRows: [],
1440
+ terminalParentFixRows: [],
1441
+ staleBlockerRows: []
1442
+ };
1443
+ for (const item of rows.activeItems) {
1444
+ const closureLikeFields = closureLikeFieldsForItem(item, lifecyclePatternPolicy);
1349
1445
  if (closureLikeFields.length > 0) {
1350
- closureLikeRows.push({
1351
- id: item.id,
1352
- fields: closureLikeFields
1353
- });
1446
+ rows.closureLikeRows.push({ id: item.id, fields: closureLikeFields });
1354
1447
  }
1355
1448
  const parentId = toMeaningfulString(item.parent);
1356
- if (parentId) {
1357
- const parent = itemsById.get(parentId);
1358
- if (parent && isTerminalStatus(parent.status, statusRegistry)) {
1359
- terminalParentRows.push({
1360
- id: item.id,
1361
- parent_id: parent.id,
1362
- parent_status: parent.status
1363
- });
1364
- const grandparentId = toMeaningfulString(parent.parent);
1365
- const grandparent = grandparentId ? itemsById.get(grandparentId) : void 0;
1366
- terminalParentFixRows.push({
1367
- id: item.id,
1368
- parent_id: parent.id,
1369
- grandparent_id: grandparent?.id,
1370
- grandparent_active: grandparent !== void 0 && !isTerminalStatus(grandparent.status, statusRegistry)
1371
- });
1372
- }
1449
+ const parent = parentId ? itemsById.get(canonicalIdByLowercase.get(parentId.toLowerCase()) ?? parentId) : void 0;
1450
+ if (parent && isTerminalStatus(parent.status, statusRegistry)) {
1451
+ rows.terminalParentRows.push({ id: item.id, parent_id: parent.id, parent_status: parent.status });
1452
+ rows.terminalParentFixRows.push(buildTerminalParentFixRow(item, parent, itemsById, canonicalIdByLowercase, statusRegistry));
1373
1453
  }
1374
1454
  if (includeStaleBlockers) {
1375
- const blockedBy = toMeaningfulString(item.blocked_by);
1376
- const blockedReason = toMeaningfulString(item.blocked_reason);
1377
- const blockedReasonNormalized = blockedReason?.toLowerCase();
1378
- const reasons = [];
1379
- const normalizedStatus = normalizeStatusForRegistry(item.status, statusRegistry);
1380
- if (!blockedStatuses.has(normalizedStatus)) {
1381
- if (blockedBy) {
1382
- reasons.push("non_blocked_status_has_blocked_by");
1383
- }
1384
- if (blockedReason) {
1385
- reasons.push("non_blocked_status_has_blocked_reason");
1386
- }
1387
- } else {
1388
- if (!blockedBy && !blockedReason) {
1389
- reasons.push("blocked_status_missing_blocker_context");
1390
- }
1391
- if (blockedReasonNormalized?.includes("no active blocker")) {
1392
- reasons.push("blocked_status_reason_reports_no_active_blocker");
1393
- }
1394
- if (blockedReasonNormalized && lifecyclePatternPolicy.stale_blocker_reason_patterns.some((pattern) => blockedReasonNormalized.includes(pattern))) {
1395
- reasons.push("blocked_status_reason_matches_stale_pattern");
1396
- }
1397
- }
1455
+ const reasons = staleBlockerReasonsForItem(item, blockedStatuses, statusRegistry, lifecyclePatternPolicy);
1398
1456
  if (reasons.length > 0) {
1399
- staleBlockerRows.push({
1457
+ rows.staleBlockerRows.push({
1400
1458
  id: item.id,
1401
1459
  status: item.status,
1402
1460
  reasons: [...new Set(reasons)].sort((left, right) => left.localeCompare(right))
@@ -1404,32 +1462,117 @@ function buildLifecycleCheck(items, includeStaleBlockers, dependencyCycleSeverit
1404
1462
  }
1405
1463
  }
1406
1464
  }
1407
- closureLikeRows.sort((left, right) => left.id.localeCompare(right.id));
1408
- terminalParentRows.sort((left, right) => left.id.localeCompare(right.id) || left.parent_id.localeCompare(right.parent_id));
1409
- terminalParentFixRows.sort((left, right) => left.id.localeCompare(right.id) || left.parent_id.localeCompare(right.parent_id));
1410
- staleBlockerRows.sort((left, right) => left.id.localeCompare(right.id));
1411
- const dependencyCycleDiagnostics = detectLifecycleDependencyCycles(activeItems, idPrefix);
1412
- const parentCycleDiagnostics = detectLifecycleParentCycles(items);
1465
+ return rows;
1466
+ }
1467
+ function sortLifecycleScanRows(rows) {
1468
+ rows.closureLikeRows.sort((left, right) => left.id.localeCompare(right.id));
1469
+ rows.terminalParentRows.sort((left, right) => left.id.localeCompare(right.id) || left.parent_id.localeCompare(right.parent_id));
1470
+ rows.terminalParentFixRows.sort((left, right) => left.id.localeCompare(right.id) || left.parent_id.localeCompare(right.parent_id));
1471
+ rows.staleBlockerRows.sort((left, right) => left.id.localeCompare(right.id));
1472
+ }
1473
+ function lifecycleCycleWarningToken(prefix, severity, count) {
1474
+ if (count <= 0 || severity === "off") {
1475
+ return null;
1476
+ }
1477
+ return `${severity === "error" ? `${prefix}_error` : prefix}:${count}`;
1478
+ }
1479
+ function buildLifecycleWarnings(rows, includeStaleBlockers, dependencyCycleSeverity, parentCycleSeverity, dependencyCycleCount, parentCycleCount) {
1413
1480
  const warnings = [];
1414
- if (closureLikeRows.length > 0) {
1415
- warnings.push(`validate_lifecycle_active_closure_like_metadata:${closureLikeRows.length}`);
1481
+ if (rows.closureLikeRows.length > 0) {
1482
+ warnings.push(`validate_lifecycle_active_closure_like_metadata:${rows.closureLikeRows.length}`);
1416
1483
  }
1417
- if (terminalParentRows.length > 0) {
1418
- warnings.push(`validate_lifecycle_active_terminal_parent:${terminalParentRows.length}`);
1484
+ if (rows.terminalParentRows.length > 0) {
1485
+ warnings.push(`validate_lifecycle_active_terminal_parent:${rows.terminalParentRows.length}`);
1419
1486
  }
1420
- if (includeStaleBlockers && staleBlockerRows.length > 0) {
1421
- warnings.push(`validate_lifecycle_stale_blockers:${staleBlockerRows.length}`);
1487
+ if (includeStaleBlockers && rows.staleBlockerRows.length > 0) {
1488
+ warnings.push(`validate_lifecycle_stale_blockers:${rows.staleBlockerRows.length}`);
1422
1489
  }
1423
- if (dependencyCycleDiagnostics.cycle_count > 0 && dependencyCycleSeverity !== "off") {
1424
- warnings.push(`${dependencyCycleSeverity === "error" ? "validate_lifecycle_dependency_cycles_error" : "validate_lifecycle_dependency_cycles"}:${dependencyCycleDiagnostics.cycle_count}`);
1490
+ const dependencyWarning = lifecycleCycleWarningToken("validate_lifecycle_dependency_cycles", dependencyCycleSeverity, dependencyCycleCount);
1491
+ const parentWarning = lifecycleCycleWarningToken("validate_hierarchy_parent_cycle", parentCycleSeverity, parentCycleCount);
1492
+ return [...warnings, ...dependencyWarning ? [dependencyWarning] : [], ...parentWarning ? [parentWarning] : []];
1493
+ }
1494
+ async function linkedArtifactIsMissing(workspaceRoot, artifactPath) {
1495
+ const absolutePath = path.isAbsolute(artifactPath) ? artifactPath : path.resolve(workspaceRoot, artifactPath);
1496
+ try {
1497
+ const stats = await fs.stat(absolutePath);
1498
+ return !stats.isFile() && !stats.isDirectory();
1499
+ } catch (error) {
1500
+ const code = typeof error === "object" && error !== null && "code" in error ? error.code : void 0;
1501
+ return code === "ENOENT" || code === "ENOTDIR";
1425
1502
  }
1426
- if (parentCycleDiagnostics.cycle_count > 0 && parentCycleSeverity !== "off") {
1427
- warnings.push(`${parentCycleSeverity === "error" ? "validate_hierarchy_parent_cycle_error" : "validate_hierarchy_parent_cycle"}:${parentCycleDiagnostics.cycle_count}`);
1503
+ }
1504
+ async function collectLinkedPathScanState(items, workspaceRoot) {
1505
+ const state = {
1506
+ linkedProjectPaths: /* @__PURE__ */ new Set(),
1507
+ remoteLinkedPaths: /* @__PURE__ */ new Set(),
1508
+ missingLinkedPaths: [],
1509
+ staleLinkRows: []
1510
+ };
1511
+ for (const item of items) {
1512
+ const linkedArtifactGroups = [
1513
+ { link_kind: "files", artifacts: item.files ?? [] },
1514
+ { link_kind: "docs", artifacts: item.docs ?? [] }
1515
+ ];
1516
+ for (const group of linkedArtifactGroups) {
1517
+ for (const artifact of group.artifacts) {
1518
+ if (artifact.scope !== "project") {
1519
+ continue;
1520
+ }
1521
+ if (isRemoteLinkedArtifactReference(artifact.path)) {
1522
+ state.remoteLinkedPaths.add(artifact.path.trim());
1523
+ continue;
1524
+ }
1525
+ const normalizedPath = normalizeRelativePath(artifact.path);
1526
+ if (normalizedPath.length === 0) {
1527
+ continue;
1528
+ }
1529
+ state.linkedProjectPaths.add(normalizedPath);
1530
+ if (await linkedArtifactIsMissing(workspaceRoot, artifact.path)) {
1531
+ state.missingLinkedPaths.push(normalizedPath);
1532
+ state.staleLinkRows.push({ item_id: item.id, path: normalizedPath, link_kind: group.link_kind });
1533
+ }
1534
+ }
1535
+ }
1536
+ }
1537
+ return state;
1538
+ }
1539
+ function partitionFileCandidates(fileCandidates, pmRoot, workspaceRoot, fileScanMode, includePmInternals, verboseFileLists) {
1540
+ const strictTrackedAllMode = fileScanMode === "tracked-all-strict";
1541
+ const strictModeForcesPmInternals = strictTrackedAllMode && !includePmInternals;
1542
+ const includePmInternalsEffective = includePmInternals || strictTrackedAllMode;
1543
+ const pmInternalCandidatePrefixes = includePmInternalsEffective ? [] : resolvePmInternalCandidatePrefixes(pmRoot, workspaceRoot);
1544
+ const excludedPmInternalPaths = pmInternalCandidatePrefixes.length === 0 ? [] : fileCandidates.candidateFiles.filter((candidate) => hasPathPrefix(candidate, pmInternalCandidatePrefixes));
1545
+ const candidateFiles = pmInternalCandidatePrefixes.length === 0 ? fileCandidates.candidateFiles : fileCandidates.candidateFiles.filter((candidate) => !hasPathPrefix(candidate, pmInternalCandidatePrefixes));
1546
+ const excludedByReason = {};
1547
+ if (excludedPmInternalPaths.length > 0) {
1548
+ const summarizedPmInternalPaths = summarizeFileList(excludedPmInternalPaths, verboseFileLists);
1549
+ excludedByReason.pm_internals = {
1550
+ count: excludedPmInternalPaths.length,
1551
+ paths: summarizedPmInternalPaths.values,
1552
+ paths_truncated: summarizedPmInternalPaths.truncated,
1553
+ paths_total: summarizedPmInternalPaths.total
1554
+ };
1428
1555
  }
1556
+ return {
1557
+ strictTrackedAllMode,
1558
+ strictModeForcesPmInternals,
1559
+ includePmInternalsEffective,
1560
+ pmInternalCandidatePrefixes,
1561
+ excludedPmInternalPaths,
1562
+ candidateFiles,
1563
+ excludedByReason
1564
+ };
1565
+ }
1566
+ function buildLifecycleCheck(items, includeStaleBlockers, dependencyCycleSeverity, parentCycleSeverity, statusRegistry, lifecyclePatternPolicy, verboseDiagnostics, idPrefix = "pm") {
1567
+ const rows = collectLifecycleScanRows(items, includeStaleBlockers, statusRegistry, lifecyclePatternPolicy);
1568
+ sortLifecycleScanRows(rows);
1569
+ const dependencyCycleDiagnostics = detectLifecycleDependencyCycles(rows.activeItems, idPrefix);
1570
+ const parentCycleDiagnostics = detectLifecycleParentCycles(items);
1571
+ const warnings = buildLifecycleWarnings(rows, includeStaleBlockers, dependencyCycleSeverity, parentCycleSeverity, dependencyCycleDiagnostics.cycle_count, parentCycleDiagnostics.cycle_count);
1429
1572
  const diagnosticLimit = verboseDiagnostics ? Number.POSITIVE_INFINITY : DIAGNOSTIC_LIST_SUMMARY_LIMIT;
1430
- const summarizedClosureLikeRows = summarizeList(closureLikeRows.map((row) => `${row.id}:${row.fields.join(",")}`), diagnosticLimit);
1431
- const summarizedTerminalParentRows = summarizeList(terminalParentRows.map((row) => `${row.id}:${row.parent_id}:${row.parent_status}`), diagnosticLimit);
1432
- const summarizedStaleBlockerRows = summarizeList(staleBlockerRows.map((row) => `${row.id}:${row.status}:${row.reasons.join(",")}`), diagnosticLimit);
1573
+ const summarizedClosureLikeRows = summarizeList(rows.closureLikeRows.map((row) => `${row.id}:${row.fields.join(",")}`), diagnosticLimit);
1574
+ const summarizedTerminalParentRows = summarizeList(rows.terminalParentRows.map((row) => `${row.id}:${row.parent_id}:${row.parent_status}`), diagnosticLimit);
1575
+ const summarizedStaleBlockerRows = summarizeList(rows.staleBlockerRows.map((row) => `${row.id}:${row.status}:${row.reasons.join(",")}`), diagnosticLimit);
1433
1576
  const summarizedDependencyCycleItemIds = summarizeList(dependencyCycleDiagnostics.cycle_item_ids, diagnosticLimit);
1434
1577
  const summarizedDependencyCycleSamplePaths = summarizeList(dependencyCycleDiagnostics.cycle_sample_paths, diagnosticLimit);
1435
1578
  const summarizedParentCycleItemIds = summarizeList(parentCycleDiagnostics.cycle_item_ids, diagnosticLimit);
@@ -1440,15 +1583,15 @@ function buildLifecycleCheck(items, includeStaleBlockers, dependencyCycleSeverit
1440
1583
  name: "lifecycle",
1441
1584
  status: hasErrorSeverityCycle ? "error" : warnings.length === 0 ? "ok" : "warn",
1442
1585
  details: {
1443
- checked_active_items: activeItems.length,
1444
- active_closure_like_metadata_items: closureLikeRows.length,
1586
+ checked_active_items: rows.activeItems.length,
1587
+ active_closure_like_metadata_items: rows.closureLikeRows.length,
1445
1588
  active_closure_like_metadata_rows: summarizedClosureLikeRows.values,
1446
1589
  active_closure_like_metadata_rows_truncated: summarizedClosureLikeRows.truncated,
1447
- active_terminal_parent_items: terminalParentRows.length,
1590
+ active_terminal_parent_items: rows.terminalParentRows.length,
1448
1591
  active_terminal_parent_rows: summarizedTerminalParentRows.values,
1449
1592
  active_terminal_parent_rows_truncated: summarizedTerminalParentRows.truncated,
1450
1593
  stale_blocker_checks_enabled: includeStaleBlockers,
1451
- stale_blocker_items: staleBlockerRows.length,
1594
+ stale_blocker_items: rows.staleBlockerRows.length,
1452
1595
  stale_blocker_rows: summarizedStaleBlockerRows.values,
1453
1596
  stale_blocker_rows_truncated: summarizedStaleBlockerRows.truncated,
1454
1597
  dependency_cycle_severity_policy: dependencyCycleSeverity,
@@ -1478,81 +1621,26 @@ function buildLifecycleCheck(items, includeStaleBlockers, dependencyCycleSeverit
1478
1621
  }
1479
1622
  },
1480
1623
  warnings,
1481
- terminalParentFixRows
1624
+ terminalParentFixRows: rows.terminalParentFixRows
1482
1625
  };
1483
1626
  }
1484
1627
  async function buildFilesCheck(items, workspaceRoot, pmRoot, fileScanMode, includePmInternals, verboseFileLists) {
1485
- const linkedProjectPaths = /* @__PURE__ */ new Set();
1486
- const remoteLinkedPaths = /* @__PURE__ */ new Set();
1487
- const missingLinkedPaths = [];
1488
- const staleLinkRows = [];
1628
+ const linkedPathState = await collectLinkedPathScanState(items, workspaceRoot);
1489
1629
  const itemsById = new Map(items.map((item) => [item.id, item]));
1490
- for (const item of items) {
1491
- const linkedArtifactGroups = [
1492
- { link_kind: "files", artifacts: item.files ?? [] },
1493
- { link_kind: "docs", artifacts: item.docs ?? [] }
1494
- ];
1495
- for (const group of linkedArtifactGroups) {
1496
- for (const artifact of group.artifacts) {
1497
- if (artifact.scope !== "project") {
1498
- continue;
1499
- }
1500
- if (isRemoteLinkedArtifactReference(artifact.path)) {
1501
- remoteLinkedPaths.add(artifact.path.trim());
1502
- continue;
1503
- }
1504
- const normalizedPath = normalizeRelativePath(artifact.path);
1505
- if (normalizedPath.length === 0) {
1506
- continue;
1507
- }
1508
- linkedProjectPaths.add(normalizedPath);
1509
- const absolutePath = path.isAbsolute(artifact.path) ? artifact.path : path.resolve(workspaceRoot, artifact.path);
1510
- let missing = false;
1511
- try {
1512
- const stats = await fs.stat(absolutePath);
1513
- if (!stats.isFile() && !stats.isDirectory()) {
1514
- missing = true;
1515
- }
1516
- } catch {
1517
- missing = true;
1518
- }
1519
- if (missing) {
1520
- missingLinkedPaths.push(normalizedPath);
1521
- staleLinkRows.push({ item_id: item.id, path: normalizedPath, link_kind: group.link_kind });
1522
- }
1523
- }
1524
- }
1525
- }
1526
- const uniqueMissingLinkedPaths = [...new Set(missingLinkedPaths)].sort((left, right) => left.localeCompare(right));
1630
+ const uniqueMissingLinkedPaths = [...new Set(linkedPathState.missingLinkedPaths)].sort((left, right) => left.localeCompare(right));
1527
1631
  const fileCandidates = await collectProjectFileCandidates(workspaceRoot, fileScanMode);
1528
- const strictTrackedAllMode = fileScanMode === "tracked-all-strict";
1529
- const strictModeForcesPmInternals = strictTrackedAllMode && !includePmInternals;
1530
- const includePmInternalsEffective = includePmInternals || strictTrackedAllMode;
1531
- const pmInternalCandidatePrefixes = includePmInternalsEffective ? [] : resolvePmInternalCandidatePrefixes(pmRoot, workspaceRoot);
1532
- const excludedPmInternalPaths = pmInternalCandidatePrefixes.length === 0 ? [] : fileCandidates.candidateFiles.filter((candidate) => hasPathPrefix(candidate, pmInternalCandidatePrefixes));
1533
- const candidateFiles = pmInternalCandidatePrefixes.length === 0 ? fileCandidates.candidateFiles : fileCandidates.candidateFiles.filter((candidate) => !hasPathPrefix(candidate, pmInternalCandidatePrefixes));
1534
- const excludedPmInternalCount = excludedPmInternalPaths.length;
1535
- const excludedByReason = {};
1536
- if (excludedPmInternalCount > 0) {
1537
- const summarizedPmInternalPaths = summarizeFileList(excludedPmInternalPaths, verboseFileLists);
1538
- excludedByReason.pm_internals = {
1539
- count: excludedPmInternalCount,
1540
- paths: summarizedPmInternalPaths.values,
1541
- paths_truncated: summarizedPmInternalPaths.truncated,
1542
- paths_total: summarizedPmInternalPaths.total
1543
- };
1544
- }
1545
- const orphanedFiles = candidateFiles.filter((candidate) => !linkedProjectPaths.has(candidate));
1632
+ const partition = partitionFileCandidates(fileCandidates, pmRoot, workspaceRoot, fileScanMode, includePmInternals, verboseFileLists);
1633
+ const orphanedFiles = partition.candidateFiles.filter((candidate) => !linkedPathState.linkedProjectPaths.has(candidate));
1546
1634
  const orphanedPathRows = buildOrphanedPathRows(orphanedFiles, items);
1547
- const classifiedStalePaths = classifyStaleLinkedPaths(uniqueMissingLinkedPaths, candidateFiles);
1635
+ const classifiedStalePaths = classifyStaleLinkedPaths(uniqueMissingLinkedPaths, partition.candidateFiles);
1548
1636
  const classificationByPath = new Map(classifiedStalePaths.map((entry) => [entry.path, entry.classification]));
1549
1637
  const movedStalePathCount = classifiedStalePaths.filter((entry) => entry.classification === "moved").length;
1550
- const staleLinkPruneRows = staleLinkRows.map((row) => ({
1638
+ const staleLinkPruneRows = linkedPathState.staleLinkRows.map((row) => ({
1551
1639
  ...row,
1552
1640
  classification: classificationByPath.get(row.path) ?? "deleted"
1553
1641
  })).sort((left, right) => left.item_id.localeCompare(right.item_id) || left.path.localeCompare(right.path) || left.link_kind.localeCompare(right.link_kind));
1554
1642
  const warnings = [];
1555
- if (strictModeForcesPmInternals) {
1643
+ if (partition.strictModeForcesPmInternals) {
1556
1644
  warnings.push("validate_files_tracked_all_strict_forces_pm_internals");
1557
1645
  }
1558
1646
  if (uniqueMissingLinkedPaths.length > 0) {
@@ -1561,7 +1649,7 @@ async function buildFilesCheck(items, workspaceRoot, pmRoot, fileScanMode, inclu
1561
1649
  if (orphanedFiles.length > 0) {
1562
1650
  warnings.push(`validate_files_orphaned_paths:${orphanedFiles.length}`);
1563
1651
  }
1564
- const uniqueRemoteLinkedPaths = [...remoteLinkedPaths].sort((left, right) => left.localeCompare(right));
1652
+ const uniqueRemoteLinkedPaths = [...linkedPathState.remoteLinkedPaths].sort((left, right) => left.localeCompare(right));
1565
1653
  const summarizedRemote = summarizeFileList(uniqueRemoteLinkedPaths, verboseFileLists);
1566
1654
  const summarizedMissing = summarizeFileList(uniqueMissingLinkedPaths, verboseFileLists);
1567
1655
  const summarizedOrphaned = summarizeFileList(orphanedFiles, verboseFileLists);
@@ -1587,28 +1675,28 @@ async function buildFilesCheck(items, workspaceRoot, pmRoot, fileScanMode, inclu
1587
1675
  workspace_root: workspaceRoot,
1588
1676
  scan_mode_requested: fileCandidates.requestedMode,
1589
1677
  scan_mode_applied: fileCandidates.appliedMode,
1590
- strict_tracked_all_mode: strictTrackedAllMode,
1591
- strict_mode_forces_pm_internals: strictModeForcesPmInternals,
1592
- strict_mode_forces_pm_internals_notice: strictModeForcesPmInternals ? "tracked-all-strict force-enables PM internals; pass --include-pm-internals to make inclusion explicit." : null,
1678
+ strict_tracked_all_mode: partition.strictTrackedAllMode,
1679
+ strict_mode_forces_pm_internals: partition.strictModeForcesPmInternals,
1680
+ strict_mode_forces_pm_internals_notice: partition.strictModeForcesPmInternals ? "tracked-all-strict force-enables PM internals; pass --include-pm-internals to make inclusion explicit." : null,
1593
1681
  file_list_detail_mode: verboseFileLists ? "full" : "summary",
1594
1682
  file_list_summary_limit: FILE_LIST_SUMMARY_LIMIT,
1595
1683
  candidate_scan_source: fileCandidates.source,
1596
- include_pm_internals: includePmInternalsEffective,
1684
+ include_pm_internals: partition.includePmInternalsEffective,
1597
1685
  include_pm_internals_requested: includePmInternals,
1598
- pm_internal_candidate_prefixes: pmInternalCandidatePrefixes,
1599
- pm_internal_excluded_count: excludedPmInternalCount,
1600
- excluded_total: excludedPmInternalCount,
1601
- excluded_by_reason: excludedByReason,
1602
- linked_project_paths: linkedProjectPaths.size,
1686
+ pm_internal_candidate_prefixes: partition.pmInternalCandidatePrefixes,
1687
+ pm_internal_excluded_count: partition.excludedPmInternalPaths.length,
1688
+ excluded_total: partition.excludedPmInternalPaths.length,
1689
+ excluded_by_reason: partition.excludedByReason,
1690
+ linked_project_paths: linkedPathState.linkedProjectPaths.size,
1603
1691
  remote_linked_paths_count: uniqueRemoteLinkedPaths.length,
1604
1692
  remote_linked_paths_total: summarizedRemote.total,
1605
1693
  remote_linked_paths: summarizedRemote.values,
1606
1694
  remote_linked_paths_truncated: summarizedRemote.truncated,
1607
1695
  candidate_total_raw: fileCandidates.candidateTotal,
1608
1696
  candidate_scanned_raw: fileCandidates.candidateScanned,
1609
- candidate_total: candidateFiles.length,
1610
- candidate_scanned: candidateFiles.length,
1611
- scanned_candidate_files: candidateFiles.length,
1697
+ candidate_total: partition.candidateFiles.length,
1698
+ candidate_scanned: partition.candidateFiles.length,
1699
+ scanned_candidate_files: partition.candidateFiles.length,
1612
1700
  missing_linked_paths_count: uniqueMissingLinkedPaths.length,
1613
1701
  missing_linked_paths_total: summarizedMissing.total,
1614
1702
  missing_linked_paths: summarizedMissing.values,
@@ -1768,7 +1856,7 @@ async function applyValidateFix(fix, global2) {
1768
1856
  case "set_estimate":
1769
1857
  case "reparent":
1770
1858
  case "unset_parent": {
1771
- const { runUpdate } = await import("./update-AMRSOIWP.js");
1859
+ const { runUpdate } = await import("./update-MTCFES6X.js");
1772
1860
  const updateOptions = { message: VALIDATE_AUTO_FIX_MESSAGE };
1773
1861
  if (fix.kind === "set_resolution") {
1774
1862
  updateOptions.resolution = fix.value;
@@ -1828,10 +1916,10 @@ async function applyValidateFixes(applicable, global2) {
1828
1916
  const remove = batch.map((fix) => fix.path).filter((value) => typeof value === "string" && value.length > 0);
1829
1917
  try {
1830
1918
  if (first.kind === "prune_file_link") {
1831
- const { runFiles } = await import("./files-MBNICQFM.js");
1919
+ const { runFiles } = await import("./files-GPIG77EN.js");
1832
1920
  await runFiles(first.item_id, { remove, message: VALIDATE_AUTO_FIX_MESSAGE }, global2);
1833
1921
  } else {
1834
- const { runDocs } = await import("./docs-26S44RXU.js");
1922
+ const { runDocs } = await import("./docs-XJNYBJGE.js");
1835
1923
  await runDocs(first.item_id, { remove, message: VALIDATE_AUTO_FIX_MESSAGE }, global2);
1836
1924
  }
1837
1925
  applied.push(...batch);
@@ -1846,10 +1934,14 @@ var _testOnlyValidateCommand = {
1846
1934
  applyValidateFixes,
1847
1935
  attachValidateFixHints,
1848
1936
  buildCommandReferencesCheck,
1937
+ buildCloseReasonBackfillRows,
1849
1938
  buildFilesCheck,
1850
1939
  buildLifecycleCheck,
1851
1940
  buildLifecycleDependencyGraph,
1852
1941
  buildLifecycleParentGraph,
1942
+ buildEstimateBackfillRows,
1943
+ buildMetadataCounts,
1944
+ buildMissingFieldOccurrences,
1853
1945
  buildOrphanedPathRows,
1854
1946
  classifyOrphanedPath,
1855
1947
  collectDefaultProjectFileCandidates,
@@ -1873,6 +1965,105 @@ var _testOnlyValidateCommand = {
1873
1965
  summarizeDuplicateIssueCodes,
1874
1966
  toMeaningfulString
1875
1967
  };
1968
+ function recordValidateCheck(state, built, fixHintsEnabled) {
1969
+ if (fixHintsEnabled) {
1970
+ attachValidateFixHints(built.check, built.warnings);
1971
+ }
1972
+ state.checks.push(built.check);
1973
+ state.warnings.push(...built.warnings);
1974
+ }
1975
+ async function executeRequestedValidateChecks(params) {
1976
+ const state = {
1977
+ checks: [],
1978
+ warnings: [...params.initialWarnings],
1979
+ closeReasonBackfillRows: [],
1980
+ estimateBackfillRows: [],
1981
+ resolutionBackfillRows: [],
1982
+ terminalParentFixRows: [],
1983
+ staleLinkPruneRows: []
1984
+ };
1985
+ const fixHintsEnabled = params.options.fixHints === true;
1986
+ const fullDiagnostics = params.options.verboseDiagnostics === true || params.options.allAffectedIds === true || params.global.json === true;
1987
+ if (params.requestedChecks.has("metadata")) {
1988
+ const built = buildMetadataCheck(params.items, params.metadataPolicy, params.statusRegistry, fullDiagnostics);
1989
+ state.closeReasonBackfillRows = built.closeReasonBackfillRows;
1990
+ state.estimateBackfillRows = built.estimateBackfillRows;
1991
+ recordValidateCheck(state, built, fixHintsEnabled);
1992
+ }
1993
+ if (params.requestedChecks.has("resolution")) {
1994
+ const built = buildResolutionCheck(params.items, params.statusRegistry, fullDiagnostics);
1995
+ state.resolutionBackfillRows = built.resolutionBackfillRows;
1996
+ recordValidateCheck(state, built, fixHintsEnabled);
1997
+ }
1998
+ if (params.requestedChecks.has("lifecycle")) {
1999
+ const built = buildLifecycleCheck(params.items, Boolean(params.options.checkStaleBlockers), params.dependencyCycleSeverity, params.parentCycleSeverity, params.statusRegistry, params.lifecyclePatternPolicy, fullDiagnostics, params.settings.id_prefix);
2000
+ state.terminalParentFixRows = built.terminalParentFixRows;
2001
+ recordValidateCheck(state, built, fixHintsEnabled);
2002
+ }
2003
+ if (params.requestedChecks.has("files")) {
2004
+ const built = await buildFilesCheck(params.items, params.workspaceRoot, params.pmRoot, params.fileScanMode, Boolean(params.options.includePmInternals), Boolean(params.options.verboseFileLists));
2005
+ state.staleLinkPruneRows = built.staleLinkPruneRows;
2006
+ recordValidateCheck(state, built, fixHintsEnabled);
2007
+ }
2008
+ if (params.requestedChecks.has("command_references")) {
2009
+ recordValidateCheck(state, buildCommandReferencesCheck(params.items, params.settings.id_prefix, fullDiagnostics), fixHintsEnabled);
2010
+ }
2011
+ if (params.requestedChecks.has("history_drift")) {
2012
+ recordValidateCheck(state, await buildHistoryDriftCheck(params.pmRoot, params.items, fullDiagnostics), fixHintsEnabled);
2013
+ }
2014
+ if (params.requestedChecks.has("format_version")) {
2015
+ recordValidateCheck(state, buildFormatVersionCheck(params.items, fullDiagnostics), fixHintsEnabled);
2016
+ }
2017
+ return state;
2018
+ }
2019
+ function planValidateFixes(options, state, settings) {
2020
+ const planned = [];
2021
+ if (options.autoFix === true) {
2022
+ planned.push(...planCloseReasonBackfillFixes(state.closeReasonBackfillRows));
2023
+ planned.push(...planResolutionBackfillFixes(state.resolutionBackfillRows));
2024
+ planned.push(...planEstimateBackfillFixes(state.estimateBackfillRows, settings.validation.estimate_defaults_by_type));
2025
+ planned.push(...planTerminalParentFixes(state.terminalParentFixRows));
2026
+ }
2027
+ if (options.pruneMissing === true) {
2028
+ planned.push(...planStaleLinkPruneFixes(state.staleLinkPruneRows));
2029
+ }
2030
+ return planned;
2031
+ }
2032
+ async function buildValidateFixesSummary(options, state, settings, grantedFixScopes, global2) {
2033
+ if (options.autoFix !== true && options.pruneMissing !== true) {
2034
+ return void 0;
2035
+ }
2036
+ const planned = planValidateFixes(options, state, settings);
2037
+ const { applicable, gated } = partitionFixesByGrant(planned, grantedFixScopes);
2038
+ const dryRun = options.dryRun === true;
2039
+ const appliedFixRows = [];
2040
+ const failedFixRows = [];
2041
+ if (!dryRun) {
2042
+ const applied = await applyValidateFixes(applicable, global2);
2043
+ appliedFixRows.push(...applied.applied.map(toFixOutputRow));
2044
+ failedFixRows.push(...applied.failed.map(({ fix, error }) => ({
2045
+ ...toFixOutputRow(fix),
2046
+ error: error instanceof Error ? error.message : String(error)
2047
+ })));
2048
+ }
2049
+ return {
2050
+ mode: dryRun ? "dry_run" : "apply",
2051
+ auto_fix: options.autoFix === true,
2052
+ prune_missing: options.pruneMissing === true,
2053
+ granted_fix_scopes: [...grantedFixScopes].sort((left, right) => left.localeCompare(right)),
2054
+ planned_count: planned.length,
2055
+ applied_count: appliedFixRows.length,
2056
+ gated_count: gated.length,
2057
+ failed_count: failedFixRows.length,
2058
+ planned_fixes: planned.map(toFixOutputRow),
2059
+ applied_fixes: appliedFixRows,
2060
+ gated_fixes: gated.map((fix) => ({
2061
+ ...toFixOutputRow(fix),
2062
+ gate_hint: `Withheld: re-run with --fix-scope ${fix.gate} to apply.`
2063
+ })),
2064
+ failed_fixes: failedFixRows
2065
+ };
2066
+ }
1876
2067
  async function runValidate(options, global2) {
1877
2068
  const fixesRequested = options.autoFix === true || options.pruneMissing === true;
1878
2069
  if (options.dryRun === true && !fixesRequested) {
@@ -1900,100 +2091,29 @@ async function runValidate(options, global2) {
1900
2091
  const parentCycleSeverity = resolveParentCycleSeverity(options.parentCycleSeverity);
1901
2092
  const fileScanMode = resolveFileScanMode(options.scanMode);
1902
2093
  const workspaceRoot = resolveWorkspaceRoot(pmRoot);
1903
- const checks = [];
1904
- const warnings = [...new Set(itemReadWarnings)];
1905
- const fixHintsEnabled = options.fixHints === true;
1906
- const fullDiagnostics = options.verboseDiagnostics === true || options.allAffectedIds === true || global2.json === true;
1907
- const record = (built) => {
1908
- if (fixHintsEnabled) {
1909
- attachValidateFixHints(built.check, built.warnings);
1910
- }
1911
- checks.push(built.check);
1912
- warnings.push(...built.warnings);
1913
- };
1914
- let closeReasonBackfillRows = [];
1915
- let estimateBackfillRows = [];
1916
- let resolutionBackfillRows = [];
1917
- let terminalParentFixRows = [];
1918
- let staleLinkPruneRows = [];
1919
- if (requestedChecks.has("metadata")) {
1920
- const built = buildMetadataCheck(items, metadataPolicy, statusRegistry, fullDiagnostics);
1921
- closeReasonBackfillRows = built.closeReasonBackfillRows;
1922
- estimateBackfillRows = built.estimateBackfillRows;
1923
- record(built);
1924
- }
1925
- if (requestedChecks.has("resolution")) {
1926
- const built = buildResolutionCheck(items, statusRegistry, fullDiagnostics);
1927
- resolutionBackfillRows = built.resolutionBackfillRows;
1928
- record(built);
1929
- }
1930
- if (requestedChecks.has("lifecycle")) {
1931
- const built = buildLifecycleCheck(items, Boolean(options.checkStaleBlockers), dependencyCycleSeverity, parentCycleSeverity, statusRegistry, lifecyclePatternPolicy, fullDiagnostics, settings.id_prefix);
1932
- terminalParentFixRows = built.terminalParentFixRows;
1933
- record(built);
1934
- }
1935
- if (requestedChecks.has("files")) {
1936
- const built = await buildFilesCheck(items, workspaceRoot, pmRoot, fileScanMode, Boolean(options.includePmInternals), Boolean(options.verboseFileLists));
1937
- staleLinkPruneRows = built.staleLinkPruneRows;
1938
- record(built);
1939
- }
1940
- if (requestedChecks.has("command_references")) {
1941
- record(buildCommandReferencesCheck(items, settings.id_prefix, fullDiagnostics));
1942
- }
1943
- if (requestedChecks.has("history_drift")) {
1944
- record(await buildHistoryDriftCheck(pmRoot, items, fullDiagnostics));
1945
- }
1946
- if (requestedChecks.has("format_version")) {
1947
- record(buildFormatVersionCheck(items, fullDiagnostics));
1948
- }
1949
- let fixes;
1950
- if (fixesRequested) {
1951
- const planned = [];
1952
- if (options.autoFix === true) {
1953
- planned.push(...planCloseReasonBackfillFixes(closeReasonBackfillRows));
1954
- planned.push(...planResolutionBackfillFixes(resolutionBackfillRows));
1955
- planned.push(...planEstimateBackfillFixes(estimateBackfillRows, settings.validation.estimate_defaults_by_type));
1956
- planned.push(...planTerminalParentFixes(terminalParentFixRows));
1957
- }
1958
- if (options.pruneMissing === true) {
1959
- planned.push(...planStaleLinkPruneFixes(staleLinkPruneRows));
1960
- }
1961
- const { applicable, gated } = partitionFixesByGrant(planned, grantedFixScopes);
1962
- const dryRun = options.dryRun === true;
1963
- const appliedFixRows = [];
1964
- const failedFixRows = [];
1965
- if (!dryRun) {
1966
- const applied = await applyValidateFixes(applicable, global2);
1967
- appliedFixRows.push(...applied.applied.map(toFixOutputRow));
1968
- failedFixRows.push(...applied.failed.map(({ fix, error }) => ({
1969
- ...toFixOutputRow(fix),
1970
- error: error instanceof Error ? error.message : String(error)
1971
- })));
1972
- }
1973
- fixes = {
1974
- mode: dryRun ? "dry_run" : "apply",
1975
- auto_fix: options.autoFix === true,
1976
- prune_missing: options.pruneMissing === true,
1977
- granted_fix_scopes: [...grantedFixScopes].sort((left, right) => left.localeCompare(right)),
1978
- planned_count: planned.length,
1979
- applied_count: appliedFixRows.length,
1980
- gated_count: gated.length,
1981
- failed_count: failedFixRows.length,
1982
- planned_fixes: planned.map(toFixOutputRow),
1983
- applied_fixes: appliedFixRows,
1984
- gated_fixes: gated.map((fix) => ({
1985
- ...toFixOutputRow(fix),
1986
- gate_hint: `Withheld: re-run with --fix-scope ${fix.gate} to apply.`
1987
- })),
1988
- failed_fixes: failedFixRows
1989
- };
1990
- }
1991
- const normalizedWarnings = [...new Set(warnings)].sort((left, right) => left.localeCompare(right));
1992
- const hasErrors = checks.some((check) => check.status === "error");
2094
+ const state = await executeRequestedValidateChecks({
2095
+ requestedChecks,
2096
+ options,
2097
+ global: global2,
2098
+ pmRoot,
2099
+ workspaceRoot,
2100
+ settings,
2101
+ items,
2102
+ statusRegistry,
2103
+ metadataPolicy,
2104
+ lifecyclePatternPolicy,
2105
+ dependencyCycleSeverity,
2106
+ parentCycleSeverity,
2107
+ fileScanMode,
2108
+ initialWarnings: [...new Set(itemReadWarnings)]
2109
+ });
2110
+ const fixes = fixesRequested ? await buildValidateFixesSummary(options, state, settings, grantedFixScopes, global2) : void 0;
2111
+ const normalizedWarnings = [...new Set(state.warnings)].sort((left, right) => left.localeCompare(right));
2112
+ const hasErrors = state.checks.some((check) => check.status === "error");
1993
2113
  return {
1994
2114
  ok: !hasErrors,
1995
2115
  has_warnings: normalizedWarnings.length > 0,
1996
- checks,
2116
+ checks: state.checks,
1997
2117
  warnings: normalizedWarnings,
1998
2118
  ...fixes !== void 0 ? { fixes } : {},
1999
2119
  generated_at: nowIso()
@@ -2003,4 +2123,4 @@ export {
2003
2123
  _testOnlyValidateCommand,
2004
2124
  runValidate
2005
2125
  };
2006
- //# sourceMappingURL=validate-MTUVL5VC.js.map
2126
+ //# sourceMappingURL=validate-732RWS5W.js.map