@joshuafolkken/kit 1.3041.0 → 1.3092.0

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 (1243) hide show
  1. package/.claude/skills/workflow-commands/backlogrun-steps.md +1 -1
  2. package/.claude/skills/workflow-commands/fullrun-steps.md +3 -3
  3. package/.claude/skills/workflow-commands/halfrun.md +3 -2
  4. package/.claude/skills/workflow-commands/kickoff.md +9 -2
  5. package/.claude/skills/workflow-commands/prerequisite.md +2 -0
  6. package/.claude/skills/workflow-commands/progress-watcher.md +10 -8
  7. package/.claude/skills/workflow-commands/retrospective.md +2 -1
  8. package/.claude/skills/workflow-commands/split-assessment.md +4 -0
  9. package/.github/workflows/ci.yml +0 -20
  10. package/.github/workflows/pr-classification.yml +0 -5
  11. package/.github/workflows/publish.yml +0 -1
  12. package/.github/workflows/sonar-qube.yml +0 -5
  13. package/README.md +2 -0
  14. package/SECURITY.md +2 -1
  15. package/dist/.inputs-verified.json +1 -1
  16. package/dist/commands/adopt.js +29 -20
  17. package/dist/commands/auto-ok-judge-cli.js +43 -33
  18. package/dist/commands/auto-ok-main.js +73 -74
  19. package/dist/commands/backlog-budget-main.js +5 -6
  20. package/dist/commands/backlog-drive-cli.js +286 -305
  21. package/dist/commands/backlog-next-main.js +111 -108
  22. package/dist/commands/backlog-offer-main.js +148 -112
  23. package/dist/commands/backlog-plan-cli.js +123 -120
  24. package/dist/commands/backlog-triage-cli.js +131 -128
  25. package/dist/commands/backlogrun-cli.js +273 -264
  26. package/dist/commands/behavior-cli.js +23 -26
  27. package/dist/commands/bytes-command.js +56 -59
  28. package/dist/commands/cases-cli.js +4 -5
  29. package/dist/commands/check-commit-message-main.js +3 -4
  30. package/dist/commands/check-related.js +125 -119
  31. package/dist/commands/chunk-26JL4UU4.js +365 -0
  32. package/dist/commands/chunk-2BIVHPCA.js +85 -0
  33. package/dist/commands/chunk-2CKJODCK.js +245 -0
  34. package/dist/commands/chunk-2E6PSONB.js +46 -0
  35. package/dist/commands/chunk-2GA4775H.js +77 -0
  36. package/dist/commands/chunk-2O64H5UJ.js +462 -0
  37. package/dist/commands/chunk-2OEXY4GM.js +252 -0
  38. package/dist/commands/chunk-2OMIHPPE.js +51 -0
  39. package/dist/commands/chunk-2ONSHOAY.js +46 -0
  40. package/dist/commands/chunk-2Q7MGFYB.js +1208 -0
  41. package/dist/commands/chunk-2SA3W4JF.js +41 -0
  42. package/dist/commands/chunk-2VY7CJ2R.js +212 -0
  43. package/dist/commands/chunk-2WRDAQPJ.js +74 -0
  44. package/dist/commands/chunk-2XLR7R6E.js +541 -0
  45. package/dist/commands/chunk-2XZF3YFY.js +47 -0
  46. package/dist/commands/chunk-33TAOZUE.js +29 -0
  47. package/dist/commands/chunk-374XGAWD.js +158 -0
  48. package/dist/commands/chunk-3CJNQU7P.js +179 -0
  49. package/dist/commands/chunk-3D5T6KMW.js +59 -0
  50. package/dist/commands/chunk-3EW5LTN3.js +114 -0
  51. package/dist/commands/chunk-3F3RNIG2.js +128 -0
  52. package/dist/commands/chunk-3FLTEJZY.js +74 -0
  53. package/dist/commands/chunk-3JWPTRNI.js +60 -0
  54. package/dist/commands/chunk-3MQTOUXT.js +94 -0
  55. package/dist/commands/chunk-3PCUERXE.js +19 -0
  56. package/dist/commands/chunk-3U6A5WON.js +173 -0
  57. package/dist/commands/chunk-3YT3RCSI.js +140 -0
  58. package/dist/commands/chunk-43DU7DYZ.js +540 -0
  59. package/dist/commands/chunk-43H725LG.js +132 -0
  60. package/dist/commands/chunk-46STCE6Q.js +48 -0
  61. package/dist/commands/chunk-46WEC6HZ.js +82 -0
  62. package/dist/commands/chunk-47J4KOZP.js +46 -0
  63. package/dist/commands/chunk-47W7PF4T.js +22 -0
  64. package/dist/commands/chunk-4F4KARQN.js +229 -0
  65. package/dist/commands/chunk-4GUGC4IW.js +338 -0
  66. package/dist/commands/chunk-4HB7NWXP.js +263 -0
  67. package/dist/commands/chunk-4HOTJAO6.js +89 -0
  68. package/dist/commands/chunk-4I5AA4P5.js +237 -0
  69. package/dist/commands/chunk-4IDINPBE.js +525 -0
  70. package/dist/commands/chunk-4K7KLR7L.js +69 -0
  71. package/dist/commands/chunk-4MGTNY2L.js +347 -0
  72. package/dist/commands/chunk-4NSIW3UB.js +104 -0
  73. package/dist/commands/chunk-4YTKV6WV.js +37 -0
  74. package/dist/commands/chunk-5ARNFMQK.js +1263 -0
  75. package/dist/commands/chunk-5AZTSESD.js +114 -0
  76. package/dist/commands/chunk-5FUI2MLY.js +89 -0
  77. package/dist/commands/chunk-5GI5GLC4.js +214 -0
  78. package/dist/commands/chunk-5IHEBIPD.js +333 -0
  79. package/dist/commands/chunk-5KAW5GPF.js +44 -0
  80. package/dist/commands/chunk-5KSJEWXR.js +77 -0
  81. package/dist/commands/chunk-5OF2B4BF.js +35 -0
  82. package/dist/commands/chunk-5PLJ7R3D.js +126 -0
  83. package/dist/commands/chunk-5PPWXOCF.js +64 -0
  84. package/dist/commands/chunk-5VQCL33M.js +46 -0
  85. package/dist/commands/chunk-5Y7FOJLX.js +186 -0
  86. package/dist/commands/chunk-5YTEMF4O.js +110 -0
  87. package/dist/commands/chunk-62NYXZCC.js +241 -0
  88. package/dist/commands/chunk-6KUA7MRG.js +64 -0
  89. package/dist/commands/chunk-6LDEZFYR.js +88 -0
  90. package/dist/commands/chunk-6NXIZMIK.js +122 -0
  91. package/dist/commands/chunk-6O45F6YI.js +86 -0
  92. package/dist/commands/chunk-6OHJBQDE.js +184 -0
  93. package/dist/commands/chunk-6WDCCG3M.js +1249 -0
  94. package/dist/commands/chunk-6ZHXEQAI.js +715 -0
  95. package/dist/commands/chunk-736NECRD.js +16 -0
  96. package/dist/commands/chunk-77LEKVEE.js +32 -0
  97. package/dist/commands/chunk-7CX5VYOL.js +50 -0
  98. package/dist/commands/chunk-7DGHFBU7.js +247 -0
  99. package/dist/commands/chunk-7E43YW53.js +128 -0
  100. package/dist/commands/chunk-7EAYFMDN.js +235 -0
  101. package/dist/commands/chunk-7HP3FQGQ.js +51 -0
  102. package/dist/commands/chunk-7JOOMFDI.js +155 -0
  103. package/dist/commands/chunk-7OEBSPPU.js +321 -0
  104. package/dist/commands/chunk-A3JYZWBS.js +803 -0
  105. package/dist/commands/chunk-A3LCN4KA.js +84 -0
  106. package/dist/commands/chunk-ABLXBG6C.js +98 -0
  107. package/dist/commands/chunk-AN7BFVHU.js +244 -0
  108. package/dist/commands/chunk-AQCVEQSM.js +99 -0
  109. package/dist/commands/chunk-AT46EY7H.js +393 -0
  110. package/dist/commands/chunk-AU563VKH.js +75 -0
  111. package/dist/commands/chunk-AUTD5FV2.js +1077 -0
  112. package/dist/commands/chunk-AV26CMY6.js +304 -0
  113. package/dist/commands/chunk-B2PJEV3S.js +246 -0
  114. package/dist/commands/chunk-B545ENGY.js +214 -0
  115. package/dist/commands/chunk-B5HP6T4L.js +170 -0
  116. package/dist/commands/chunk-B5XYAWNN.js +37 -0
  117. package/dist/commands/chunk-B73IIRMS.js +207 -0
  118. package/dist/commands/chunk-BAEDHPXW.js +160 -0
  119. package/dist/commands/chunk-BDSG6JKH.js +977 -0
  120. package/dist/commands/chunk-BE6F4YK2.js +769 -0
  121. package/dist/commands/chunk-BFKTUD3V.js +33 -0
  122. package/dist/commands/chunk-BLRXHK2V.js +17 -0
  123. package/dist/commands/chunk-BLUAO4QW.js +173 -0
  124. package/dist/commands/chunk-BML6MEUB.js +326 -0
  125. package/dist/commands/chunk-BPDNGJXY.js +63 -0
  126. package/dist/commands/chunk-BQLKWGGC.js +118 -0
  127. package/dist/commands/chunk-BRMJVCP7.js +167 -0
  128. package/dist/commands/chunk-BRWR5YKU.js +268 -0
  129. package/dist/commands/chunk-BUZAYEBD.js +319 -0
  130. package/dist/commands/chunk-BVUL57IX.js +139 -0
  131. package/dist/commands/chunk-CC4BIGCA.js +20 -0
  132. package/dist/commands/chunk-CCHJZEF5.js +4220 -0
  133. package/dist/commands/chunk-CDK7QZWG.js +44 -0
  134. package/dist/commands/chunk-CDYFUCDC.js +72 -0
  135. package/dist/commands/chunk-CEADAQIL.js +170 -0
  136. package/dist/commands/chunk-CNL3SLM6.js +116 -0
  137. package/dist/commands/chunk-CNQ7D2GZ.js +104 -0
  138. package/dist/commands/chunk-CTXJVMHW.js +48 -0
  139. package/dist/commands/chunk-CUWT6UQO.js +13 -0
  140. package/dist/commands/chunk-CVRDJCOE.js +125 -0
  141. package/dist/commands/chunk-D6CF5QGM.js +80 -0
  142. package/dist/commands/chunk-DACNQAXC.js +20 -0
  143. package/dist/commands/chunk-DDOS32JU.js +74 -0
  144. package/dist/commands/chunk-DDZVMXZD.js +481 -0
  145. package/dist/commands/chunk-DF6QD4AF.js +52 -0
  146. package/dist/commands/chunk-DFEXNB44.js +159 -0
  147. package/dist/commands/chunk-DHDKG5HZ.js +151 -0
  148. package/dist/commands/chunk-DHJRFBKO.js +223 -0
  149. package/dist/commands/chunk-DKDWOE3C.js +78 -0
  150. package/dist/commands/chunk-DKO5VTEH.js +65 -0
  151. package/dist/commands/chunk-DLHH3MLS.js +85 -0
  152. package/dist/commands/chunk-DOYNK72G.js +81 -0
  153. package/dist/commands/chunk-DS53UUDH.js +679 -0
  154. package/dist/commands/chunk-DUA4E4ES.js +230 -0
  155. package/dist/commands/chunk-DURHGVRC.js +33 -0
  156. package/dist/commands/chunk-DVCMQMRN.js +191 -0
  157. package/dist/commands/chunk-E3YKMCCJ.js +108 -0
  158. package/dist/commands/chunk-E4F2RTKC.js +272 -0
  159. package/dist/commands/chunk-E4PFCTXN.js +127 -0
  160. package/dist/commands/chunk-EAOTR2WL.js +24 -0
  161. package/dist/commands/chunk-EE4VOZJP.js +167 -0
  162. package/dist/commands/chunk-EHVEWJQ4.js +33 -0
  163. package/dist/commands/chunk-EMFSPPMH.js +98 -0
  164. package/dist/commands/chunk-EN65ZS3S.js +73 -0
  165. package/dist/commands/chunk-ES42XPAD.js +123 -0
  166. package/dist/commands/chunk-ESUY7KTZ.js +137 -0
  167. package/dist/commands/chunk-ET6IRQ3L.js +330 -0
  168. package/dist/commands/chunk-EWCUT7U2.js +1314 -0
  169. package/dist/commands/chunk-EWXXEGXL.js +149 -0
  170. package/dist/commands/chunk-EZYW54OQ.js +7569 -0
  171. package/dist/commands/chunk-F2RDEF2J.js +205 -0
  172. package/dist/commands/chunk-F2U46HAE.js +52 -0
  173. package/dist/commands/chunk-F2VYWU6Z.js +653 -0
  174. package/dist/commands/chunk-F4SGOTUF.js +36 -0
  175. package/dist/commands/chunk-F4YMLVWN.js +183 -0
  176. package/dist/commands/chunk-F5N2QIFD.js +213 -0
  177. package/dist/commands/chunk-F7B4ESZE.js +80 -0
  178. package/dist/commands/chunk-FJM2HWKW.js +299 -0
  179. package/dist/commands/chunk-FJMXUDEY.js +3985 -0
  180. package/dist/commands/chunk-FM7VVAK6.js +426 -0
  181. package/dist/commands/chunk-FQWRM5FC.js +67 -0
  182. package/dist/commands/chunk-FT33ZCSB.js +298 -0
  183. package/dist/commands/chunk-G2DNS74C.js +53 -0
  184. package/dist/commands/chunk-G75GWNNY.js +101 -0
  185. package/dist/commands/chunk-GA2YSPFH.js +32 -0
  186. package/dist/commands/chunk-GAVSK6P6.js +230 -0
  187. package/dist/commands/chunk-GB2BRQVL.js +300 -0
  188. package/dist/commands/chunk-GBMZXFFC.js +44 -0
  189. package/dist/commands/chunk-GDP7QXYE.js +76 -0
  190. package/dist/commands/chunk-GGWXF7RJ.js +70 -0
  191. package/dist/commands/chunk-GHOTKHI4.js +30 -0
  192. package/dist/commands/chunk-GMVN6ZP2.js +48 -0
  193. package/dist/commands/chunk-GNTTGRCX.js +133 -0
  194. package/dist/commands/chunk-GOY5JECO.js +130 -0
  195. package/dist/commands/chunk-GVDRRBHZ.js +507 -0
  196. package/dist/commands/chunk-GWTBIGYC.js +550 -0
  197. package/dist/commands/chunk-GZL6ISVM.js +72 -0
  198. package/dist/commands/chunk-HALHQILI.js +51 -0
  199. package/dist/commands/chunk-HAT7AFBF.js +85 -0
  200. package/dist/commands/chunk-HDVSZ6CZ.js +292 -0
  201. package/dist/commands/chunk-HE3GOMR7.js +88 -0
  202. package/dist/commands/chunk-HEFUC4ZW.js +65 -0
  203. package/dist/commands/chunk-HESWKELD.js +60 -0
  204. package/dist/commands/chunk-HNFBEB4L.js +77 -0
  205. package/dist/commands/chunk-HRN73FQJ.js +77 -0
  206. package/dist/commands/chunk-HYE3MBAN.js +113 -0
  207. package/dist/commands/chunk-IAB6LCJL.js +18 -0
  208. package/dist/commands/chunk-IAGENI2U.js +42 -0
  209. package/dist/commands/chunk-ICPVBHIX.js +48 -0
  210. package/dist/commands/chunk-IEKW3ON6.js +161 -0
  211. package/dist/commands/chunk-IOKOHB7P.js +109 -0
  212. package/dist/commands/chunk-IONGJJYM.js +179 -0
  213. package/dist/commands/chunk-IP23WOWP.js +126 -0
  214. package/dist/commands/chunk-IPS7EBE5.js +140 -0
  215. package/dist/commands/chunk-IXZZSST7.js +459 -0
  216. package/dist/commands/chunk-J4XHEOOW.js +156 -0
  217. package/dist/commands/chunk-JDHLHYJJ.js +208 -0
  218. package/dist/commands/chunk-JEYITIWB.js +423 -0
  219. package/dist/commands/chunk-JGX7JIW4.js +126 -0
  220. package/dist/commands/chunk-JHIGDFBS.js +59 -0
  221. package/dist/commands/chunk-JI2EGXZX.js +53 -0
  222. package/dist/commands/chunk-JNV3VRK2.js +47 -0
  223. package/dist/commands/chunk-JPMAW2VZ.js +91 -0
  224. package/dist/commands/chunk-JQEY6KDP.js +90 -0
  225. package/dist/commands/chunk-JSJDIEGZ.js +88 -0
  226. package/dist/commands/chunk-JT5ICRFF.js +44 -0
  227. package/dist/commands/chunk-JUCJ4Y42.js +77 -0
  228. package/dist/commands/chunk-K3OZBV3L.js +49 -0
  229. package/dist/commands/chunk-K5H3CLZZ.js +430 -0
  230. package/dist/commands/chunk-K6P5PISC.js +114 -0
  231. package/dist/commands/chunk-KD3SEAMV.js +402 -0
  232. package/dist/commands/chunk-KDCHY7XO.js +88 -0
  233. package/dist/commands/chunk-KDGX3JTV.js +51 -0
  234. package/dist/commands/chunk-KGSEWOKI.js +353 -0
  235. package/dist/commands/chunk-KHGDZQRG.js +271 -0
  236. package/dist/commands/chunk-KIS7JFNP.js +217 -0
  237. package/dist/commands/chunk-KKHD3C2P.js +114 -0
  238. package/dist/commands/chunk-KKIIY5I5.js +67 -0
  239. package/dist/commands/chunk-KN46UC77.js +114 -0
  240. package/dist/commands/chunk-KP2BVAS5.js +125 -0
  241. package/dist/commands/chunk-KPAJBJXG.js +63 -0
  242. package/dist/commands/chunk-KPMAJP6D.js +145 -0
  243. package/dist/commands/chunk-KR6WUAJM.js +122 -0
  244. package/dist/commands/chunk-KWLNK2NJ.js +391 -0
  245. package/dist/commands/chunk-L2CLCNXW.js +144 -0
  246. package/dist/commands/chunk-L7MDU6D7.js +155 -0
  247. package/dist/commands/chunk-L7VD4MLF.js +78 -0
  248. package/dist/commands/chunk-LBMAJDGN.js +124 -0
  249. package/dist/commands/chunk-LBVYFW3I.js +38 -0
  250. package/dist/commands/chunk-LE3M42CF.js +350 -0
  251. package/dist/commands/chunk-LIPUSINQ.js +140 -0
  252. package/dist/commands/chunk-LJVZWE3A.js +1885 -0
  253. package/dist/commands/chunk-LKSSQVDA.js +49 -0
  254. package/dist/commands/chunk-LL6G34MF.js +93 -0
  255. package/dist/commands/chunk-LNQOL2CL.js +321 -0
  256. package/dist/commands/chunk-LS7P324N.js +72 -0
  257. package/dist/commands/chunk-LU5EOGFQ.js +50 -0
  258. package/dist/commands/chunk-LX2ENXHZ.js +197 -0
  259. package/dist/commands/chunk-M32UPB2D.js +110 -0
  260. package/dist/commands/chunk-M3UGRNNB.js +103 -0
  261. package/dist/commands/chunk-M4WG74Q7.js +260 -0
  262. package/dist/commands/chunk-M5HA2ZCG.js +105 -0
  263. package/dist/commands/chunk-MDGPJOLK.js +351 -0
  264. package/dist/commands/chunk-MDKRTUE4.js +288 -0
  265. package/dist/commands/chunk-MFZVRWRS.js +34 -0
  266. package/dist/commands/chunk-MHXIJKGP.js +304 -0
  267. package/dist/commands/chunk-MK4CARBI.js +90 -0
  268. package/dist/commands/chunk-MLJDW7YN.js +64 -0
  269. package/dist/commands/chunk-MNLHYAJO.js +80 -0
  270. package/dist/commands/chunk-MOD3FG4V.js +419 -0
  271. package/dist/commands/chunk-MRAEJLXL.js +83 -0
  272. package/dist/commands/chunk-MRW2WYJS.js +68 -0
  273. package/dist/commands/chunk-MXPCEZL5.js +23 -0
  274. package/dist/commands/chunk-N2XH7QBY.js +103 -0
  275. package/dist/commands/chunk-N2ZF6T4E.js +332 -0
  276. package/dist/commands/chunk-N36NZMAL.js +79 -0
  277. package/dist/commands/chunk-N4EMFHQ6.js +114 -0
  278. package/dist/commands/chunk-N4P64UIH.js +211 -0
  279. package/dist/commands/chunk-NABSSY4P.js +204 -0
  280. package/dist/commands/chunk-NDQIJBRQ.js +100 -0
  281. package/dist/commands/chunk-NDR4PCVG.js +29 -0
  282. package/dist/commands/chunk-NEOCCN6D.js +302 -0
  283. package/dist/commands/chunk-NFKWFOFM.js +45 -0
  284. package/dist/commands/chunk-NFUPJBBG.js +516 -0
  285. package/dist/commands/chunk-NHEBKL7X.js +170 -0
  286. package/dist/commands/chunk-NHTEC5U4.js +99 -0
  287. package/dist/commands/chunk-NOSG3RUP.js +84 -0
  288. package/dist/commands/chunk-NOSODWWK.js +1132 -0
  289. package/dist/commands/chunk-NPXXYG6Z.js +580 -0
  290. package/dist/commands/chunk-NR2JDBPV.js +75 -0
  291. package/dist/commands/chunk-NRULNBYI.js +1153 -0
  292. package/dist/commands/chunk-NTGF5N3N.js +110 -0
  293. package/dist/commands/chunk-NTIVNQKF.js +73 -0
  294. package/dist/commands/chunk-NUCFIYZL.js +119 -0
  295. package/dist/commands/chunk-NVMV7BYX.js +88 -0
  296. package/dist/commands/chunk-NYWPTYGL.js +169 -0
  297. package/dist/commands/chunk-NZ45KOLL.js +104 -0
  298. package/dist/commands/chunk-O45BX4EL.js +39 -0
  299. package/dist/commands/chunk-O46T4ANI.js +229 -0
  300. package/dist/commands/chunk-O5JGV7NA.js +245 -0
  301. package/dist/commands/chunk-O7ESC4HL.js +566 -0
  302. package/dist/commands/chunk-OBYLXHCH.js +86 -0
  303. package/dist/commands/chunk-OKN63ZH5.js +109 -0
  304. package/dist/commands/chunk-ON4IKRGS.js +469 -0
  305. package/dist/commands/chunk-OT74RSQO.js +82 -0
  306. package/dist/commands/chunk-OVCVINYW.js +143 -0
  307. package/dist/commands/chunk-OZKLVTYI.js +342 -0
  308. package/dist/commands/chunk-P3LJ2Q4N.js +555 -0
  309. package/dist/commands/chunk-P43GWYR6.js +185 -0
  310. package/dist/commands/chunk-P6ASP2DY.js +132 -0
  311. package/dist/commands/chunk-PBAEJ5PT.js +38 -0
  312. package/dist/commands/chunk-PCZROH3R.js +100 -0
  313. package/dist/commands/chunk-PF3PMT2Q.js +46 -0
  314. package/dist/commands/chunk-PILH72AV.js +170 -0
  315. package/dist/commands/chunk-PJYTUUTH.js +34 -0
  316. package/dist/commands/chunk-PKXTISWR.js +58 -0
  317. package/dist/commands/chunk-PSGLUBSB.js +74 -0
  318. package/dist/commands/chunk-PUQA7F6Y.js +186 -0
  319. package/dist/commands/chunk-PVRDJU2B.js +126 -0
  320. package/dist/commands/chunk-Q3HM2BEH.js +45 -0
  321. package/dist/commands/chunk-Q42NF2TL.js +47 -0
  322. package/dist/commands/chunk-Q4ULMZAS.js +106 -0
  323. package/dist/commands/chunk-QCRUPRQ2.js +207 -0
  324. package/dist/commands/chunk-QFIKPGMC.js +280 -0
  325. package/dist/commands/chunk-QSBYULSS.js +100 -0
  326. package/dist/commands/chunk-QSJCZATC.js +18 -0
  327. package/dist/commands/chunk-QTJPCXEW.js +23 -0
  328. package/dist/commands/chunk-QTQAI2M2.js +179 -0
  329. package/dist/commands/chunk-QTVVFV4Q.js +127 -0
  330. package/dist/commands/chunk-QX2EMUXV.js +102 -0
  331. package/dist/commands/chunk-QXBOECGL.js +272 -0
  332. package/dist/commands/chunk-QXCG3SG4.js +88 -0
  333. package/dist/commands/chunk-QZVMGAWV.js +307 -0
  334. package/dist/commands/chunk-R36VZIKU.js +53 -0
  335. package/dist/commands/chunk-R3F7F3TX.js +94 -0
  336. package/dist/commands/chunk-R5AABJZJ.js +1062 -0
  337. package/dist/commands/chunk-R7PYR4HW.js +389 -0
  338. package/dist/commands/chunk-RDUFVQVJ.js +997 -0
  339. package/dist/commands/chunk-RESNXNDG.js +54 -0
  340. package/dist/commands/chunk-RFIOZTXY.js +305 -0
  341. package/dist/commands/chunk-RFWB2KAV.js +102 -0
  342. package/dist/commands/chunk-RFXON3FK.js +25 -0
  343. package/dist/commands/chunk-RGEB5L37.js +66 -0
  344. package/dist/commands/chunk-RGRLLF2J.js +119 -0
  345. package/dist/commands/chunk-RLRIMYXM.js +178 -0
  346. package/dist/commands/chunk-RNB3DQOZ.js +70 -0
  347. package/dist/commands/chunk-RO4QEZJO.js +172 -0
  348. package/dist/commands/chunk-RS5HBJY6.js +161 -0
  349. package/dist/commands/chunk-RV7EQIE4.js +202 -0
  350. package/dist/commands/chunk-RWPCK3CO.js +41 -0
  351. package/dist/commands/chunk-RWYSVFIA.js +250 -0
  352. package/dist/commands/chunk-RYKK75YT.js +289 -0
  353. package/dist/commands/chunk-S4JE63QE.js +704 -0
  354. package/dist/commands/chunk-S4OZJIXD.js +134 -0
  355. package/dist/commands/chunk-SD4EX75H.js +177 -0
  356. package/dist/commands/chunk-SJITWFNY.js +480 -0
  357. package/dist/commands/chunk-SKGDMAIA.js +33 -0
  358. package/dist/commands/chunk-SNSZ25XZ.js +393 -0
  359. package/dist/commands/chunk-SQZZHK6X.js +119 -0
  360. package/dist/commands/chunk-SRTEE34O.js +93 -0
  361. package/dist/commands/chunk-SYTCTLMD.js +285 -0
  362. package/dist/commands/chunk-T6JUDQMW.js +181 -0
  363. package/dist/commands/chunk-T6OUNP7E.js +426 -0
  364. package/dist/commands/chunk-TEXUEBGE.js +208 -0
  365. package/dist/commands/chunk-TFDVTU6O.js +910 -0
  366. package/dist/commands/chunk-TFYYXETQ.js +472 -0
  367. package/dist/commands/chunk-TMFKVJUW.js +121 -0
  368. package/dist/commands/chunk-TNJU4CXD.js +32 -0
  369. package/dist/commands/chunk-TRHWBUWE.js +61 -0
  370. package/dist/commands/chunk-TROCFVCU.js +45 -0
  371. package/dist/commands/chunk-TTTZZN7F.js +269 -0
  372. package/dist/commands/chunk-TUBBESHU.js +85 -0
  373. package/dist/commands/chunk-TVZIFZZN.js +62 -0
  374. package/dist/commands/chunk-TXRWAL63.js +144 -0
  375. package/dist/commands/chunk-U46YTYJQ.js +92 -0
  376. package/dist/commands/chunk-U5EO4QEV.js +48 -0
  377. package/dist/commands/chunk-UCO333EX.js +47 -0
  378. package/dist/commands/chunk-UIXQ4IYT.js +445 -0
  379. package/dist/commands/chunk-UJGNYPMD.js +716 -0
  380. package/dist/commands/chunk-URZ4RDC4.js +220 -0
  381. package/dist/commands/chunk-UUH3DE77.js +57 -0
  382. package/dist/commands/chunk-UVY5ODCM.js +60 -0
  383. package/dist/commands/chunk-UWMB6EOU.js +45 -0
  384. package/dist/commands/chunk-UX3HCPLX.js +449 -0
  385. package/dist/commands/chunk-UY62WJV6.js +120 -0
  386. package/dist/commands/chunk-V2T5DP3B.js +224 -0
  387. package/dist/commands/chunk-VAHQ4AFM.js +585 -0
  388. package/dist/commands/chunk-VCWNMRH7.js +71 -0
  389. package/dist/commands/chunk-VHLDQ3PH.js +30 -0
  390. package/dist/commands/chunk-VL5I2IOD.js +332 -0
  391. package/dist/commands/chunk-VLN6TSPJ.js +139 -0
  392. package/dist/commands/chunk-VMG3QB6C.js +81 -0
  393. package/dist/commands/chunk-VO25PMGS.js +58 -0
  394. package/dist/commands/chunk-VTLWODJ2.js +133 -0
  395. package/dist/commands/chunk-VXE3V3OC.js +335 -0
  396. package/dist/commands/chunk-VY7ZJMDT.js +469 -0
  397. package/dist/commands/chunk-W3MDLQZF.js +137 -0
  398. package/dist/commands/chunk-W4BR6QNU.js +1241 -0
  399. package/dist/commands/chunk-WCYRNNKF.js +76 -0
  400. package/dist/commands/chunk-WEUUJIWQ.js +84 -0
  401. package/dist/commands/chunk-WNBJK6QE.js +84 -0
  402. package/dist/commands/chunk-WR5PKCQW.js +61 -0
  403. package/dist/commands/chunk-WR73HTRG.js +121 -0
  404. package/dist/commands/chunk-WRNMUQTD.js +95 -0
  405. package/dist/commands/chunk-WROJTXWZ.js +138 -0
  406. package/dist/commands/chunk-WTIPX5NG.js +43 -0
  407. package/dist/commands/chunk-WWLCQREY.js +225 -0
  408. package/dist/commands/chunk-WXLW7S4M.js +71 -0
  409. package/dist/commands/chunk-WXXLJQBO.js +67 -0
  410. package/dist/commands/chunk-X4LYH6Q4.js +56 -0
  411. package/dist/commands/chunk-XAEL24EG.js +66 -0
  412. package/dist/commands/chunk-XCCT6GKA.js +74 -0
  413. package/dist/commands/chunk-XDR2BRDL.js +216 -0
  414. package/dist/commands/chunk-XRQMVAB4.js +85 -0
  415. package/dist/commands/chunk-XSKJAG72.js +91 -0
  416. package/dist/commands/chunk-XTJA34ND.js +492 -0
  417. package/dist/commands/chunk-XUXCFPDK.js +218 -0
  418. package/dist/commands/chunk-XXPDFJRI.js +48 -0
  419. package/dist/commands/chunk-Y6OGDG5I.js +49 -0
  420. package/dist/commands/chunk-YEAE46TS.js +98 -0
  421. package/dist/commands/chunk-YEQFAEVW.js +112 -0
  422. package/dist/commands/chunk-YJZAD4Z5.js +103 -0
  423. package/dist/commands/chunk-YMAEYY5R.js +278 -0
  424. package/dist/commands/chunk-YNCF66RK.js +1052 -0
  425. package/dist/commands/chunk-YOA25SII.js +210 -0
  426. package/dist/commands/chunk-YOZTZMAT.js +38 -0
  427. package/dist/commands/chunk-YSGRHVZG.js +897 -0
  428. package/dist/commands/chunk-YSLGWRQN.js +646 -0
  429. package/dist/commands/chunk-YTXCLGGL.js +168 -0
  430. package/dist/commands/chunk-YVHJN2HS.js +74 -0
  431. package/dist/commands/chunk-YY7XVVSB.js +43 -0
  432. package/dist/commands/chunk-Z5GZV4DV.js +16 -0
  433. package/dist/commands/chunk-Z6QLFPFB.js +907 -0
  434. package/dist/commands/chunk-ZB52ZIEA.js +1629 -0
  435. package/dist/commands/chunk-ZCD4AV2P.js +73 -0
  436. package/dist/commands/chunk-ZCHZU6NX.js +799 -0
  437. package/dist/commands/chunk-ZEH2B3DF.js +239 -0
  438. package/dist/commands/chunk-ZEUKX3RZ.js +245 -0
  439. package/dist/commands/chunk-ZGANVZCA.js +92 -0
  440. package/dist/commands/chunk-ZGBXUY7R.js +198 -0
  441. package/dist/commands/chunk-ZGEUWHFF.js +297 -0
  442. package/dist/commands/chunk-ZHSNQ2F7.js +161 -0
  443. package/dist/commands/chunk-ZIIUBGON.js +773 -0
  444. package/dist/commands/chunk-ZJ5S4VFD.js +258 -0
  445. package/dist/commands/chunk-ZNIIA275.js +59 -0
  446. package/dist/commands/chunk-ZV6BZZJ2.js +271 -0
  447. package/dist/commands/ci-timing-cli.js +22 -3
  448. package/dist/commands/code-symbol-cli.js +21 -7
  449. package/dist/commands/codex-hook-adapter.js +124 -119
  450. package/dist/commands/command-derive.js +9 -11
  451. package/dist/commands/cost-audit-main.js +118 -119
  452. package/dist/commands/cost-main.js +5 -7
  453. package/dist/commands/cspell-cached.js +55 -57
  454. package/dist/commands/defect-origin-main.js +42 -37
  455. package/dist/commands/defect-report-main.js +33 -25
  456. package/dist/commands/diff-summary-cli.js +3 -4
  457. package/dist/commands/disposition-cli.js +117 -118
  458. package/dist/commands/doctor.js +24 -11
  459. package/dist/commands/document-read-cli.js +50 -53
  460. package/dist/commands/document-section-main.js +50 -53
  461. package/dist/commands/dogfood-commit-cli.js +19 -4
  462. package/dist/commands/effect-audit-cli.js +40 -41
  463. package/dist/commands/epic-audit-main.js +88 -86
  464. package/dist/commands/epic-bundle-main.js +122 -119
  465. package/dist/commands/epic-check.js +37 -31
  466. package/dist/commands/epic-main.js +129 -126
  467. package/dist/commands/epic-next-main.js +85 -83
  468. package/dist/commands/eval-run.js +6 -7
  469. package/dist/commands/format-edited-cli.js +71 -46
  470. package/dist/commands/format.js +41 -56
  471. package/dist/commands/fresh-machine-cli.js +24 -7
  472. package/dist/commands/gh-usage-cli.js +22 -22
  473. package/dist/commands/git-followup-workflow.js +158 -158
  474. package/dist/commands/git-gh-checks-failed-main.js +23 -15
  475. package/dist/commands/git-workflow.js +52 -53
  476. package/dist/commands/github-release-cli.js +3 -3
  477. package/dist/commands/hook-ledger-cli.js +93 -94
  478. package/dist/commands/init-main.js +40 -40
  479. package/dist/commands/inputs.json +2042 -2002
  480. package/dist/commands/issue-ack-cli.js +28 -21
  481. package/dist/commands/issue-already-done-cli.js +107 -110
  482. package/dist/commands/issue-body-cli.js +71 -73
  483. package/dist/commands/issue-cite-main.js +35 -28
  484. package/dist/commands/issue-comment-main.js +36 -30
  485. package/dist/commands/issue-consolidate-cli.js +54 -54
  486. package/dist/commands/issue-file-main.js +274 -148
  487. package/dist/commands/issue-fold-existing-cli.js +126 -123
  488. package/dist/commands/issue-fold-main.js +57 -60
  489. package/dist/commands/issue-lint-main.js +59 -61
  490. package/dist/commands/issue-measured-cli.js +108 -110
  491. package/dist/commands/issue-plan-cli.js +156 -155
  492. package/dist/commands/issue-premise-unmet-cli.js +111 -113
  493. package/dist/commands/issue-priority-cli.js +38 -32
  494. package/dist/commands/issue-read-main.js +38 -33
  495. package/dist/commands/issue-release-class-cli.js +37 -31
  496. package/dist/commands/issue-release-main.js +35 -29
  497. package/dist/commands/issue-scout-main.js +123 -120
  498. package/dist/commands/issue-spill-main.js +149 -144
  499. package/dist/commands/issue-state-main.js +36 -31
  500. package/dist/commands/issue-tick-cli.js +37 -31
  501. package/dist/commands/josh-completion.js +21 -24
  502. package/dist/commands/lane-adopt-cli.js +53 -55
  503. package/dist/commands/lane-breakdown-cli.js +193 -172
  504. package/dist/commands/lane-cli.js +199 -180
  505. package/dist/commands/lane-launch-main.js +106 -56
  506. package/dist/commands/lane-limit-cli.js +119 -116
  507. package/dist/commands/lane-measure-cli.js +408 -245
  508. package/dist/commands/lane-pause-cli.js +51 -54
  509. package/dist/commands/lane-plan-cli.js +148 -147
  510. package/dist/commands/lane-resolve-cli.js +48 -50
  511. package/dist/commands/lane-restart-cli.js +185 -168
  512. package/dist/commands/lane-why-cli.js +121 -122
  513. package/dist/commands/lane-withdraw-cli.js +84 -86
  514. package/dist/commands/latest-corepack.js +3 -2
  515. package/dist/commands/latest-if-required-cli.js +12 -15
  516. package/dist/commands/latest-lane-guard-main.js +2 -3
  517. package/dist/commands/latest-scope-main.js +5 -7
  518. package/dist/commands/latest-update.js +3 -2
  519. package/dist/commands/lines-command.js +8 -10
  520. package/dist/commands/lint-parallel-main.js +65 -67
  521. package/dist/commands/lint-related.js +149 -133
  522. package/dist/commands/lint-rule.js +64 -66
  523. package/dist/commands/lockfile-policy.js +29 -32
  524. package/dist/commands/main-merge-main.js +23 -25
  525. package/dist/commands/main-sync-main.js +23 -24
  526. package/dist/commands/managed-config-scope-cli.js +11 -10
  527. package/dist/commands/measure-rerun-cli.js +31 -26
  528. package/dist/commands/metrics-command.js +97 -100
  529. package/dist/commands/observation-record-cli.js +24 -14
  530. package/dist/commands/observations-flush-cli.js +50 -52
  531. package/dist/commands/overrides-check.js +1 -1
  532. package/dist/commands/package-scout-cli.js +70 -73
  533. package/dist/commands/pin-verify-cli.js +21 -2
  534. package/dist/commands/plan-consumers-main.js +3 -4
  535. package/dist/commands/plan-scaffold-cli.js +145 -146
  536. package/dist/commands/pr-classification-main.js +22 -3
  537. package/dist/commands/pre-commit-lint.js +30 -34
  538. package/dist/commands/pre-commit-type-check.js +55 -55
  539. package/dist/commands/pre-push-unit.js +69 -70
  540. package/dist/commands/pretool-guard-cli.js +111 -113
  541. package/dist/commands/prevent-main-commit.js +2 -3
  542. package/dist/commands/project-profile-cli.js +24 -9
  543. package/dist/commands/propagate.js +31 -23
  544. package/dist/commands/prose-stale-cli.js +48 -42
  545. package/dist/commands/publishable-range-check.js +3 -3
  546. package/dist/commands/read-set-cli.js +58 -61
  547. package/dist/commands/refactor-scan-cli.js +8 -9
  548. package/dist/commands/release-cli.js +57 -57
  549. package/dist/commands/release-scope-main.js +41 -36
  550. package/dist/commands/rename-cli.js +64 -36
  551. package/dist/commands/repo-party-cli.js +3 -4
  552. package/dist/commands/report-template-cli.js +4 -5
  553. package/dist/commands/reserved-run.js +17 -20
  554. package/dist/commands/retrospective-cli.js +126 -127
  555. package/dist/commands/review-attest-cli.js +28 -20
  556. package/dist/commands/review-brief-main.js +184 -167
  557. package/dist/commands/review-findings-cli.js +23 -13
  558. package/dist/commands/review-pair-cli.js +180 -156
  559. package/dist/commands/review-record-main.js +171 -147
  560. package/dist/commands/review-round2-cli.js +89 -91
  561. package/dist/commands/review-stops-cli.js +51 -54
  562. package/dist/commands/review-submit-cli.js +184 -167
  563. package/dist/commands/rule-list.js +78 -80
  564. package/dist/commands/rule-value-cli.js +115 -116
  565. package/dist/commands/ruleset-check-cli.js +23 -6
  566. package/dist/commands/run-add-cli.js +115 -75
  567. package/dist/commands/run-board-main.js +172 -169
  568. package/dist/commands/run-carry-cli.js +182 -174
  569. package/dist/commands/run-chain-cli.js +184 -160
  570. package/dist/commands/run-cut-cli.js +206 -168
  571. package/dist/commands/run-ending-cli.js +51 -54
  572. package/dist/commands/run-entry-cli.js +230 -283
  573. package/dist/commands/run-event-cli.js +18 -21
  574. package/dist/commands/run-handoff-cli.js +75 -78
  575. package/dist/commands/run-handoff-lanes-cli.js +48 -51
  576. package/dist/commands/run-hold-main.js +105 -107
  577. package/dist/commands/run-liveness-cli.js +47 -49
  578. package/dist/commands/run-merge-main.js +159 -151
  579. package/dist/commands/run-next-cli.js +128 -129
  580. package/dist/commands/run-park-cli.js +137 -140
  581. package/dist/commands/run-pause-cli.js +190 -186
  582. package/dist/commands/run-pickup-cli.js +49 -52
  583. package/dist/commands/run-prep-main.js +124 -125
  584. package/dist/commands/run-prime-cli.js +175 -147
  585. package/dist/commands/run-progress-main.js +149 -146
  586. package/dist/commands/run-report-cli.js +60 -60
  587. package/dist/commands/run-review-cli.js +229 -214
  588. package/dist/commands/run-ship-cli.js +258 -252
  589. package/dist/commands/run-ship-evidence-cli.js +71 -72
  590. package/dist/commands/run-ship-lap-W66LTXJJ.js +28 -0
  591. package/dist/commands/run-ship-wait-main.js +83 -85
  592. package/dist/commands/run-split-cli.js +176 -172
  593. package/dist/commands/run-stale-main.js +72 -75
  594. package/dist/commands/run-status-cli.js +44 -44
  595. package/dist/commands/run-step-cli.js +213 -211
  596. package/dist/commands/run-tail-cli.js +23 -18
  597. package/dist/commands/run-tidy-main.js +67 -69
  598. package/dist/commands/run-wake-main.js +206 -187
  599. package/dist/commands/run-watcher-guard-cli.js +63 -66
  600. package/dist/commands/security-audit-main.js +21 -24
  601. package/dist/commands/security-audit-provision-main.js +9 -11
  602. package/dist/commands/selfcheck-cli.js +63 -57
  603. package/dist/commands/session-language-main.js +70 -73
  604. package/dist/commands/sonar-hotspots-cli.js +9 -8
  605. package/dist/commands/sonar-new-code-cli.js +3 -4
  606. package/dist/commands/split-assess-cli.js +55 -58
  607. package/dist/commands/split-child-recover-cli.js +38 -39
  608. package/dist/commands/start.js +64 -64
  609. package/dist/commands/stash-pop-main.js +4 -5
  610. package/dist/commands/stash-push-main.js +7 -9
  611. package/dist/commands/stop-guard.js +180 -176
  612. package/dist/commands/sync-main.js +30 -15
  613. package/dist/commands/telegram-test-main.js +29 -22
  614. package/dist/commands/test-declared.js +29 -15
  615. package/dist/commands/test-e2e-guard.js +54 -54
  616. package/dist/commands/test-pinned-main.js +57 -56
  617. package/dist/commands/test-reach-cli.js +40 -32
  618. package/dist/commands/test-red-main.js +12 -14
  619. package/dist/commands/test-related-Z6YY2GFH.js +113 -0
  620. package/dist/commands/test-related-main.js +89 -89
  621. package/dist/commands/test-unit-guard-main.js +37 -37
  622. package/dist/commands/time-cli.js +54 -57
  623. package/dist/commands/time-density-cli.js +26 -29
  624. package/dist/commands/tree-status-cli.js +6 -8
  625. package/dist/commands/type-check-command.js +26 -11
  626. package/dist/commands/ui-routes-cli.js +5 -6
  627. package/dist/commands/ui-shot-cli.js +1 -1
  628. package/dist/commands/uninstall.js +44 -43
  629. package/dist/commands/unused-members-KVKZDTXD.js +329 -0
  630. package/dist/commands/unused-members-cli.js +27 -12
  631. package/dist/commands/upstream-interrupt-main.js +159 -151
  632. package/dist/commands/verification-gate.js +85 -86
  633. package/dist/commands/version-check.js +25 -8
  634. package/dist/hooks/chunk-3SA3FIQC.js +6869 -0
  635. package/dist/hooks/chunk-46PTTMGE.js +1625 -0
  636. package/dist/hooks/chunk-5NIBRHWG.js +77 -0
  637. package/dist/hooks/chunk-76QKN2K3.js +258 -0
  638. package/dist/hooks/chunk-CHEKMGFP.js +321 -0
  639. package/dist/hooks/chunk-DCILEVDR.js +5173 -0
  640. package/dist/hooks/chunk-HVNGIM5W.js +5092 -0
  641. package/dist/hooks/chunk-L6IZZ2IL.js +11219 -0
  642. package/dist/hooks/chunk-UZXMFOVK.js +9170 -0
  643. package/dist/hooks/chunk-WCJ2GWYJ.js +1381 -0
  644. package/dist/hooks/chunk-YRKS5ZKE.js +1915 -0
  645. package/dist/hooks/codex-hook-adapter.js +11 -12
  646. package/dist/hooks/daemon.js +2140 -1387
  647. package/dist/hooks/format-edited.js +6 -6
  648. package/dist/hooks/inputs.json +512 -488
  649. package/dist/hooks/pretool-guard.js +8 -8
  650. package/dist/hooks/run-ship-lap-P5555IG7.js +8 -0
  651. package/dist/hooks/session-lang.js +10 -8
  652. package/dist/hooks/stop-guard.js +962 -669
  653. package/dist/inputs.json +73 -64
  654. package/dist/josh.js +1029 -577
  655. package/dist/registry-migrate.mjs +33938 -0
  656. package/dist/version/index.js +4251 -175
  657. package/package.json +4 -1
  658. package/prompts/collaboration-workflow/principles.md +4 -1
  659. package/prompts/collaboration-workflow/rule-delivery.md +1 -1
  660. package/scripts/agent/codex-launch-identity.ts +70 -0
  661. package/scripts/auto-ok/auto-ok-cli.ts +2 -0
  662. package/scripts/auto-ok/auto-ok-judge-write.ts +2 -0
  663. package/scripts/auto-ok/auto-ok-judge.ts +3 -1
  664. package/scripts/backlog/backlog-arrival.ts +1 -1
  665. package/scripts/backlog/backlog-budget.ts +5 -2
  666. package/scripts/backlog/backlog-defect-priority.ts +1 -1
  667. package/scripts/backlog/backlog-dispatch-bound.ts +17 -0
  668. package/scripts/backlog/backlog-drain-flush.ts +38 -3
  669. package/scripts/backlog/backlog-drive-cli.ts +1 -1
  670. package/scripts/backlog/backlog-drive-hold.ts +28 -5
  671. package/scripts/backlog/backlog-drive-launch.ts +37 -15
  672. package/scripts/backlog/backlog-drive-listing.ts +39 -23
  673. package/scripts/backlog/backlog-drive-retrospective-unit.ts +3 -2
  674. package/scripts/backlog/backlog-drive-split-unit.ts +1 -0
  675. package/scripts/backlog/backlog-hold-codes.ts +7 -0
  676. package/scripts/backlog/backlog-hold-text.ts +14 -1
  677. package/scripts/backlog/backlog-measure-close.ts +6 -0
  678. package/scripts/backlog/backlog-next-shared.ts +20 -2
  679. package/scripts/backlog/backlog-next.ts +24 -3
  680. package/scripts/backlog/backlog-offer-cli.ts +69 -16
  681. package/scripts/build/build-migration.ts +25 -0
  682. package/scripts/build/build.ts +2 -0
  683. package/scripts/epic/epic-classify.ts +6 -1
  684. package/scripts/epic/epic-live.ts +46 -0
  685. package/scripts/followup/followup-failed-tests.ts +71 -10
  686. package/scripts/followup/followup-job-rerun.ts +2 -2
  687. package/scripts/gate/change-scope-action.integration.test.ts +88 -0
  688. package/scripts/gate/change-scope-action.ts +2 -0
  689. package/scripts/gate/check-related-order.ts +6 -7
  690. package/scripts/gate/check-related.ts +18 -8
  691. package/scripts/gate/core-admission.ts +17 -30
  692. package/scripts/gate/core-budget-poll.ts +183 -0
  693. package/scripts/gate/core-budget-timing.ts +1 -1
  694. package/scripts/gate/core-budget.ts +24 -112
  695. package/scripts/gate/core-wait-record.ts +52 -7
  696. package/scripts/gate/machine-capacity.ts +6 -2
  697. package/scripts/gate/metrics-totals.ts +11 -0
  698. package/scripts/gate/path-glob.test.ts +18 -0
  699. package/scripts/gate/toolchain-inputs.consumer.test.ts +36 -0
  700. package/scripts/gh/fix-gh-packages-logic.ts +22 -15
  701. package/scripts/gh/gh-request-tally.ts +4 -0
  702. package/scripts/hooks/bash-revert.ts +79 -31
  703. package/scripts/hooks/format-edited-file.ts +6 -8
  704. package/scripts/hooks/implementation-shell.ts +3 -2
  705. package/scripts/init/distributed-paths.ts +18 -5
  706. package/scripts/init/init-actions.ts +16 -1
  707. package/scripts/init/init-bootstrap.ts +2 -0
  708. package/scripts/init/init-logic.ts +40 -8
  709. package/scripts/init/init.ts +11 -3
  710. package/scripts/issue/defect-rate-cli.ts +19 -13
  711. package/scripts/issue/issue-file-batch.ts +7 -3
  712. package/scripts/issue/issue-file-cli.ts +19 -6
  713. package/scripts/issue/issue-file-main.ts +6 -1
  714. package/scripts/issue/issue-file-pass.ts +17 -0
  715. package/scripts/issue/issue-file.ts +3 -0
  716. package/scripts/issue/issue-not-before.ts +9 -2
  717. package/scripts/issue/issue-observation-gate.ts +141 -0
  718. package/scripts/issue/issue-observation-prime.ts +83 -0
  719. package/scripts/issue/issue-publication-state.ts +61 -0
  720. package/scripts/issue/issue-publication.ts +144 -0
  721. package/scripts/issue/issue-sample-prime.ts +2 -0
  722. package/scripts/issue/issue-search-count.ts +26 -0
  723. package/scripts/issue/issue-search.ts +128 -3
  724. package/scripts/issue/issue-spill-cli.ts +4 -0
  725. package/scripts/issue/upstream-interrupt-cli.ts +21 -5
  726. package/scripts/josh/josh-commands-ai.ts +1 -1
  727. package/scripts/josh/josh-commands-development.ts +1 -1
  728. package/scripts/josh/josh-commands-issue-write.ts +9 -0
  729. package/scripts/josh/josh-commands-run.ts +6 -1
  730. package/scripts/josh/josh-commands-ship.ts +5 -5
  731. package/scripts/josh/josh-run.ts +5 -2
  732. package/scripts/josh/session-language-cli.ts +1 -1
  733. package/scripts/josh/shared-cache.ts +16 -1
  734. package/scripts/lane/lane-await.ts +15 -0
  735. package/scripts/lane/lane-cli.ts +2 -0
  736. package/scripts/lane/lane-dispatch-dependency.ts +102 -0
  737. package/scripts/lane/lane-dispatch-wait-stats.ts +239 -0
  738. package/scripts/lane/lane-dispatch.ts +44 -5
  739. package/scripts/lane/lane-early-push-count.ts +21 -0
  740. package/scripts/lane/lane-install.ts +15 -5
  741. package/scripts/lane/lane-launch-cli.ts +35 -14
  742. package/scripts/lane/lane-ledger-kind.ts +2 -0
  743. package/scripts/lane/lane-ledger-schema-ship.ts +5 -1
  744. package/scripts/lane/lane-ledger-schema.ts +15 -1
  745. package/scripts/lane/lane-ledger-write.ts +4 -1
  746. package/scripts/lane/lane-relaunch.ts +25 -2
  747. package/scripts/lane/lane-state-record.ts +2 -0
  748. package/scripts/lane/lane-state.ts +8 -1
  749. package/scripts/lane/lane-stats-tables.ts +2 -0
  750. package/scripts/lane/openai-lane-supervisor.ts +16 -1
  751. package/scripts/lib/inherited-scope.ts +48 -0
  752. package/scripts/lint/format-steps.ts +93 -0
  753. package/scripts/lint/format.ts +6 -49
  754. package/scripts/lint/lint-related-fix.ts +35 -0
  755. package/scripts/lint/lint-related.ts +22 -35
  756. package/scripts/propagate/propagate-steps.ts +9 -4
  757. package/scripts/registry-migration/migrate-cli.ts +50 -0
  758. package/scripts/registry-migration/migrate-files.ts +154 -0
  759. package/scripts/registry-migration/migrate-lock.ts +147 -0
  760. package/scripts/registry-migration/migrate.ts +235 -0
  761. package/scripts/registry-migration/npm-acquisition.ts +118 -0
  762. package/scripts/review/review-record-cli.ts +27 -13
  763. package/scripts/review/review-record-pinned.ts +15 -6
  764. package/scripts/run/add/run-add-cli.ts +21 -3
  765. package/scripts/run/add/run-add.ts +26 -9
  766. package/scripts/run/board/run-board-header.ts +4 -5
  767. package/scripts/run/board/run-board-layout.ts +2 -2
  768. package/scripts/run/board/run-board-read.ts +7 -1
  769. package/scripts/run/board/run-board-reason.ts +12 -0
  770. package/scripts/run/board/run-board-retry-wait.ts +35 -0
  771. package/scripts/run/board/run-board-roots.ts +25 -2
  772. package/scripts/run/board/run-board-seat.ts +9 -2
  773. package/scripts/run/board/run-board-setup.ts +19 -11
  774. package/scripts/run/board/run-board-status.ts +2 -0
  775. package/scripts/run/board/run-board-tick.ts +7 -1
  776. package/scripts/run/carry/run-carry-reclaim.ts +12 -2
  777. package/scripts/run/carry/run-carry-session.ts +48 -0
  778. package/scripts/run/carry/run-carry.ts +21 -14
  779. package/scripts/run/cut/run-cut-resume.ts +15 -3
  780. package/scripts/run/cut/run-cut.ts +1 -1
  781. package/scripts/run/detached-launch.ts +14 -5
  782. package/scripts/run/early-push-record.ts +6 -2
  783. package/scripts/run/event/run-event-setup.ts +2 -0
  784. package/scripts/run/event/run-event-stream-emit.ts +27 -7
  785. package/scripts/run/hold/run-hold-cli.ts +40 -5
  786. package/scripts/run/merge/run-merge-cut-release.ts +17 -0
  787. package/scripts/run/merge/run-merge-human-review.ts +6 -0
  788. package/scripts/run/merge/run-merge-steps.ts +4 -57
  789. package/scripts/run/merge/run-merge-waits.ts +54 -0
  790. package/scripts/run/prime/run-prime-cli.ts +16 -2
  791. package/scripts/run/review/run-review-cli.ts +5 -7
  792. package/scripts/run/review/run-review-early-push.ts +19 -8
  793. package/scripts/run/review/run-review-join-read.ts +33 -6
  794. package/scripts/run/review/run-review-pinned-remaining.ts +124 -0
  795. package/scripts/run/review/run-review-pinned-steps.ts +7 -1
  796. package/scripts/run/run-halfrun-resume.ts +49 -6
  797. package/scripts/run/run-headless.ts +3 -0
  798. package/scripts/run/run-pr-return.ts +14 -5
  799. package/scripts/run/run-repair-attempt.ts +219 -0
  800. package/scripts/run/ship/run-ship-lap.ts +5 -17
  801. package/scripts/run/ship/run-ship-pre-detach-pinned.ts +4 -13
  802. package/scripts/run/ship/run-ship-scoped.ts +66 -30
  803. package/scripts/run/startup/run-startup-schema.ts +31 -0
  804. package/scripts/run/startup/run-startup-store.ts +130 -0
  805. package/scripts/run/startup/run-startup.ts +119 -0
  806. package/scripts/run/wake/run-wake-codex.ts +144 -0
  807. package/scripts/run/wake/run-wake-driver.ts +32 -7
  808. package/scripts/run/wake/run-wake-handoff.ts +9 -8
  809. package/scripts/run/wake/run-wake-loop.ts +23 -3
  810. package/scripts/run/wake/run-wake-ports.ts +17 -3
  811. package/scripts/run/wake/run-wake-takeover.ts +6 -3
  812. package/scripts/run/wake/run-wake-window.ts +4 -1
  813. package/scripts/run/wake/run-wake.ts +5 -0
  814. package/scripts/sync/sync-ai-files.ts +17 -0
  815. package/scripts/sync/sync-configs.ts +11 -1
  816. package/scripts/sync/sync.ts +5 -1
  817. package/scripts/test/test-related-cap.ts +7 -3
  818. package/scripts/test/test-related-imports.ts +92 -0
  819. package/scripts/test/vitest-failure-summary.ts +7 -0
  820. package/scripts/version/npm-registry.ts +45 -7
  821. package/scripts/version/upgrade-shell-command.ts +34 -2
  822. package/templates/workflows/ci.yml +0 -15
  823. package/templates/workflows/github-release.yml +0 -5
  824. package/dist/commands/chunk-23GH6B3D.js +0 -333
  825. package/dist/commands/chunk-24ZDAWML.js +0 -48
  826. package/dist/commands/chunk-2BB5ZR2F.js +0 -128
  827. package/dist/commands/chunk-2BJJUTZA.js +0 -59
  828. package/dist/commands/chunk-2CXT6MBR.js +0 -51
  829. package/dist/commands/chunk-2DJLAUYB.js +0 -109
  830. package/dist/commands/chunk-2EZTYLO4.js +0 -179
  831. package/dist/commands/chunk-2FJJYCBD.js +0 -149
  832. package/dist/commands/chunk-2PHOLX62.js +0 -43
  833. package/dist/commands/chunk-2QM72JCJ.js +0 -338
  834. package/dist/commands/chunk-2VRITY55.js +0 -41
  835. package/dist/commands/chunk-2XAH3MHV.js +0 -23
  836. package/dist/commands/chunk-34KZDKQJ.js +0 -304
  837. package/dist/commands/chunk-352KLSFX.js +0 -67
  838. package/dist/commands/chunk-36LOGVJ7.js +0 -38
  839. package/dist/commands/chunk-3AEDZZNL.js +0 -223
  840. package/dist/commands/chunk-3B2HEFNO.js +0 -51
  841. package/dist/commands/chunk-3PEXBHRN.js +0 -33
  842. package/dist/commands/chunk-3Z425MM3.js +0 -61
  843. package/dist/commands/chunk-3ZOX4G4U.js +0 -88
  844. package/dist/commands/chunk-452HWOJ7.js +0 -395
  845. package/dist/commands/chunk-475EFIJV.js +0 -178
  846. package/dist/commands/chunk-47UZB54M.js +0 -73
  847. package/dist/commands/chunk-4DN4XVPL.js +0 -716
  848. package/dist/commands/chunk-4DVM57T7.js +0 -86
  849. package/dist/commands/chunk-4EADHJVC.js +0 -247
  850. package/dist/commands/chunk-4HERA2GY.js +0 -95
  851. package/dist/commands/chunk-4JI35CVO.js +0 -70
  852. package/dist/commands/chunk-4L4LNWZ7.js +0 -143
  853. package/dist/commands/chunk-4N32QKJZ.js +0 -170
  854. package/dist/commands/chunk-4NRSFLG7.js +0 -185
  855. package/dist/commands/chunk-4OKRPAUT.js +0 -98
  856. package/dist/commands/chunk-4PUKDAXL.js +0 -42
  857. package/dist/commands/chunk-4Q64PG46.js +0 -478
  858. package/dist/commands/chunk-4UDTQVDD.js +0 -278
  859. package/dist/commands/chunk-4WR2LEZL.js +0 -123
  860. package/dist/commands/chunk-4ZJOC6OK.js +0 -298
  861. package/dist/commands/chunk-4ZQM4I7R.js +0 -533
  862. package/dist/commands/chunk-54X37JEJ.js +0 -170
  863. package/dist/commands/chunk-56KW5EOK.js +0 -85
  864. package/dist/commands/chunk-5CG3XU3O.js +0 -74
  865. package/dist/commands/chunk-5ESZLHDZ.js +0 -514
  866. package/dist/commands/chunk-5FBRMARM.js +0 -578
  867. package/dist/commands/chunk-5RG4S66L.js +0 -47
  868. package/dist/commands/chunk-5UJGACVN.js +0 -137
  869. package/dist/commands/chunk-5Y7B7FDL.js +0 -44
  870. package/dist/commands/chunk-5Z6E5ZUV.js +0 -89
  871. package/dist/commands/chunk-5ZNUH4LV.js +0 -1722
  872. package/dist/commands/chunk-5ZTQX7OS.js +0 -125
  873. package/dist/commands/chunk-66NX6EXR.js +0 -29
  874. package/dist/commands/chunk-66TGK5XL.js +0 -84
  875. package/dist/commands/chunk-6CFHLMKM.js +0 -555
  876. package/dist/commands/chunk-6DDK5XWK.js +0 -74
  877. package/dist/commands/chunk-6GQX752S.js +0 -145
  878. package/dist/commands/chunk-6HRRZANN.js +0 -55
  879. package/dist/commands/chunk-6MAZ55GF.js +0 -1241
  880. package/dist/commands/chunk-6OP63TBT.js +0 -78
  881. package/dist/commands/chunk-6Q3XUCLM.js +0 -204
  882. package/dist/commands/chunk-6RUWU2SB.js +0 -45
  883. package/dist/commands/chunk-6UCWAFQY.js +0 -245
  884. package/dist/commands/chunk-6WKJ3GDA.js +0 -408
  885. package/dist/commands/chunk-6YURRFRU.js +0 -461
  886. package/dist/commands/chunk-6YVURZAJ.js +0 -350
  887. package/dist/commands/chunk-6Z4YZG7P.js +0 -169
  888. package/dist/commands/chunk-77BIN247.js +0 -122
  889. package/dist/commands/chunk-7ABHNNY3.js +0 -529
  890. package/dist/commands/chunk-7C7FOKJK.js +0 -115
  891. package/dist/commands/chunk-7HAGC6SW.js +0 -1062
  892. package/dist/commands/chunk-7KKUFLH5.js +0 -56
  893. package/dist/commands/chunk-7LJQMM2K.js +0 -102
  894. package/dist/commands/chunk-7MJYLUF4.js +0 -99
  895. package/dist/commands/chunk-7NHZCI5Y.js +0 -704
  896. package/dist/commands/chunk-7OQ56DVW.js +0 -239
  897. package/dist/commands/chunk-7VWPGTZO.js +0 -260
  898. package/dist/commands/chunk-7YZXS3AK.js +0 -30
  899. package/dist/commands/chunk-A4HOQKOG.js +0 -85
  900. package/dist/commands/chunk-A6T2N7VC.js +0 -159
  901. package/dist/commands/chunk-AAUDI7WJ.js +0 -250
  902. package/dist/commands/chunk-AC26ZUG5.js +0 -259
  903. package/dist/commands/chunk-ACZ52JPI.js +0 -140
  904. package/dist/commands/chunk-AJ65WNJB.js +0 -230
  905. package/dist/commands/chunk-AK7SEO4Y.js +0 -177
  906. package/dist/commands/chunk-AKK56GNX.js +0 -205
  907. package/dist/commands/chunk-AKQYYHP2.js +0 -461
  908. package/dist/commands/chunk-ALDAS2WG.js +0 -137
  909. package/dist/commands/chunk-ANUTT56I.js +0 -85
  910. package/dist/commands/chunk-AVVMDVGO.js +0 -68
  911. package/dist/commands/chunk-B3M5WSGN.js +0 -72
  912. package/dist/commands/chunk-B7ZNIEDV.js +0 -351
  913. package/dist/commands/chunk-BCUDQWYK.js +0 -77
  914. package/dist/commands/chunk-BF6YX4HE.js +0 -70
  915. package/dist/commands/chunk-BHRS7HAM.js +0 -272
  916. package/dist/commands/chunk-BIKGPT52.js +0 -29
  917. package/dist/commands/chunk-BJA5U4Q7.js +0 -75
  918. package/dist/commands/chunk-BMKWSWWE.js +0 -126
  919. package/dist/commands/chunk-BMTYUJNT.js +0 -59
  920. package/dist/commands/chunk-BRHPRDDV.js +0 -127
  921. package/dist/commands/chunk-BRUBX64M.js +0 -33
  922. package/dist/commands/chunk-BTZJDHQT.js +0 -46
  923. package/dist/commands/chunk-BYFC6MD2.js +0 -72
  924. package/dist/commands/chunk-BYGJ3BCJ.js +0 -803
  925. package/dist/commands/chunk-C2SEDMZ3.js +0 -238
  926. package/dist/commands/chunk-C54QXJD6.js +0 -4208
  927. package/dist/commands/chunk-C6QSVO5K.js +0 -56
  928. package/dist/commands/chunk-CBAKBWSZ.js +0 -332
  929. package/dist/commands/chunk-CFHRNTE5.js +0 -326
  930. package/dist/commands/chunk-CGLLAEKZ.js +0 -110
  931. package/dist/commands/chunk-CHKYPF5O.js +0 -82
  932. package/dist/commands/chunk-CJBW6BWG.js +0 -800
  933. package/dist/commands/chunk-CJKPF5DJ.js +0 -156
  934. package/dist/commands/chunk-CKUKK7JG.js +0 -252
  935. package/dist/commands/chunk-CMHGDCGN.js +0 -263
  936. package/dist/commands/chunk-CNGTHSUS.js +0 -750
  937. package/dist/commands/chunk-CP2J4RV2.js +0 -3987
  938. package/dist/commands/chunk-CQZI7RIK.js +0 -72
  939. package/dist/commands/chunk-CWCKCZS6.js +0 -188
  940. package/dist/commands/chunk-D5HIP4HT.js +0 -289
  941. package/dist/commands/chunk-D6D6WQR6.js +0 -125
  942. package/dist/commands/chunk-D7JRJI44.js +0 -297
  943. package/dist/commands/chunk-D7OAU32Z.js +0 -119
  944. package/dist/commands/chunk-DAAX7XDS.js +0 -1208
  945. package/dist/commands/chunk-DBKTFB5V.js +0 -18
  946. package/dist/commands/chunk-DEZF7QZZ.js +0 -184
  947. package/dist/commands/chunk-DMD74E3F.js +0 -39
  948. package/dist/commands/chunk-DPJVKTO4.js +0 -41
  949. package/dist/commands/chunk-DXJQHJQ4.js +0 -73
  950. package/dist/commands/chunk-DYZOOWVW.js +0 -912
  951. package/dist/commands/chunk-EBI2BAKQ.js +0 -47
  952. package/dist/commands/chunk-EDKOSZ3K.js +0 -88
  953. package/dist/commands/chunk-EFDVE5P5.js +0 -121
  954. package/dist/commands/chunk-EGIHAEMT.js +0 -72
  955. package/dist/commands/chunk-EKLU6QR7.js +0 -507
  956. package/dist/commands/chunk-ELY76WAR.js +0 -65
  957. package/dist/commands/chunk-EM3HAZF6.js +0 -52
  958. package/dist/commands/chunk-EMTZAGT5.js +0 -51
  959. package/dist/commands/chunk-ENKFCOVY.js +0 -472
  960. package/dist/commands/chunk-ERG4QRNG.js +0 -224
  961. package/dist/commands/chunk-EUGNQCYK.js +0 -139
  962. package/dist/commands/chunk-EW4NPUMQ.js +0 -363
  963. package/dist/commands/chunk-EWVR5AEX.js +0 -140
  964. package/dist/commands/chunk-EXDFKKMH.js +0 -113
  965. package/dist/commands/chunk-EXWB34R2.js +0 -238
  966. package/dist/commands/chunk-EYMPBHDN.js +0 -61
  967. package/dist/commands/chunk-EZ7IPKIH.js +0 -20
  968. package/dist/commands/chunk-EZSO25UZ.js +0 -80
  969. package/dist/commands/chunk-F6IQHZYY.js +0 -94
  970. package/dist/commands/chunk-FDS65XOJ.js +0 -212
  971. package/dist/commands/chunk-FFHEGWPK.js +0 -91
  972. package/dist/commands/chunk-FGL6DBZU.js +0 -71
  973. package/dist/commands/chunk-FHFWNNUC.js +0 -144
  974. package/dist/commands/chunk-FIUCHMCF.js +0 -32
  975. package/dist/commands/chunk-FJX7AENO.js +0 -74
  976. package/dist/commands/chunk-FKZ5E4JD.js +0 -97
  977. package/dist/commands/chunk-FMZWRDKH.js +0 -302
  978. package/dist/commands/chunk-FOKCRIAN.js +0 -67
  979. package/dist/commands/chunk-FQGWO2ZH.js +0 -43
  980. package/dist/commands/chunk-FROACLVU.js +0 -525
  981. package/dist/commands/chunk-FURNDIT3.js +0 -34
  982. package/dist/commands/chunk-FVDQNMP6.js +0 -93
  983. package/dist/commands/chunk-FVVZIJUC.js +0 -425
  984. package/dist/commands/chunk-FWU3H4TX.js +0 -17
  985. package/dist/commands/chunk-G3HBYHFA.js +0 -16
  986. package/dist/commands/chunk-G4E4M2P4.js +0 -299
  987. package/dist/commands/chunk-G5KSL2Q2.js +0 -151
  988. package/dist/commands/chunk-G6XC7V6Y.js +0 -58
  989. package/dist/commands/chunk-GCPP5XIG.js +0 -90
  990. package/dist/commands/chunk-GITT5A5A.js +0 -198
  991. package/dist/commands/chunk-GJYMI2CM.js +0 -48
  992. package/dist/commands/chunk-GLC47H7I.js +0 -285
  993. package/dist/commands/chunk-GUR54ELE.js +0 -328
  994. package/dist/commands/chunk-GW4UWR3O.js +0 -126
  995. package/dist/commands/chunk-GY4DMCKS.js +0 -306
  996. package/dist/commands/chunk-H6JQRHDC.js +0 -80
  997. package/dist/commands/chunk-HATKF6VX.js +0 -173
  998. package/dist/commands/chunk-HG2NZQD5.js +0 -135
  999. package/dist/commands/chunk-HH3CVIFU.js +0 -93
  1000. package/dist/commands/chunk-HHMMGDMP.js +0 -469
  1001. package/dist/commands/chunk-HI5WPM6C.js +0 -127
  1002. package/dist/commands/chunk-HQGNXR6I.js +0 -245
  1003. package/dist/commands/chunk-HTIDHEEN.js +0 -108
  1004. package/dist/commands/chunk-HVCQYZVD.js +0 -38
  1005. package/dist/commands/chunk-HWEZRNPL.js +0 -66
  1006. package/dist/commands/chunk-HX3FFIO5.js +0 -74
  1007. package/dist/commands/chunk-HXDTA5VU.js +0 -208
  1008. package/dist/commands/chunk-I2KCGKJI.js +0 -107
  1009. package/dist/commands/chunk-I63RNFFR.js +0 -213
  1010. package/dist/commands/chunk-IAD4WLLI.js +0 -98
  1011. package/dist/commands/chunk-IB5TT73I.js +0 -177
  1012. package/dist/commands/chunk-IBAYXCMU.js +0 -156
  1013. package/dist/commands/chunk-IF3EIFK4.js +0 -7515
  1014. package/dist/commands/chunk-IGDJNXX2.js +0 -49
  1015. package/dist/commands/chunk-ILGPZ47M.js +0 -33
  1016. package/dist/commands/chunk-IYJEBWW5.js +0 -44
  1017. package/dist/commands/chunk-J22PSIXR.js +0 -418
  1018. package/dist/commands/chunk-J66YBAAM.js +0 -161
  1019. package/dist/commands/chunk-J6WKZRV2.js +0 -391
  1020. package/dist/commands/chunk-J7IO3AYH.js +0 -179
  1021. package/dist/commands/chunk-JAKC2BHX.js +0 -88
  1022. package/dist/commands/chunk-JCAQ7B6J.js +0 -124
  1023. package/dist/commands/chunk-JHN6RCE6.js +0 -123
  1024. package/dist/commands/chunk-JIGBNCDR.js +0 -88
  1025. package/dist/commands/chunk-JJHWTFWQ.js +0 -76
  1026. package/dist/commands/chunk-JJRKTWLK.js +0 -64
  1027. package/dist/commands/chunk-JKOGWGQM.js +0 -92
  1028. package/dist/commands/chunk-JM6EVOFN.js +0 -172
  1029. package/dist/commands/chunk-JQXPLMCO.js +0 -81
  1030. package/dist/commands/chunk-JV24VP2O.js +0 -81
  1031. package/dist/commands/chunk-JVKXJ763.js +0 -45
  1032. package/dist/commands/chunk-K275REYP.js +0 -37
  1033. package/dist/commands/chunk-K4G3HOKS.js +0 -105
  1034. package/dist/commands/chunk-K64EIHD2.js +0 -138
  1035. package/dist/commands/chunk-KB3OQWDT.js +0 -71
  1036. package/dist/commands/chunk-KCFOP5RI.js +0 -1310
  1037. package/dist/commands/chunk-KGE4AS2Y.js +0 -134
  1038. package/dist/commands/chunk-KIILCKQR.js +0 -220
  1039. package/dist/commands/chunk-KK2SL42W.js +0 -241
  1040. package/dist/commands/chunk-KKIMVXAP.js +0 -280
  1041. package/dist/commands/chunk-KODXWMBX.js +0 -77
  1042. package/dist/commands/chunk-KPSKWTOS.js +0 -208
  1043. package/dist/commands/chunk-KVHNQHX3.js +0 -100
  1044. package/dist/commands/chunk-KWYQR5MK.js +0 -269
  1045. package/dist/commands/chunk-KXHXMERX.js +0 -214
  1046. package/dist/commands/chunk-KZ5BBBMO.js +0 -271
  1047. package/dist/commands/chunk-KZ7HD37E.js +0 -121
  1048. package/dist/commands/chunk-KZSM5M5P.js +0 -89
  1049. package/dist/commands/chunk-KZZWPUJW.js +0 -25
  1050. package/dist/commands/chunk-L7DAL54N.js +0 -347
  1051. package/dist/commands/chunk-LAR76BFA.js +0 -114
  1052. package/dist/commands/chunk-LB557AHJ.js +0 -192
  1053. package/dist/commands/chunk-LJXKVLYI.js +0 -229
  1054. package/dist/commands/chunk-LOOFYHUM.js +0 -773
  1055. package/dist/commands/chunk-LQXFVZTS.js +0 -13
  1056. package/dist/commands/chunk-LT7QSHR4.js +0 -995
  1057. package/dist/commands/chunk-LUXWDMKI.js +0 -426
  1058. package/dist/commands/chunk-LWAXXZPS.js +0 -118
  1059. package/dist/commands/chunk-LX7TIEMI.js +0 -1612
  1060. package/dist/commands/chunk-LZ5QXE5N.js +0 -244
  1061. package/dist/commands/chunk-M4UV3BEV.js +0 -313
  1062. package/dist/commands/chunk-M6JDU5EK.js +0 -133
  1063. package/dist/commands/chunk-MDLOETXL.js +0 -211
  1064. package/dist/commands/chunk-MFBNNTBM.js +0 -44
  1065. package/dist/commands/chunk-MGF64OHV.js +0 -32
  1066. package/dist/commands/chunk-MI2OS6TL.js +0 -132
  1067. package/dist/commands/chunk-MLW4S35K.js +0 -389
  1068. package/dist/commands/chunk-MN425CU6.js +0 -63
  1069. package/dist/commands/chunk-MPGJ4ONJ.js +0 -634
  1070. package/dist/commands/chunk-MRORPFSO.js +0 -402
  1071. package/dist/commands/chunk-MUGTOJUL.js +0 -319
  1072. package/dist/commands/chunk-MVHPRYHE.js +0 -91
  1073. package/dist/commands/chunk-MWO6FOSZ.js +0 -393
  1074. package/dist/commands/chunk-MXC4IBZ7.js +0 -104
  1075. package/dist/commands/chunk-N7QTMTST.js +0 -210
  1076. package/dist/commands/chunk-NDBX7LSS.js +0 -32
  1077. package/dist/commands/chunk-NEGJ77RV.js +0 -173
  1078. package/dist/commands/chunk-NEGRE5VW.js +0 -101
  1079. package/dist/commands/chunk-NFPD2P3V.js +0 -53
  1080. package/dist/commands/chunk-NHIW7JE6.js +0 -335
  1081. package/dist/commands/chunk-NILSN7A4.js +0 -158
  1082. package/dist/commands/chunk-NOLFSPOB.js +0 -74
  1083. package/dist/commands/chunk-NSAVEXVR.js +0 -353
  1084. package/dist/commands/chunk-NT67QTZO.js +0 -65
  1085. package/dist/commands/chunk-NU7W6QGT.js +0 -155
  1086. package/dist/commands/chunk-NYWGJLBU.js +0 -19
  1087. package/dist/commands/chunk-OAAVY2JK.js +0 -49
  1088. package/dist/commands/chunk-OGS2DK7I.js +0 -47
  1089. package/dist/commands/chunk-OHNP3QL2.js +0 -186
  1090. package/dist/commands/chunk-OIPV3PWW.js +0 -870
  1091. package/dist/commands/chunk-OIX2363L.js +0 -16
  1092. package/dist/commands/chunk-OJ65BZBV.js +0 -646
  1093. package/dist/commands/chunk-OKZWEVR4.js +0 -352
  1094. package/dist/commands/chunk-OL6IF4JC.js +0 -20
  1095. package/dist/commands/chunk-OMPRILFH.js +0 -29
  1096. package/dist/commands/chunk-OOWGH2RG.js +0 -85
  1097. package/dist/commands/chunk-OP2RFVLS.js +0 -102
  1098. package/dist/commands/chunk-ORKVN2LO.js +0 -56
  1099. package/dist/commands/chunk-OSBWXZJ4.js +0 -492
  1100. package/dist/commands/chunk-OT3UMEWK.js +0 -47
  1101. package/dist/commands/chunk-OVWPZDWP.js +0 -64
  1102. package/dist/commands/chunk-OWYK2BEJ.js +0 -1222
  1103. package/dist/commands/chunk-OX3VQLV2.js +0 -488
  1104. package/dist/commands/chunk-OZJP77UM.js +0 -103
  1105. package/dist/commands/chunk-OZZWRJQI.js +0 -246
  1106. package/dist/commands/chunk-P3H3DKTE.js +0 -69
  1107. package/dist/commands/chunk-P4D5RESF.js +0 -88
  1108. package/dist/commands/chunk-P4KIQRSL.js +0 -119
  1109. package/dist/commands/chunk-P5SOYWH2.js +0 -37
  1110. package/dist/commands/chunk-P7FPXAHP.js +0 -29
  1111. package/dist/commands/chunk-PE7B7242.js +0 -84
  1112. package/dist/commands/chunk-PFO7EYAP.js +0 -45
  1113. package/dist/commands/chunk-PHLOTUB7.js +0 -366
  1114. package/dist/commands/chunk-PTNQCCIB.js +0 -41
  1115. package/dist/commands/chunk-PTZEFQUX.js +0 -211
  1116. package/dist/commands/chunk-Q5Q2QYVU.js +0 -112
  1117. package/dist/commands/chunk-Q7EEIOAD.js +0 -120
  1118. package/dist/commands/chunk-QABRNGQV.js +0 -88
  1119. package/dist/commands/chunk-QAHFPCFR.js +0 -50
  1120. package/dist/commands/chunk-QDFVVRQP.js +0 -92
  1121. package/dist/commands/chunk-QGAERR7D.js +0 -99
  1122. package/dist/commands/chunk-QHWJJ6X5.js +0 -53
  1123. package/dist/commands/chunk-QJRVDE7T.js +0 -307
  1124. package/dist/commands/chunk-QMDKDQKW.js +0 -114
  1125. package/dist/commands/chunk-QOSC5RKD.js +0 -18
  1126. package/dist/commands/chunk-QQ4CIYMF.js +0 -132
  1127. package/dist/commands/chunk-QV5FKMOU.js +0 -80
  1128. package/dist/commands/chunk-QWWTC3XR.js +0 -109
  1129. package/dist/commands/chunk-QXQ56E56.js +0 -27
  1130. package/dist/commands/chunk-R54Z2Z3X.js +0 -114
  1131. package/dist/commands/chunk-R6QE5VJG.js +0 -46
  1132. package/dist/commands/chunk-RG53UFNW.js +0 -418
  1133. package/dist/commands/chunk-RGGEQM6G.js +0 -140
  1134. package/dist/commands/chunk-RH6ZWJOA.js +0 -77
  1135. package/dist/commands/chunk-RHKCWJQX.js +0 -62
  1136. package/dist/commands/chunk-RKIAX4DZ.js +0 -191
  1137. package/dist/commands/chunk-RLBFEHHC.js +0 -300
  1138. package/dist/commands/chunk-RN2YDNLF.js +0 -229
  1139. package/dist/commands/chunk-RRAIRS2T.js +0 -54
  1140. package/dist/commands/chunk-RS764ZMU.js +0 -46
  1141. package/dist/commands/chunk-RUIBQMOV.js +0 -38
  1142. package/dist/commands/chunk-RUQY5TS3.js +0 -83
  1143. package/dist/commands/chunk-RVUJ6F5L.js +0 -181
  1144. package/dist/commands/chunk-RW64VHEB.js +0 -130
  1145. package/dist/commands/chunk-RXYMJPJB.js +0 -114
  1146. package/dist/commands/chunk-S4M6UWR2.js +0 -103
  1147. package/dist/commands/chunk-SASX3W2M.js +0 -99
  1148. package/dist/commands/chunk-SFNBUB6D.js +0 -110
  1149. package/dist/commands/chunk-SJ2ZN575.js +0 -90
  1150. package/dist/commands/chunk-SP7DKYGU.js +0 -1263
  1151. package/dist/commands/chunk-SSL6A3Y4.js +0 -165
  1152. package/dist/commands/chunk-SVAKCXZ7.js +0 -44
  1153. package/dist/commands/chunk-SYOXIKB7.js +0 -705
  1154. package/dist/commands/chunk-SZG5HDNP.js +0 -321
  1155. package/dist/commands/chunk-T25S4QHL.js +0 -52
  1156. package/dist/commands/chunk-T4F33UKZ.js +0 -114
  1157. package/dist/commands/chunk-T4UYEHWG.js +0 -50
  1158. package/dist/commands/chunk-TAEGXID2.js +0 -58
  1159. package/dist/commands/chunk-TCBUX52E.js +0 -701
  1160. package/dist/commands/chunk-TEPYEUYG.js +0 -585
  1161. package/dist/commands/chunk-TFLHYC2F.js +0 -141
  1162. package/dist/commands/chunk-TJKM56WJ.js +0 -109
  1163. package/dist/commands/chunk-TLAB552K.js +0 -445
  1164. package/dist/commands/chunk-TP6L4W3W.js +0 -82
  1165. package/dist/commands/chunk-TR7WWYD5.js +0 -60
  1166. package/dist/commands/chunk-TVZXG4Y4.js +0 -197
  1167. package/dist/commands/chunk-TYNH2R66.js +0 -1150
  1168. package/dist/commands/chunk-U3IVVR4W.js +0 -33
  1169. package/dist/commands/chunk-U5P6G3UV.js +0 -77
  1170. package/dist/commands/chunk-U7XU5RG3.js +0 -86
  1171. package/dist/commands/chunk-UKBBWMLE.js +0 -1189
  1172. package/dist/commands/chunk-ULVVGGTY.js +0 -64
  1173. package/dist/commands/chunk-UNMSZGSG.js +0 -269
  1174. package/dist/commands/chunk-URDT2O2K.js +0 -36
  1175. package/dist/commands/chunk-UTHUX7VU.js +0 -88
  1176. package/dist/commands/chunk-V4Z7G4UH.js +0 -73
  1177. package/dist/commands/chunk-V5FD7DVV.js +0 -48
  1178. package/dist/commands/chunk-VCPGFBMN.js +0 -655
  1179. package/dist/commands/chunk-VGPIQNDB.js +0 -24
  1180. package/dist/commands/chunk-VJE3RJAX.js +0 -23
  1181. package/dist/commands/chunk-VK6D5CWA.js +0 -161
  1182. package/dist/commands/chunk-VOF3N4WO.js +0 -114
  1183. package/dist/commands/chunk-VQVPAVQ3.js +0 -45
  1184. package/dist/commands/chunk-VV4TQYGD.js +0 -38
  1185. package/dist/commands/chunk-W3FX7FYN.js +0 -84
  1186. package/dist/commands/chunk-W7DRUOF7.js +0 -122
  1187. package/dist/commands/chunk-WAEN2RTT.js +0 -161
  1188. package/dist/commands/chunk-WCEUMOKK.js +0 -84
  1189. package/dist/commands/chunk-WJ4NEDNI.js +0 -288
  1190. package/dist/commands/chunk-WMMGXJXP.js +0 -92
  1191. package/dist/commands/chunk-WOFLW2LX.js +0 -26
  1192. package/dist/commands/chunk-WTH6NTXU.js +0 -128
  1193. package/dist/commands/chunk-WWVYEHQT.js +0 -272
  1194. package/dist/commands/chunk-X3TNPALI.js +0 -213
  1195. package/dist/commands/chunk-XC6GG5JR.js +0 -78
  1196. package/dist/commands/chunk-XDF25GSU.js +0 -536
  1197. package/dist/commands/chunk-XFPEUYDV.js +0 -67
  1198. package/dist/commands/chunk-XFWI6WHH.js +0 -60
  1199. package/dist/commands/chunk-XGMRAKSL.js +0 -85
  1200. package/dist/commands/chunk-XHGWMD3L.js +0 -104
  1201. package/dist/commands/chunk-XKSUBUIH.js +0 -116
  1202. package/dist/commands/chunk-XPBF5DG3.js +0 -419
  1203. package/dist/commands/chunk-XUMYPESL.js +0 -160
  1204. package/dist/commands/chunk-XXC32PVL.js +0 -541
  1205. package/dist/commands/chunk-XXN2EZBY.js +0 -133
  1206. package/dist/commands/chunk-XXNEY4B3.js +0 -110
  1207. package/dist/commands/chunk-Y27PTXXI.js +0 -258
  1208. package/dist/commands/chunk-Y4EBUI6M.js +0 -237
  1209. package/dist/commands/chunk-YAU3LYNF.js +0 -60
  1210. package/dist/commands/chunk-YDURQICF.js +0 -204
  1211. package/dist/commands/chunk-YGFOGA7C.js +0 -1153
  1212. package/dist/commands/chunk-YHJ2AJMA.js +0 -66
  1213. package/dist/commands/chunk-YIA6FC3K.js +0 -78
  1214. package/dist/commands/chunk-YM77CF4D.js +0 -183
  1215. package/dist/commands/chunk-YNPRJCEO.js +0 -81
  1216. package/dist/commands/chunk-YTBQAD5W.js +0 -170
  1217. package/dist/commands/chunk-YVH2OLDS.js +0 -104
  1218. package/dist/commands/chunk-Z3WGHIVB.js +0 -122
  1219. package/dist/commands/chunk-ZAAHZY2A.js +0 -19
  1220. package/dist/commands/chunk-ZBZ5DDCH.js +0 -1866
  1221. package/dist/commands/chunk-ZLRUHSOP.js +0 -48
  1222. package/dist/commands/chunk-ZNR75OXP.js +0 -444
  1223. package/dist/commands/chunk-ZSOR4ISJ.js +0 -75
  1224. package/dist/commands/chunk-ZVAIIHBE.js +0 -63
  1225. package/dist/commands/chunk-ZYFHYQA7.js +0 -51
  1226. package/dist/commands/chunk-ZZFFSQF4.js +0 -218
  1227. package/dist/commands/chunk-ZZULXNC2.js +0 -47
  1228. package/dist/commands/chunk-ZZXO6TFH.js +0 -232
  1229. package/dist/commands/run-ship-lap-W5T2VHFC.js +0 -30
  1230. package/dist/commands/test-related-ZCNC46MS.js +0 -113
  1231. package/dist/commands/unused-members-STULPRBU.js +0 -331
  1232. package/dist/hooks/chunk-5CUXGQT6.js +0 -8353
  1233. package/dist/hooks/chunk-5R5YFQR5.js +0 -931
  1234. package/dist/hooks/chunk-6RLY27FT.js +0 -232
  1235. package/dist/hooks/chunk-6YGMIODI.js +0 -86
  1236. package/dist/hooks/chunk-AO4TOV4V.js +0 -5026
  1237. package/dist/hooks/chunk-FOW4B7OQ.js +0 -1795
  1238. package/dist/hooks/chunk-G5WSPYJ6.js +0 -5663
  1239. package/dist/hooks/chunk-HHIVWGHX.js +0 -6869
  1240. package/dist/hooks/chunk-IURJANNZ.js +0 -1082
  1241. package/dist/hooks/chunk-OV22V63P.js +0 -10980
  1242. package/dist/hooks/chunk-SXABK6UV.js +0 -321
  1243. package/dist/hooks/run-ship-lap-VCEOUHQI.js +0 -8
@@ -0,0 +1,119 @@
1
+ import { randomUUID } from 'node:crypto'
2
+ import { stamp_file } from '#scripts/josh/stamp-file'
3
+ import { lane_ledger_kind } from '#scripts/lane/lane-ledger-kind'
4
+ import { inherited_scope } from '#scripts/lib/inherited-scope'
5
+ import { run_startup_schema, type StartupEntry, type StartupScope } from './run-startup-schema'
6
+ import { run_startup_store } from './run-startup-store'
7
+
8
+ const ENVIRONMENT_KEY = 'JOSH_STARTUP_SCOPE'
9
+ const scope = inherited_scope.create(ENVIRONMENT_KEY, run_startup_schema.scope_schema)
10
+
11
+ interface PhaseOptions<T> {
12
+ issue?: string
13
+ root?: boolean
14
+ edge_of?: (value: T) => 'done' | 'failed' | 'waiting'
15
+ }
16
+
17
+ // A missing or failed measurement never changes the operation's result or error.
18
+ async function record(row: StartupEntry): Promise<void> {
19
+ try {
20
+ await run_startup_store.record(row, scope.current()?.destination)
21
+ } catch {
22
+ // Reporting is best effort, including test or extension sinks.
23
+ }
24
+ }
25
+
26
+ function entry(current: StartupScope, name: string, edge: StartupEntry['edge']): StartupEntry {
27
+ return run_startup_schema.entry_schema.parse({
28
+ ...current,
29
+ kind: lane_ledger_kind.KIND.STARTUP,
30
+ at: new Date().toISOString(),
31
+ at_ms: performance.timeOrigin + performance.now(),
32
+ id: current.span ?? randomUUID(),
33
+ phase: name,
34
+ edge,
35
+ })
36
+ }
37
+
38
+ async function completed<T>(
39
+ name: string,
40
+ run: () => Promise<T>,
41
+ options: PhaseOptions<T>,
42
+ ): Promise<T> {
43
+ const current = scope.current()
44
+ if (current === undefined) return await run()
45
+ const started = performance.now()
46
+
47
+ await record(entry(current, name, 'start'))
48
+ const ending: { edge: StartupEntry['edge'] } = { edge: 'failed' }
49
+
50
+ try {
51
+ const value = await run()
52
+
53
+ ending.edge = options.edge_of?.(value) ?? 'done'
54
+
55
+ return value
56
+ } finally {
57
+ await record({ ...entry(current, name, ending.edge), elapsed_ms: performance.now() - started })
58
+ }
59
+ }
60
+
61
+ async function current_scope<T>(options: PhaseOptions<T>): Promise<StartupScope | undefined> {
62
+ return (
63
+ scope.current() ??
64
+ (options.root === true ? await run_startup_store.identity(options.issue) : undefined)
65
+ )
66
+ }
67
+
68
+ async function phase<T>(
69
+ name: string,
70
+ run: () => Promise<T>,
71
+ options: PhaseOptions<T> = {},
72
+ ): Promise<T> {
73
+ const current = await current_scope(options)
74
+ if (current === undefined) return await run()
75
+ const next = {
76
+ ...current,
77
+ parent: current.span,
78
+ span: randomUUID(),
79
+ ...(options.issue !== undefined && { issue: options.issue }),
80
+ }
81
+
82
+ return await scope.within(next, async () => await completed(name, run, options))
83
+ }
84
+
85
+ // Metrics are individual append-only rows, attributed to the innermost span even during parallel work.
86
+ function metric(edge: 'api' | 'cache', name: string, key?: string): void {
87
+ const current = scope.current()
88
+ if (current === undefined) return
89
+ void record({
90
+ ...entry(current, '', edge),
91
+ metric: name,
92
+ ...(key !== undefined && { key: stamp_file.digest(key) }),
93
+ })
94
+ }
95
+
96
+ async function waiting(name: string): Promise<() => Promise<void>> {
97
+ const current = scope.current()
98
+ const started = performance.now()
99
+ const place = { ...current, span: randomUUID(), parent: current?.span }
100
+ if (current !== undefined) await record(entry({ ...current, ...place }, name, 'start'))
101
+
102
+ return async (): Promise<void> => {
103
+ if (current === undefined) return
104
+ await record({
105
+ ...entry({ ...current, ...place }, name, 'waiting'),
106
+ elapsed_ms: performance.now() - started,
107
+ })
108
+ }
109
+ }
110
+
111
+ const run_startup = {
112
+ ENVIRONMENT_KEY,
113
+ phase,
114
+ metric,
115
+ waiting,
116
+ environment: scope.environment,
117
+ within: scope.within,
118
+ }
119
+ export { run_startup }
@@ -0,0 +1,144 @@
1
+ import { statSync } from 'node:fs'
2
+ import { agent_event, type AgentEventState } from '#scripts/agent/agent-event'
3
+ import type { AgentProfile } from '#scripts/agent/agent-profile-schema'
4
+ import { process_identity } from '#scripts/josh/process-identity'
5
+ import { stamp_file } from '#scripts/josh/stamp-file'
6
+ import { run_carry, type CarryRead, type RunCarry } from '#scripts/run/carry/run-carry'
7
+ import { run_event_setup } from '#scripts/run/event/run-event-setup'
8
+ import { run_wake } from './run-wake'
9
+ import type { WakeContext } from './run-wake-describe'
10
+
11
+ // New launches keep a generation-specific result, so a triage or an older turn cannot finish one.
12
+ function log_path(context: WakeContext, id: string, profile: AgentProfile): string {
13
+ return profile.provider === 'openai' ? `${context.log_target}.${id}` : context.log_target
14
+ }
15
+
16
+ function legacy_pid(context: WakeContext, invocation: string): number | undefined {
17
+ const wake = run_wake.read_wake(context.wake_target)
18
+ if (wake?.invocation !== invocation) return undefined
19
+
20
+ return wake.woke_pid
21
+ }
22
+
23
+ function execution(context: WakeContext, carry: RunCarry): RunCarry {
24
+ if (carry.owner_pid !== undefined || carry.owner_session !== undefined) return carry
25
+
26
+ return { ...carry, owner_pid: legacy_pid(context, carry.invocation) }
27
+ }
28
+
29
+ function modified_at(target: string): number {
30
+ try {
31
+ return statSync(target).mtimeMs
32
+ } catch {
33
+ return 0
34
+ }
35
+ }
36
+
37
+ // Legacy logs are shared: only the last launch, written through this wake's mark, can be evidence.
38
+ function launched_at(output: string): number {
39
+ const header = output.split('\n').findLast((line) => line.startsWith('=== '))
40
+
41
+ return Date.parse(header?.slice('=== '.length).split(' · ', 1)[0] ?? '')
42
+ }
43
+
44
+ function launch_mark(context: WakeContext): number {
45
+ const wake = run_wake.read_wake(context.wake_target)
46
+
47
+ return Date.parse(wake?.woke_at ?? wake?.launch_at ?? '')
48
+ }
49
+
50
+ function is_legacy_result(context: WakeContext, output: string): boolean {
51
+ const marked = launch_mark(context)
52
+ const launched = launched_at(output)
53
+
54
+ return (
55
+ launched <= marked &&
56
+ marked - launched < run_wake.WAKE_GRACE_MS &&
57
+ modified_at(context.log_target) >= marked
58
+ )
59
+ }
60
+
61
+ function result_of(context: WakeContext, carry: RunCarry): AgentEventState {
62
+ const target =
63
+ carry.owner_session === undefined
64
+ ? context.log_target
65
+ : `${context.log_target}.${carry.owner_session}`
66
+ const output = stamp_file.read_stamp_text(target) ?? ''
67
+ const is_usable = carry.owner_session !== undefined || is_legacy_result(context, output)
68
+
69
+ return agent_event.read(is_usable ? output : '')
70
+ }
71
+
72
+ function is_judgment(carry: RunCarry): boolean {
73
+ return (
74
+ carry.scheduler_provider === 'openai' &&
75
+ carry.is_owner_headless === true &&
76
+ carry.is_handed_off !== true
77
+ )
78
+ }
79
+
80
+ function judgment(context: WakeContext): RunCarry | undefined {
81
+ const read = run_carry.read_carry(context.carry_target)
82
+
83
+ return read.kind === 'carried' && is_judgment(read.carry) ? read.carry : undefined
84
+ }
85
+
86
+ function is_running(carry: RunCarry): boolean {
87
+ return process_identity.is_same_process(carry.owner_pid, carry.owner_start) !== false
88
+ }
89
+
90
+ function hand_back(context: WakeContext, carry: RunCarry): CarryRead {
91
+ const wake = run_wake.read_wake(context.wake_target)
92
+ if (wake !== undefined) run_wake.update_wake(context.wake_target, run_wake.count_claim(wake))
93
+ const next = run_carry.apply_change(context.carry_target, carry, { cuts: 1 })
94
+
95
+ run_event_setup.emit_to(context.event_target, run_event_setup.STAGE.HANDING_OFF, new Date())
96
+
97
+ return { kind: 'carried', carry: next }
98
+ }
99
+
100
+ function read_carry(context: WakeContext): CarryRead {
101
+ const read = run_carry.read_carry(context.carry_target)
102
+
103
+ if (read.kind !== 'carried' || !is_judgment(read.carry)) return read
104
+ const carry = execution(context, read.carry)
105
+ if (is_running(carry)) return { kind: 'carried', carry }
106
+ if (result_of(context, carry).result === 'completed') return hand_back(context, read.carry)
107
+
108
+ return read
109
+ }
110
+
111
+ function finished_session(context: WakeContext): string | undefined {
112
+ const read = read_carry(context)
113
+ if (read.kind !== 'carried' || read.carry.is_handed_off !== true) return undefined
114
+
115
+ return read.carry.owner_session
116
+ }
117
+
118
+ function refresh(context: WakeContext): void {
119
+ const session = finished_session(context)
120
+ if (session === undefined) return
121
+ const wake = run_wake.read_wake(context.wake_target)
122
+ if (wake === undefined || wake.spawned?.at(-1) !== session) return
123
+
124
+ run_wake.update_wake(context.wake_target, run_wake.count_claim(wake))
125
+ }
126
+
127
+ function failure_note(result: AgentEventState): string | undefined {
128
+ return result.result === 'completed'
129
+ ? undefined
130
+ : `Codex judgment ended without a successful result: ${result.reason ?? result.result}`
131
+ }
132
+
133
+ function failure(context: WakeContext): string | undefined {
134
+ const owned = judgment(context)
135
+ if (owned === undefined) return undefined
136
+ const carry = execution(context, owned)
137
+ if (carry.owner_pid === undefined || is_running(carry)) return undefined
138
+
139
+ return failure_note(result_of(context, carry))
140
+ }
141
+
142
+ const run_wake_codex = { failure, log_path, read_carry, refresh }
143
+
144
+ export { run_wake_codex }
@@ -1,3 +1,4 @@
1
+ import { backlog_drive_retrospective_unit } from '#scripts/backlog/backlog-drive-retrospective-unit'
1
2
  import { epic_triage } from '#scripts/epic/epic-triage'
2
3
  import { josh_command, type JoshResult } from '#scripts/josh/josh-run'
3
4
  import { run_carry, type CarryRead, type RunCarry } from '#scripts/run/carry/run-carry'
@@ -16,6 +17,8 @@ const TRUNCATION_MARK = '... '
16
17
  const ERROR_PREFIX = 'error '
17
18
  const { WINDOW_MINUTES } = run_wake_window
18
19
  const WINDOW_VERDICT = 'window'
20
+ // `backlog-drive.ts`'s drain owing the retrospective.
21
+ const WATCH_VERDICT = 'watch'
19
22
  const { TRIAGE_VERDICT } = epic_triage
20
23
 
21
24
  function driver_args(invocation: string): ReadonlyArray<string> | undefined {
@@ -74,11 +77,24 @@ const NEXT_BY_VERDICT: ReadonlyArray<readonly [string, string]> = [
74
77
  const NEXT_DEFAULT = `act on the result by the sections below, ${HAND_BACK}`
75
78
  // **A triage session is woken beside the driver, never in its place** (joshuafolkken/kit#7120): the
76
79
  // record stays the supervisor's, so the session counts nothing and its turn end hands nothing back.
77
- const NEXT_BESIDE =
78
- "\nNext: the carry record stays the supervisor's, whose driver keeps collecting and filling lanes beside this session, so run no pnpm josh run:carry; act on the result by the sections below, then end the turn"
80
+ const BESIDE =
81
+ "\nNext: the carry record stays the supervisor's, whose driver keeps collecting and filling lanes beside this session"
82
+ const NEXT_BESIDE = `${BESIDE}, so run no pnpm josh run:carry; act on the result by the sections below, then end the turn`
83
+
84
+ // **A drain's retrospective runs beside the driver too** (joshuafolkken/kit#7506): handed over, the
85
+ // record left the backlog unread until the session ended and the next pass re-drove, so an issue
86
+ // filed meanwhile waited on the retrospective. Beside it, the driver's re-drive dispatches that issue,
87
+ // and the session's process on the resume line holds the next `watch` back until it has ended
88
+ // (`backlog_drive_park_triage.hand_back`). The record stays this process's, so the close names it.
89
+ const BESIDE_VERDICTS: ReadonlySet<string> = new Set([TRIAGE_VERDICT, WATCH_VERDICT])
79
90
 
80
91
  function next_move(verdict: string): string {
81
92
  if (verdict === TRIAGE_VERDICT) return NEXT_BESIDE
93
+
94
+ if (verdict === WATCH_VERDICT) {
95
+ return `${BESIDE}. ${backlog_drive_retrospective_unit.brief_of(String(process.pid))} Then end the turn`
96
+ }
97
+
82
98
  const found = NEXT_BY_VERDICT.find(([prefix]) => verdict.startsWith(prefix))
83
99
 
84
100
  return `\nNext: ${ALREADY_CLAIMED} ${found?.[1] ?? NEXT_DEFAULT}`
@@ -102,7 +118,7 @@ function judged(verdict: string, resume: string, details: string): DriveResult {
102
118
  return { kind: 'failed', note: `backlog:drive returned an invalid resume line: ${resume}` }
103
119
  }
104
120
 
105
- const kind = verdict === TRIAGE_VERDICT ? 'triage' : 'judgment'
121
+ const kind = BESIDE_VERDICTS.has(verdict) ? 'triage' : 'judgment'
106
122
 
107
123
  return { kind, material: handoff_material(verdict, resume, details) }
108
124
  }
@@ -145,13 +161,22 @@ function read_result(result: JoshResult | undefined, target: string): DriveResul
145
161
  // **A record this process already owns is claimed again.** A driver that failed leaves the record
146
162
  // adopted for the supervisor and not handed off, and the restarted pass re-drives it from here; only a
147
163
  // record another live process holds is refused.
164
+ //
165
+ // **A record this process already holds is kept as it is, never rewritten** (joshuafolkken/kit#7506):
166
+ // the adopt removes and re-creates it from this read, so a beside session's `run:carry
167
+ // --retrospective` landing between the two would lose its mark or read no record to close.
168
+ function standing_of(carry: RunCarry): 'adopt' | 'kept' | 'refused' {
169
+ if (carry.is_handed_off === true) return 'adopt'
170
+ if (run_carry.is_held_by_self(carry)) return 'kept'
171
+
172
+ return run_carry.is_held_by_another(carry) ? 'refused' : 'adopt'
173
+ }
174
+
148
175
  function claim_record(target: string, invocation: string): boolean {
149
176
  const current = run_carry.read_carry(target)
150
177
  if (current.kind !== 'carried' || current.carry.invocation !== invocation) return false
151
-
152
- if (current.carry.is_handed_off !== true && run_carry.is_held_by_another(current.carry)) {
153
- return false
154
- }
178
+ const standing = standing_of(current.carry)
179
+ if (standing !== 'adopt') return standing === 'kept'
155
180
 
156
181
  const owner = {
157
182
  ...run_carry.owner_of(process.pid),
@@ -19,10 +19,7 @@ import { run_carry_reclaim } from '#scripts/run/carry/run-carry-reclaim'
19
19
  // The adoption also recovers a record whose owner died without a cut (`run-wake.ts` →
20
20
  // `decide_not_handed_off`): it rewrites the owner and clears any hand-off, whoever held it.
21
21
  //
22
- // **A Codex session cannot be given its session id** (`agent-argv.ts` → `build`), so neither its
23
- // transcript nor its pid is known here: it is adopted with the pid-less owner `run:carry --resume`
24
- // writes for it, and its pid is never moved onto the record — a pid it cannot match would make its
25
- // own counts a foreign live owner's.
22
+ // Codex authenticates with a launch identity; the launched PID supplies liveness independently.
26
23
  //
27
24
  // `hand_off` is the older recovery the backlog preflight still runs: it marks the record handed off,
28
25
  // as a `--cut` does, so a later claim over it reads `resume` rather than `standing`.
@@ -34,7 +31,9 @@ interface WakeSession {
34
31
  }
35
32
 
36
33
  function session_owner(session: WakeSession): CarryOwner {
37
- if (session.provider === agent_provider.OPENAI_PROVIDER) return { is_headless: true }
34
+ if (session.provider === agent_provider.OPENAI_PROVIDER) {
35
+ return { session: session.session_id, is_headless: true }
36
+ }
38
37
 
39
38
  const directory = cost_transcript.transcript_directory(session.worktree)
40
39
  const transcript = run_carry_conversation.transcript_of(session.session_id, directory)
@@ -60,11 +59,13 @@ function hand_to(target: string, owner: CarryOwner): void {
60
59
  run_carry.adopt_carry(target, read.carry, { ...owner, provider: read.carry.scheduler_provider })
61
60
  }
62
61
 
63
- // Through `reclaim_at`, so the transcript the adoption named is what lets the pid move — one writer.
62
+ // Through the shared reclaim writer, authenticated by transcript or launch identity.
64
63
  function hand_on(target: string, owner: CarryOwner, pid: number): void {
65
- if (owner.transcript === undefined) return
64
+ if (owner.transcript === undefined && owner.session === undefined) return
66
65
 
67
- run_carry_reclaim.reclaim_at(target, run_carry.owner_of(pid, undefined, owner.transcript))
66
+ const process_owner = run_carry.owner_of(pid, undefined, owner.transcript)
67
+
68
+ run_carry_reclaim.reclaim_at(target, { ...process_owner, session: owner.session })
68
69
  }
69
70
 
70
71
  // **The launched pid is the supervisor's own write, so it is no sign the session picked the run up**:
@@ -30,6 +30,8 @@ const STOPPED_BY_PERSON: LoopStop = { reason: STOPPED_REASON, note: undefined }
30
30
  const CODE_CHANGED: LoopStop = { reason: RELOAD_REASON, note: undefined }
31
31
 
32
32
  interface LoopPorts {
33
+ refresh?: () => void
34
+ session_failure?: () => string | undefined
33
35
  // The carry record, re-read every pass rather than cached: it is written by the parent loop of a
34
36
  // different session, which is the whole point of reading it here.
35
37
  read_carry: () => CarryRead
@@ -200,14 +202,25 @@ async function retry_closes(ports: LoopPorts): Promise<void> {
200
202
  // stopping any lane. A record already removed ends the loop before this pass is reached, and a carry
201
203
  // record that ended or became unreadable stops the run before the code is checked, so a reload never
202
204
  // hands a finished run to a successor.
205
+ async function preflight_stop(
206
+ decision: WakeDecision,
207
+ ports: LoopPorts,
208
+ ): Promise<LoopStop | undefined> {
209
+ if (decision.kind === 'stop') return undefined
210
+ const failure = ports.session_failure?.()
211
+ if (failure !== undefined) return { reason: FAILED_REASON, note: failure }
212
+
213
+ return (await ports.is_code_stale()) ? CODE_CHANGED : undefined
214
+ }
215
+
203
216
  async function run_pass(
204
217
  target: string,
205
218
  wake: RunWake,
206
219
  ports: LoopPorts,
207
220
  ): Promise<LoopStop | undefined> {
208
221
  const decision = await decide_pass(wake, ports)
209
-
210
- if (decision.kind !== 'stop' && (await ports.is_code_stale())) return CODE_CHANGED
222
+ const stop = await preflight_stop(decision, ports)
223
+ if (stop !== undefined) return stop
211
224
 
212
225
  await retry_closes(ports)
213
226
 
@@ -254,12 +267,19 @@ function without_release_gap(ports: LoopPorts): LoopPorts {
254
267
  }
255
268
  }
256
269
 
270
+ function refreshed_wake(target: string, ports: LoopPorts): RunWake | undefined {
271
+ if (run_wake.read_own_wake(target) === undefined) return undefined
272
+ ports.refresh?.()
273
+
274
+ return run_wake.read_own_wake(target)
275
+ }
276
+
257
277
  async function run_loop(target: string, ports: LoopPorts, interval_ms: number): Promise<LoopStop> {
258
278
  const continuous = without_release_gap(ports)
259
279
 
260
280
  return await poll.wait_for(
261
281
  async () => {
262
- const wake = run_wake.read_own_wake(target)
282
+ const wake = refreshed_wake(target, continuous)
263
283
 
264
284
  return wake === undefined ? STOPPED_BY_PERSON : await run_pass(target, wake, continuous)
265
285
  },
@@ -5,8 +5,10 @@ import { lane_close } from '#scripts/lane/lane-close'
5
5
  import { lane_withdraw_closed } from '#scripts/lane/lane-withdraw-closed'
6
6
  import { poll } from '#scripts/lib/poll'
7
7
  import { run_carry, type CarryOwner, type RunCarry } from '#scripts/run/carry/run-carry'
8
+ import { run_carry_session } from '#scripts/run/carry/run-carry-session'
8
9
  import { run_event_setup } from '#scripts/run/event/run-event-setup'
9
10
  import { run_headless } from '#scripts/run/run-headless'
11
+ import { run_wake_codex } from './run-wake-codex'
10
12
  import type { WakeContext } from './run-wake-describe'
11
13
  import { run_wake_driver } from './run-wake-driver'
12
14
  import { run_wake_handoff } from './run-wake-handoff'
@@ -66,7 +68,12 @@ function launch_session(
66
68
  if (built === undefined) return { kind: 'failed', note: UNSAFE_INVOCATION_NOTE }
67
69
  if (built.kind === 'rejected') return { kind: 'failed', note: built.note }
68
70
 
69
- const target = { cwd: context.worktree, env: session.environment, log_path: context.log_target }
71
+ const target = {
72
+ cwd: context.worktree,
73
+ env: session.environment,
74
+ log_path: run_wake_codex.log_path(context, session.id, profile),
75
+ }
76
+ if (profile.provider === 'openai') note_to_stderr(`session output: ${target.log_path}`)
70
77
 
71
78
  return run_wake_session.launch({ argv: built.argv, ...target, profile }, note_to_stderr)
72
79
  }
@@ -136,7 +143,10 @@ function session_ports(context: WakeContext, profile: AgentProfile): SessionPort
136
143
  wake_session(context, invocation, profile, {
137
144
  id: session_id,
138
145
  material,
139
- environment: run_headless.environment(),
146
+ environment:
147
+ profile.provider === 'openai'
148
+ ? { ...run_headless.environment(), [run_carry_session.KEY]: session_id }
149
+ : run_headless.environment(),
140
150
  }),
141
151
  wake_beside: (invocation, session_id, material) =>
142
152
  wake_beside(context, invocation, profile, {
@@ -164,7 +174,11 @@ function ports_for(
164
174
 
165
175
  return {
166
176
  is_code_stale,
167
- read_carry: () => run_carry.read_carry(context.carry_target),
177
+ refresh: () => {
178
+ run_wake_codex.refresh(context)
179
+ },
180
+ session_failure: () => run_wake_codex.failure(context),
181
+ read_carry: () => run_wake_codex.read_carry(context),
168
182
  is_owner_live: (read) => read.kind === 'carried' && is_session_at_work(read.carry),
169
183
  has_work: async () => true,
170
184
  ...session_ports(context, profile),
@@ -1,3 +1,4 @@
1
+ import { backlog_dispatch_bound } from '#scripts/backlog/backlog-dispatch-bound'
1
2
  import { process_identity } from '#scripts/josh/process-identity'
2
3
  import { poll } from '#scripts/lib/poll'
3
4
  import { MS_PER_SECOND } from '#scripts/lib/timeouts'
@@ -13,8 +14,10 @@ import { run_wake_stop } from './run-wake-stop'
13
14
  // bound, is a reload that failed.
14
15
 
15
16
  const TAKEOVER_INTERVAL_MS = MS_PER_SECOND
16
- // A cold `tsx` start claims within seconds; the bound is generous so a loaded machine is not a failure.
17
- const TAKEOVER_ATTEMPTS = 120
17
+ // A cold `tsx` start claims within seconds. The successor still has a driver to start after its claim,
18
+ // so the claim gets what the dispatch bound leaves after that start (joshuafolkken/kit#7507).
19
+ const TAKEOVER_WAIT_MS = backlog_dispatch_bound.NOTICE_MS
20
+ const TAKEOVER_ATTEMPTS = TAKEOVER_WAIT_MS / TAKEOVER_INTERVAL_MS
18
21
 
19
22
  type TakeoverResult = 'taken' | 'died' | 'unclaimed'
20
23
 
@@ -60,7 +63,7 @@ async function await_takeover(
60
63
  return result
61
64
  }
62
65
 
63
- const run_wake_takeover = { await_takeover, ports_of }
66
+ const run_wake_takeover = { TAKEOVER_WAIT_MS, await_takeover, ports_of }
64
67
 
65
68
  export type { TakeoverPorts, TakeoverResult }
66
69
  export { run_wake_takeover }
@@ -1,3 +1,4 @@
1
+ import { backlog_dispatch_bound } from '#scripts/backlog/backlog-dispatch-bound'
1
2
  import { MS_PER_MINUTE } from '#scripts/lib/timeouts'
2
3
 
3
4
  // **The driver is bounded so the supervisor reaches its pass boundary between dispatches**
@@ -10,6 +11,8 @@ const WINDOW_MS = WINDOW_MINUTES * MS_PER_MINUTE
10
11
  // **The supervisor's pause between passes is its own, not the driver's offer interval**
11
12
  // (joshuafolkken/kit#6718): a pass reads local records, and the backlog only through the driver, so
12
13
  // stretching the offer interval for the REST budget must not slow how soon a judgment hand-off is seen.
13
- const PASS_INTERVAL_MS = MS_PER_MINUTE
14
+ // A pass may start a fresh driver, so the pause is what the dispatch bound leaves after that start
15
+ // (joshuafolkken/kit#7507).
16
+ const PASS_INTERVAL_MS = backlog_dispatch_bound.NOTICE_MS
14
17
 
15
18
  export const run_wake_window = { WINDOW_MINUTES, WINDOW_MS, PASS_INTERVAL_MS }
@@ -45,6 +45,8 @@ interface RunWake {
45
45
  woke: number
46
46
  // The grace window is measured from this; cleared when the woken session claims the record.
47
47
  woke_at?: string | undefined
48
+ // Kept after claim so legacy shared-log completion can authenticate the launch.
49
+ launch_at?: string | undefined
48
50
  // Launches for the current cut: what was started, against `woke`'s what arrived.
49
51
  attempts?: number | undefined
50
52
  // Named in the failure warning, never killed — a slow session is still doing the run's work.
@@ -100,6 +102,7 @@ const run_wake_schema = process_owner_schema.extend({
100
102
  started_at: z.string(),
101
103
  woke: z.number(),
102
104
  woke_at: z.string().optional(),
105
+ launch_at: z.string().optional(),
103
106
  // Every optional `RunWake` field must be listed: `z.object` strips undeclared ones on the round trip.
104
107
  attempts: z.number().optional(),
105
108
  woke_pid: z.number().optional(),
@@ -199,6 +202,7 @@ function carried_state(existing: RunWake | undefined, invocation: string): Parti
199
202
  return {
200
203
  woke: existing.woke,
201
204
  woke_at: existing.woke_at,
205
+ launch_at: existing.launch_at,
202
206
  attempts: existing.attempts,
203
207
  woke_pid: existing.woke_pid,
204
208
  spawned: existing.spawned,
@@ -266,6 +270,7 @@ function count_claim(wake: RunWake): RunWake {
266
270
  return {
267
271
  ...wake,
268
272
  woke,
273
+ launch_at: wake.woke_at ?? wake.launch_at,
269
274
  woke_at: undefined,
270
275
  attempts: undefined,
271
276
  idle_since: undefined,
@@ -1,5 +1,6 @@
1
1
  import { existsSync, readFileSync } from 'node:fs'
2
2
  import path from 'node:path'
3
+ import { is_workflow_destination } from '#scripts/claude/workflow-destination'
3
4
  import { init_ai_copy } from '#scripts/init/init-ai-copy'
4
5
  import { transform_copied_content } from '#scripts/init/init-copy-content'
5
6
  import { init_logic } from '#scripts/init/init-logic'
@@ -7,7 +8,9 @@ import { PACKAGE_DIR, PROJECT_ROOT } from '#scripts/init/init-paths'
7
8
  import type { ProjectShape } from '#scripts/init/project-profile'
8
9
  import { security_policy } from '#scripts/init/security-policy'
9
10
  import { file_reader } from '#scripts/lib/read-file'
11
+ import { managed_marker_logic } from '#scripts/managed-marker/managed-marker-logic'
10
12
  import { pack_hook } from '#scripts/safe-chain/pack-hook'
13
+ import { KIT_PACKAGE_NAME } from '#scripts/version/kit-descriptor'
11
14
  import { claude_settings_merge } from './claude-settings-merge'
12
15
  import { copy_directory_failure, directory_copy_blocker } from './directory-copy-guard'
13
16
  import { file_content } from './file-content'
@@ -20,7 +23,21 @@ const CLAUDE_MD_FILENAME = 'CLAUDE.md'
20
23
  const CLAUDE_SETTINGS_FILE = '.claude/settings.json'
21
24
  const CODEX_HOOKS_FILE = '.codex/hooks.json'
22
25
 
26
+ function keep_custom_workflow(destination: string): boolean {
27
+ if (!is_workflow_destination(destination)) return false
28
+ const existing = file_reader.read_optional(destination)
29
+ if (existing === undefined) return false
30
+ const marker = `${managed_marker_logic.MARKER_PREFIX} ${KIT_PACKAGE_NAME}`
31
+ if (existing.split(/\r?\n/u, 1)[0] === marker) return false
32
+ console.warn(
33
+ ` ⚠ kept ${destination} (custom workflow; migrate its acquisition settings manually)`,
34
+ )
35
+
36
+ return true
37
+ }
38
+
23
39
  function sync_ai_file(source_path: string, destination_path: string): boolean {
40
+ if (keep_custom_workflow(destination_path)) return false
24
41
  const content = readFileSync(source_path, 'utf8')
25
42
 
26
43
  return file_content.write_text_if_changed(
@@ -35,7 +35,17 @@ function sync_with_merge(
35
35
  // lines, including env-var forms: npmrcAuthFile can opt the file into authentication from a deploy
36
36
  // dashboard that sync cannot inspect.
37
37
  function sync_npmrc(destination_path: string): void {
38
- sync_with_merge(destination_path, '.npmrc', init_logic.merge_npmrc)
38
+ const existing = existsSync(destination_path) ? readFileSync(destination_path, 'utf8') : ''
39
+ const merged = init_logic.merge_npmrc(existing, path.dirname(destination_path))
40
+
41
+ if (merged === existing) {
42
+ console.info(' ✔ unchanged .npmrc')
43
+
44
+ return
45
+ }
46
+
47
+ file_content.write_contained(destination_path, merged)
48
+ console.info(' ✔ synced .npmrc')
39
49
  }
40
50
 
41
51
  // Union-merge kit's .gitignore entries into the consumer file instead of overwriting it,
@@ -194,7 +194,11 @@ function sync_consumer_resolved_development_deps(destination_path: string): void
194
194
  function sync_prepare_lefthook_warning(destination_path: string): void {
195
195
  sync_package_json_with(
196
196
  destination_path,
197
- (existing) => init_logic.upgrade_prepare_lefthook_warning(existing),
197
+ (existing) =>
198
+ init_logic.upgrade_npm_lifecycle(
199
+ init_logic.upgrade_prepare_lefthook_warning(existing),
200
+ path.dirname(destination_path),
201
+ ),
198
202
  ' ✔ synced prepare lefthook install warning (run `pnpm install`)',
199
203
  )
200
204
  }
@@ -4,11 +4,12 @@ import { direct_importers } from './direct-importers'
4
4
  import { test_declared_logic } from './test-declared-logic'
5
5
  import { test_pinned_logic } from './test-pinned-logic'
6
6
  import { test_pinned_reach, type ReachedCount } from './test-pinned-reach'
7
+ import { test_related_imports } from './test-related-imports'
7
8
  import { test_related_pins } from './test-related-pins'
8
9
  import { related_scope } from './test-related-scope'
9
10
 
10
11
  // **A change whose imports reach more than `test_pinned_logic.MAX_TEST_FILES` test files runs only the
11
- // tests importing its widest files directly** (joshuafolkken/kit#5532, #5702), as a file every test imports does
12
+ // tests importing its widest files directly when their imports are unchanged** (#7453, #5532, #5702), as a file every test imports does
12
13
  // (`direct-importers.ts`): the tests past them stay unchecked here, for `josh gate`'s whole suite and
13
14
  // CI to run. `--keep-whole-suite` (the gate's unit leg) lifts the cap outside a lane
14
15
  // (`test-related-whole.ts`), and so does a missing graph.
@@ -85,7 +86,8 @@ async function direct_of(
85
86
  root: string,
86
87
  over_cap: ReadonlyArray<string>,
87
88
  ): Promise<Array<[string, Array<string>]>> {
88
- const importers = await direct_importers.importers_of(root, over_cap)
89
+ const stable = await test_related_imports.stable_files(root, over_cap)
90
+ const importers = await direct_importers.importers_of(root, stable)
89
91
  const narrowed = [...importers].filter(([, tests]) => tests.length > 0)
90
92
 
91
93
  return narrowed.map(([file, tests]) => [file, test_related_pins.with_pins(file, tests)])
@@ -96,7 +98,9 @@ async function split_of(
96
98
  root: string,
97
99
  files: ReadonlyArray<string>,
98
100
  ): Promise<[Map<string, Array<string>>, Array<string>]> {
99
- const every_test = await direct_importers.every_test_importers(root, files)
101
+ const shared = direct_importers.every_test_imports_of(files)
102
+ const stable = await test_related_imports.stable_files(root, shared)
103
+ const every_test = await direct_importers.every_test_importers(root, stable)
100
104
 
101
105
  return [every_test, candidates_of(root, files, every_test)]
102
106
  }