@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.
- package/.claude/skills/workflow-commands/backlogrun-steps.md +1 -1
- package/.claude/skills/workflow-commands/fullrun-steps.md +3 -3
- package/.claude/skills/workflow-commands/halfrun.md +3 -2
- package/.claude/skills/workflow-commands/kickoff.md +9 -2
- package/.claude/skills/workflow-commands/prerequisite.md +2 -0
- package/.claude/skills/workflow-commands/progress-watcher.md +10 -8
- package/.claude/skills/workflow-commands/retrospective.md +2 -1
- package/.claude/skills/workflow-commands/split-assessment.md +4 -0
- package/.github/workflows/ci.yml +0 -20
- package/.github/workflows/pr-classification.yml +0 -5
- package/.github/workflows/publish.yml +0 -1
- package/.github/workflows/sonar-qube.yml +0 -5
- package/README.md +2 -0
- package/SECURITY.md +2 -1
- package/dist/.inputs-verified.json +1 -1
- package/dist/commands/adopt.js +29 -20
- package/dist/commands/auto-ok-judge-cli.js +43 -33
- package/dist/commands/auto-ok-main.js +73 -74
- package/dist/commands/backlog-budget-main.js +5 -6
- package/dist/commands/backlog-drive-cli.js +286 -305
- package/dist/commands/backlog-next-main.js +111 -108
- package/dist/commands/backlog-offer-main.js +148 -112
- package/dist/commands/backlog-plan-cli.js +123 -120
- package/dist/commands/backlog-triage-cli.js +131 -128
- package/dist/commands/backlogrun-cli.js +273 -264
- package/dist/commands/behavior-cli.js +23 -26
- package/dist/commands/bytes-command.js +56 -59
- package/dist/commands/cases-cli.js +4 -5
- package/dist/commands/check-commit-message-main.js +3 -4
- package/dist/commands/check-related.js +125 -119
- package/dist/commands/chunk-26JL4UU4.js +365 -0
- package/dist/commands/chunk-2BIVHPCA.js +85 -0
- package/dist/commands/chunk-2CKJODCK.js +245 -0
- package/dist/commands/chunk-2E6PSONB.js +46 -0
- package/dist/commands/chunk-2GA4775H.js +77 -0
- package/dist/commands/chunk-2O64H5UJ.js +462 -0
- package/dist/commands/chunk-2OEXY4GM.js +252 -0
- package/dist/commands/chunk-2OMIHPPE.js +51 -0
- package/dist/commands/chunk-2ONSHOAY.js +46 -0
- package/dist/commands/chunk-2Q7MGFYB.js +1208 -0
- package/dist/commands/chunk-2SA3W4JF.js +41 -0
- package/dist/commands/chunk-2VY7CJ2R.js +212 -0
- package/dist/commands/chunk-2WRDAQPJ.js +74 -0
- package/dist/commands/chunk-2XLR7R6E.js +541 -0
- package/dist/commands/chunk-2XZF3YFY.js +47 -0
- package/dist/commands/chunk-33TAOZUE.js +29 -0
- package/dist/commands/chunk-374XGAWD.js +158 -0
- package/dist/commands/chunk-3CJNQU7P.js +179 -0
- package/dist/commands/chunk-3D5T6KMW.js +59 -0
- package/dist/commands/chunk-3EW5LTN3.js +114 -0
- package/dist/commands/chunk-3F3RNIG2.js +128 -0
- package/dist/commands/chunk-3FLTEJZY.js +74 -0
- package/dist/commands/chunk-3JWPTRNI.js +60 -0
- package/dist/commands/chunk-3MQTOUXT.js +94 -0
- package/dist/commands/chunk-3PCUERXE.js +19 -0
- package/dist/commands/chunk-3U6A5WON.js +173 -0
- package/dist/commands/chunk-3YT3RCSI.js +140 -0
- package/dist/commands/chunk-43DU7DYZ.js +540 -0
- package/dist/commands/chunk-43H725LG.js +132 -0
- package/dist/commands/chunk-46STCE6Q.js +48 -0
- package/dist/commands/chunk-46WEC6HZ.js +82 -0
- package/dist/commands/chunk-47J4KOZP.js +46 -0
- package/dist/commands/chunk-47W7PF4T.js +22 -0
- package/dist/commands/chunk-4F4KARQN.js +229 -0
- package/dist/commands/chunk-4GUGC4IW.js +338 -0
- package/dist/commands/chunk-4HB7NWXP.js +263 -0
- package/dist/commands/chunk-4HOTJAO6.js +89 -0
- package/dist/commands/chunk-4I5AA4P5.js +237 -0
- package/dist/commands/chunk-4IDINPBE.js +525 -0
- package/dist/commands/chunk-4K7KLR7L.js +69 -0
- package/dist/commands/chunk-4MGTNY2L.js +347 -0
- package/dist/commands/chunk-4NSIW3UB.js +104 -0
- package/dist/commands/chunk-4YTKV6WV.js +37 -0
- package/dist/commands/chunk-5ARNFMQK.js +1263 -0
- package/dist/commands/chunk-5AZTSESD.js +114 -0
- package/dist/commands/chunk-5FUI2MLY.js +89 -0
- package/dist/commands/chunk-5GI5GLC4.js +214 -0
- package/dist/commands/chunk-5IHEBIPD.js +333 -0
- package/dist/commands/chunk-5KAW5GPF.js +44 -0
- package/dist/commands/chunk-5KSJEWXR.js +77 -0
- package/dist/commands/chunk-5OF2B4BF.js +35 -0
- package/dist/commands/chunk-5PLJ7R3D.js +126 -0
- package/dist/commands/chunk-5PPWXOCF.js +64 -0
- package/dist/commands/chunk-5VQCL33M.js +46 -0
- package/dist/commands/chunk-5Y7FOJLX.js +186 -0
- package/dist/commands/chunk-5YTEMF4O.js +110 -0
- package/dist/commands/chunk-62NYXZCC.js +241 -0
- package/dist/commands/chunk-6KUA7MRG.js +64 -0
- package/dist/commands/chunk-6LDEZFYR.js +88 -0
- package/dist/commands/chunk-6NXIZMIK.js +122 -0
- package/dist/commands/chunk-6O45F6YI.js +86 -0
- package/dist/commands/chunk-6OHJBQDE.js +184 -0
- package/dist/commands/chunk-6WDCCG3M.js +1249 -0
- package/dist/commands/chunk-6ZHXEQAI.js +715 -0
- package/dist/commands/chunk-736NECRD.js +16 -0
- package/dist/commands/chunk-77LEKVEE.js +32 -0
- package/dist/commands/chunk-7CX5VYOL.js +50 -0
- package/dist/commands/chunk-7DGHFBU7.js +247 -0
- package/dist/commands/chunk-7E43YW53.js +128 -0
- package/dist/commands/chunk-7EAYFMDN.js +235 -0
- package/dist/commands/chunk-7HP3FQGQ.js +51 -0
- package/dist/commands/chunk-7JOOMFDI.js +155 -0
- package/dist/commands/chunk-7OEBSPPU.js +321 -0
- package/dist/commands/chunk-A3JYZWBS.js +803 -0
- package/dist/commands/chunk-A3LCN4KA.js +84 -0
- package/dist/commands/chunk-ABLXBG6C.js +98 -0
- package/dist/commands/chunk-AN7BFVHU.js +244 -0
- package/dist/commands/chunk-AQCVEQSM.js +99 -0
- package/dist/commands/chunk-AT46EY7H.js +393 -0
- package/dist/commands/chunk-AU563VKH.js +75 -0
- package/dist/commands/chunk-AUTD5FV2.js +1077 -0
- package/dist/commands/chunk-AV26CMY6.js +304 -0
- package/dist/commands/chunk-B2PJEV3S.js +246 -0
- package/dist/commands/chunk-B545ENGY.js +214 -0
- package/dist/commands/chunk-B5HP6T4L.js +170 -0
- package/dist/commands/chunk-B5XYAWNN.js +37 -0
- package/dist/commands/chunk-B73IIRMS.js +207 -0
- package/dist/commands/chunk-BAEDHPXW.js +160 -0
- package/dist/commands/chunk-BDSG6JKH.js +977 -0
- package/dist/commands/chunk-BE6F4YK2.js +769 -0
- package/dist/commands/chunk-BFKTUD3V.js +33 -0
- package/dist/commands/chunk-BLRXHK2V.js +17 -0
- package/dist/commands/chunk-BLUAO4QW.js +173 -0
- package/dist/commands/chunk-BML6MEUB.js +326 -0
- package/dist/commands/chunk-BPDNGJXY.js +63 -0
- package/dist/commands/chunk-BQLKWGGC.js +118 -0
- package/dist/commands/chunk-BRMJVCP7.js +167 -0
- package/dist/commands/chunk-BRWR5YKU.js +268 -0
- package/dist/commands/chunk-BUZAYEBD.js +319 -0
- package/dist/commands/chunk-BVUL57IX.js +139 -0
- package/dist/commands/chunk-CC4BIGCA.js +20 -0
- package/dist/commands/chunk-CCHJZEF5.js +4220 -0
- package/dist/commands/chunk-CDK7QZWG.js +44 -0
- package/dist/commands/chunk-CDYFUCDC.js +72 -0
- package/dist/commands/chunk-CEADAQIL.js +170 -0
- package/dist/commands/chunk-CNL3SLM6.js +116 -0
- package/dist/commands/chunk-CNQ7D2GZ.js +104 -0
- package/dist/commands/chunk-CTXJVMHW.js +48 -0
- package/dist/commands/chunk-CUWT6UQO.js +13 -0
- package/dist/commands/chunk-CVRDJCOE.js +125 -0
- package/dist/commands/chunk-D6CF5QGM.js +80 -0
- package/dist/commands/chunk-DACNQAXC.js +20 -0
- package/dist/commands/chunk-DDOS32JU.js +74 -0
- package/dist/commands/chunk-DDZVMXZD.js +481 -0
- package/dist/commands/chunk-DF6QD4AF.js +52 -0
- package/dist/commands/chunk-DFEXNB44.js +159 -0
- package/dist/commands/chunk-DHDKG5HZ.js +151 -0
- package/dist/commands/chunk-DHJRFBKO.js +223 -0
- package/dist/commands/chunk-DKDWOE3C.js +78 -0
- package/dist/commands/chunk-DKO5VTEH.js +65 -0
- package/dist/commands/chunk-DLHH3MLS.js +85 -0
- package/dist/commands/chunk-DOYNK72G.js +81 -0
- package/dist/commands/chunk-DS53UUDH.js +679 -0
- package/dist/commands/chunk-DUA4E4ES.js +230 -0
- package/dist/commands/chunk-DURHGVRC.js +33 -0
- package/dist/commands/chunk-DVCMQMRN.js +191 -0
- package/dist/commands/chunk-E3YKMCCJ.js +108 -0
- package/dist/commands/chunk-E4F2RTKC.js +272 -0
- package/dist/commands/chunk-E4PFCTXN.js +127 -0
- package/dist/commands/chunk-EAOTR2WL.js +24 -0
- package/dist/commands/chunk-EE4VOZJP.js +167 -0
- package/dist/commands/chunk-EHVEWJQ4.js +33 -0
- package/dist/commands/chunk-EMFSPPMH.js +98 -0
- package/dist/commands/chunk-EN65ZS3S.js +73 -0
- package/dist/commands/chunk-ES42XPAD.js +123 -0
- package/dist/commands/chunk-ESUY7KTZ.js +137 -0
- package/dist/commands/chunk-ET6IRQ3L.js +330 -0
- package/dist/commands/chunk-EWCUT7U2.js +1314 -0
- package/dist/commands/chunk-EWXXEGXL.js +149 -0
- package/dist/commands/chunk-EZYW54OQ.js +7569 -0
- package/dist/commands/chunk-F2RDEF2J.js +205 -0
- package/dist/commands/chunk-F2U46HAE.js +52 -0
- package/dist/commands/chunk-F2VYWU6Z.js +653 -0
- package/dist/commands/chunk-F4SGOTUF.js +36 -0
- package/dist/commands/chunk-F4YMLVWN.js +183 -0
- package/dist/commands/chunk-F5N2QIFD.js +213 -0
- package/dist/commands/chunk-F7B4ESZE.js +80 -0
- package/dist/commands/chunk-FJM2HWKW.js +299 -0
- package/dist/commands/chunk-FJMXUDEY.js +3985 -0
- package/dist/commands/chunk-FM7VVAK6.js +426 -0
- package/dist/commands/chunk-FQWRM5FC.js +67 -0
- package/dist/commands/chunk-FT33ZCSB.js +298 -0
- package/dist/commands/chunk-G2DNS74C.js +53 -0
- package/dist/commands/chunk-G75GWNNY.js +101 -0
- package/dist/commands/chunk-GA2YSPFH.js +32 -0
- package/dist/commands/chunk-GAVSK6P6.js +230 -0
- package/dist/commands/chunk-GB2BRQVL.js +300 -0
- package/dist/commands/chunk-GBMZXFFC.js +44 -0
- package/dist/commands/chunk-GDP7QXYE.js +76 -0
- package/dist/commands/chunk-GGWXF7RJ.js +70 -0
- package/dist/commands/chunk-GHOTKHI4.js +30 -0
- package/dist/commands/chunk-GMVN6ZP2.js +48 -0
- package/dist/commands/chunk-GNTTGRCX.js +133 -0
- package/dist/commands/chunk-GOY5JECO.js +130 -0
- package/dist/commands/chunk-GVDRRBHZ.js +507 -0
- package/dist/commands/chunk-GWTBIGYC.js +550 -0
- package/dist/commands/chunk-GZL6ISVM.js +72 -0
- package/dist/commands/chunk-HALHQILI.js +51 -0
- package/dist/commands/chunk-HAT7AFBF.js +85 -0
- package/dist/commands/chunk-HDVSZ6CZ.js +292 -0
- package/dist/commands/chunk-HE3GOMR7.js +88 -0
- package/dist/commands/chunk-HEFUC4ZW.js +65 -0
- package/dist/commands/chunk-HESWKELD.js +60 -0
- package/dist/commands/chunk-HNFBEB4L.js +77 -0
- package/dist/commands/chunk-HRN73FQJ.js +77 -0
- package/dist/commands/chunk-HYE3MBAN.js +113 -0
- package/dist/commands/chunk-IAB6LCJL.js +18 -0
- package/dist/commands/chunk-IAGENI2U.js +42 -0
- package/dist/commands/chunk-ICPVBHIX.js +48 -0
- package/dist/commands/chunk-IEKW3ON6.js +161 -0
- package/dist/commands/chunk-IOKOHB7P.js +109 -0
- package/dist/commands/chunk-IONGJJYM.js +179 -0
- package/dist/commands/chunk-IP23WOWP.js +126 -0
- package/dist/commands/chunk-IPS7EBE5.js +140 -0
- package/dist/commands/chunk-IXZZSST7.js +459 -0
- package/dist/commands/chunk-J4XHEOOW.js +156 -0
- package/dist/commands/chunk-JDHLHYJJ.js +208 -0
- package/dist/commands/chunk-JEYITIWB.js +423 -0
- package/dist/commands/chunk-JGX7JIW4.js +126 -0
- package/dist/commands/chunk-JHIGDFBS.js +59 -0
- package/dist/commands/chunk-JI2EGXZX.js +53 -0
- package/dist/commands/chunk-JNV3VRK2.js +47 -0
- package/dist/commands/chunk-JPMAW2VZ.js +91 -0
- package/dist/commands/chunk-JQEY6KDP.js +90 -0
- package/dist/commands/chunk-JSJDIEGZ.js +88 -0
- package/dist/commands/chunk-JT5ICRFF.js +44 -0
- package/dist/commands/chunk-JUCJ4Y42.js +77 -0
- package/dist/commands/chunk-K3OZBV3L.js +49 -0
- package/dist/commands/chunk-K5H3CLZZ.js +430 -0
- package/dist/commands/chunk-K6P5PISC.js +114 -0
- package/dist/commands/chunk-KD3SEAMV.js +402 -0
- package/dist/commands/chunk-KDCHY7XO.js +88 -0
- package/dist/commands/chunk-KDGX3JTV.js +51 -0
- package/dist/commands/chunk-KGSEWOKI.js +353 -0
- package/dist/commands/chunk-KHGDZQRG.js +271 -0
- package/dist/commands/chunk-KIS7JFNP.js +217 -0
- package/dist/commands/chunk-KKHD3C2P.js +114 -0
- package/dist/commands/chunk-KKIIY5I5.js +67 -0
- package/dist/commands/chunk-KN46UC77.js +114 -0
- package/dist/commands/chunk-KP2BVAS5.js +125 -0
- package/dist/commands/chunk-KPAJBJXG.js +63 -0
- package/dist/commands/chunk-KPMAJP6D.js +145 -0
- package/dist/commands/chunk-KR6WUAJM.js +122 -0
- package/dist/commands/chunk-KWLNK2NJ.js +391 -0
- package/dist/commands/chunk-L2CLCNXW.js +144 -0
- package/dist/commands/chunk-L7MDU6D7.js +155 -0
- package/dist/commands/chunk-L7VD4MLF.js +78 -0
- package/dist/commands/chunk-LBMAJDGN.js +124 -0
- package/dist/commands/chunk-LBVYFW3I.js +38 -0
- package/dist/commands/chunk-LE3M42CF.js +350 -0
- package/dist/commands/chunk-LIPUSINQ.js +140 -0
- package/dist/commands/chunk-LJVZWE3A.js +1885 -0
- package/dist/commands/chunk-LKSSQVDA.js +49 -0
- package/dist/commands/chunk-LL6G34MF.js +93 -0
- package/dist/commands/chunk-LNQOL2CL.js +321 -0
- package/dist/commands/chunk-LS7P324N.js +72 -0
- package/dist/commands/chunk-LU5EOGFQ.js +50 -0
- package/dist/commands/chunk-LX2ENXHZ.js +197 -0
- package/dist/commands/chunk-M32UPB2D.js +110 -0
- package/dist/commands/chunk-M3UGRNNB.js +103 -0
- package/dist/commands/chunk-M4WG74Q7.js +260 -0
- package/dist/commands/chunk-M5HA2ZCG.js +105 -0
- package/dist/commands/chunk-MDGPJOLK.js +351 -0
- package/dist/commands/chunk-MDKRTUE4.js +288 -0
- package/dist/commands/chunk-MFZVRWRS.js +34 -0
- package/dist/commands/chunk-MHXIJKGP.js +304 -0
- package/dist/commands/chunk-MK4CARBI.js +90 -0
- package/dist/commands/chunk-MLJDW7YN.js +64 -0
- package/dist/commands/chunk-MNLHYAJO.js +80 -0
- package/dist/commands/chunk-MOD3FG4V.js +419 -0
- package/dist/commands/chunk-MRAEJLXL.js +83 -0
- package/dist/commands/chunk-MRW2WYJS.js +68 -0
- package/dist/commands/chunk-MXPCEZL5.js +23 -0
- package/dist/commands/chunk-N2XH7QBY.js +103 -0
- package/dist/commands/chunk-N2ZF6T4E.js +332 -0
- package/dist/commands/chunk-N36NZMAL.js +79 -0
- package/dist/commands/chunk-N4EMFHQ6.js +114 -0
- package/dist/commands/chunk-N4P64UIH.js +211 -0
- package/dist/commands/chunk-NABSSY4P.js +204 -0
- package/dist/commands/chunk-NDQIJBRQ.js +100 -0
- package/dist/commands/chunk-NDR4PCVG.js +29 -0
- package/dist/commands/chunk-NEOCCN6D.js +302 -0
- package/dist/commands/chunk-NFKWFOFM.js +45 -0
- package/dist/commands/chunk-NFUPJBBG.js +516 -0
- package/dist/commands/chunk-NHEBKL7X.js +170 -0
- package/dist/commands/chunk-NHTEC5U4.js +99 -0
- package/dist/commands/chunk-NOSG3RUP.js +84 -0
- package/dist/commands/chunk-NOSODWWK.js +1132 -0
- package/dist/commands/chunk-NPXXYG6Z.js +580 -0
- package/dist/commands/chunk-NR2JDBPV.js +75 -0
- package/dist/commands/chunk-NRULNBYI.js +1153 -0
- package/dist/commands/chunk-NTGF5N3N.js +110 -0
- package/dist/commands/chunk-NTIVNQKF.js +73 -0
- package/dist/commands/chunk-NUCFIYZL.js +119 -0
- package/dist/commands/chunk-NVMV7BYX.js +88 -0
- package/dist/commands/chunk-NYWPTYGL.js +169 -0
- package/dist/commands/chunk-NZ45KOLL.js +104 -0
- package/dist/commands/chunk-O45BX4EL.js +39 -0
- package/dist/commands/chunk-O46T4ANI.js +229 -0
- package/dist/commands/chunk-O5JGV7NA.js +245 -0
- package/dist/commands/chunk-O7ESC4HL.js +566 -0
- package/dist/commands/chunk-OBYLXHCH.js +86 -0
- package/dist/commands/chunk-OKN63ZH5.js +109 -0
- package/dist/commands/chunk-ON4IKRGS.js +469 -0
- package/dist/commands/chunk-OT74RSQO.js +82 -0
- package/dist/commands/chunk-OVCVINYW.js +143 -0
- package/dist/commands/chunk-OZKLVTYI.js +342 -0
- package/dist/commands/chunk-P3LJ2Q4N.js +555 -0
- package/dist/commands/chunk-P43GWYR6.js +185 -0
- package/dist/commands/chunk-P6ASP2DY.js +132 -0
- package/dist/commands/chunk-PBAEJ5PT.js +38 -0
- package/dist/commands/chunk-PCZROH3R.js +100 -0
- package/dist/commands/chunk-PF3PMT2Q.js +46 -0
- package/dist/commands/chunk-PILH72AV.js +170 -0
- package/dist/commands/chunk-PJYTUUTH.js +34 -0
- package/dist/commands/chunk-PKXTISWR.js +58 -0
- package/dist/commands/chunk-PSGLUBSB.js +74 -0
- package/dist/commands/chunk-PUQA7F6Y.js +186 -0
- package/dist/commands/chunk-PVRDJU2B.js +126 -0
- package/dist/commands/chunk-Q3HM2BEH.js +45 -0
- package/dist/commands/chunk-Q42NF2TL.js +47 -0
- package/dist/commands/chunk-Q4ULMZAS.js +106 -0
- package/dist/commands/chunk-QCRUPRQ2.js +207 -0
- package/dist/commands/chunk-QFIKPGMC.js +280 -0
- package/dist/commands/chunk-QSBYULSS.js +100 -0
- package/dist/commands/chunk-QSJCZATC.js +18 -0
- package/dist/commands/chunk-QTJPCXEW.js +23 -0
- package/dist/commands/chunk-QTQAI2M2.js +179 -0
- package/dist/commands/chunk-QTVVFV4Q.js +127 -0
- package/dist/commands/chunk-QX2EMUXV.js +102 -0
- package/dist/commands/chunk-QXBOECGL.js +272 -0
- package/dist/commands/chunk-QXCG3SG4.js +88 -0
- package/dist/commands/chunk-QZVMGAWV.js +307 -0
- package/dist/commands/chunk-R36VZIKU.js +53 -0
- package/dist/commands/chunk-R3F7F3TX.js +94 -0
- package/dist/commands/chunk-R5AABJZJ.js +1062 -0
- package/dist/commands/chunk-R7PYR4HW.js +389 -0
- package/dist/commands/chunk-RDUFVQVJ.js +997 -0
- package/dist/commands/chunk-RESNXNDG.js +54 -0
- package/dist/commands/chunk-RFIOZTXY.js +305 -0
- package/dist/commands/chunk-RFWB2KAV.js +102 -0
- package/dist/commands/chunk-RFXON3FK.js +25 -0
- package/dist/commands/chunk-RGEB5L37.js +66 -0
- package/dist/commands/chunk-RGRLLF2J.js +119 -0
- package/dist/commands/chunk-RLRIMYXM.js +178 -0
- package/dist/commands/chunk-RNB3DQOZ.js +70 -0
- package/dist/commands/chunk-RO4QEZJO.js +172 -0
- package/dist/commands/chunk-RS5HBJY6.js +161 -0
- package/dist/commands/chunk-RV7EQIE4.js +202 -0
- package/dist/commands/chunk-RWPCK3CO.js +41 -0
- package/dist/commands/chunk-RWYSVFIA.js +250 -0
- package/dist/commands/chunk-RYKK75YT.js +289 -0
- package/dist/commands/chunk-S4JE63QE.js +704 -0
- package/dist/commands/chunk-S4OZJIXD.js +134 -0
- package/dist/commands/chunk-SD4EX75H.js +177 -0
- package/dist/commands/chunk-SJITWFNY.js +480 -0
- package/dist/commands/chunk-SKGDMAIA.js +33 -0
- package/dist/commands/chunk-SNSZ25XZ.js +393 -0
- package/dist/commands/chunk-SQZZHK6X.js +119 -0
- package/dist/commands/chunk-SRTEE34O.js +93 -0
- package/dist/commands/chunk-SYTCTLMD.js +285 -0
- package/dist/commands/chunk-T6JUDQMW.js +181 -0
- package/dist/commands/chunk-T6OUNP7E.js +426 -0
- package/dist/commands/chunk-TEXUEBGE.js +208 -0
- package/dist/commands/chunk-TFDVTU6O.js +910 -0
- package/dist/commands/chunk-TFYYXETQ.js +472 -0
- package/dist/commands/chunk-TMFKVJUW.js +121 -0
- package/dist/commands/chunk-TNJU4CXD.js +32 -0
- package/dist/commands/chunk-TRHWBUWE.js +61 -0
- package/dist/commands/chunk-TROCFVCU.js +45 -0
- package/dist/commands/chunk-TTTZZN7F.js +269 -0
- package/dist/commands/chunk-TUBBESHU.js +85 -0
- package/dist/commands/chunk-TVZIFZZN.js +62 -0
- package/dist/commands/chunk-TXRWAL63.js +144 -0
- package/dist/commands/chunk-U46YTYJQ.js +92 -0
- package/dist/commands/chunk-U5EO4QEV.js +48 -0
- package/dist/commands/chunk-UCO333EX.js +47 -0
- package/dist/commands/chunk-UIXQ4IYT.js +445 -0
- package/dist/commands/chunk-UJGNYPMD.js +716 -0
- package/dist/commands/chunk-URZ4RDC4.js +220 -0
- package/dist/commands/chunk-UUH3DE77.js +57 -0
- package/dist/commands/chunk-UVY5ODCM.js +60 -0
- package/dist/commands/chunk-UWMB6EOU.js +45 -0
- package/dist/commands/chunk-UX3HCPLX.js +449 -0
- package/dist/commands/chunk-UY62WJV6.js +120 -0
- package/dist/commands/chunk-V2T5DP3B.js +224 -0
- package/dist/commands/chunk-VAHQ4AFM.js +585 -0
- package/dist/commands/chunk-VCWNMRH7.js +71 -0
- package/dist/commands/chunk-VHLDQ3PH.js +30 -0
- package/dist/commands/chunk-VL5I2IOD.js +332 -0
- package/dist/commands/chunk-VLN6TSPJ.js +139 -0
- package/dist/commands/chunk-VMG3QB6C.js +81 -0
- package/dist/commands/chunk-VO25PMGS.js +58 -0
- package/dist/commands/chunk-VTLWODJ2.js +133 -0
- package/dist/commands/chunk-VXE3V3OC.js +335 -0
- package/dist/commands/chunk-VY7ZJMDT.js +469 -0
- package/dist/commands/chunk-W3MDLQZF.js +137 -0
- package/dist/commands/chunk-W4BR6QNU.js +1241 -0
- package/dist/commands/chunk-WCYRNNKF.js +76 -0
- package/dist/commands/chunk-WEUUJIWQ.js +84 -0
- package/dist/commands/chunk-WNBJK6QE.js +84 -0
- package/dist/commands/chunk-WR5PKCQW.js +61 -0
- package/dist/commands/chunk-WR73HTRG.js +121 -0
- package/dist/commands/chunk-WRNMUQTD.js +95 -0
- package/dist/commands/chunk-WROJTXWZ.js +138 -0
- package/dist/commands/chunk-WTIPX5NG.js +43 -0
- package/dist/commands/chunk-WWLCQREY.js +225 -0
- package/dist/commands/chunk-WXLW7S4M.js +71 -0
- package/dist/commands/chunk-WXXLJQBO.js +67 -0
- package/dist/commands/chunk-X4LYH6Q4.js +56 -0
- package/dist/commands/chunk-XAEL24EG.js +66 -0
- package/dist/commands/chunk-XCCT6GKA.js +74 -0
- package/dist/commands/chunk-XDR2BRDL.js +216 -0
- package/dist/commands/chunk-XRQMVAB4.js +85 -0
- package/dist/commands/chunk-XSKJAG72.js +91 -0
- package/dist/commands/chunk-XTJA34ND.js +492 -0
- package/dist/commands/chunk-XUXCFPDK.js +218 -0
- package/dist/commands/chunk-XXPDFJRI.js +48 -0
- package/dist/commands/chunk-Y6OGDG5I.js +49 -0
- package/dist/commands/chunk-YEAE46TS.js +98 -0
- package/dist/commands/chunk-YEQFAEVW.js +112 -0
- package/dist/commands/chunk-YJZAD4Z5.js +103 -0
- package/dist/commands/chunk-YMAEYY5R.js +278 -0
- package/dist/commands/chunk-YNCF66RK.js +1052 -0
- package/dist/commands/chunk-YOA25SII.js +210 -0
- package/dist/commands/chunk-YOZTZMAT.js +38 -0
- package/dist/commands/chunk-YSGRHVZG.js +897 -0
- package/dist/commands/chunk-YSLGWRQN.js +646 -0
- package/dist/commands/chunk-YTXCLGGL.js +168 -0
- package/dist/commands/chunk-YVHJN2HS.js +74 -0
- package/dist/commands/chunk-YY7XVVSB.js +43 -0
- package/dist/commands/chunk-Z5GZV4DV.js +16 -0
- package/dist/commands/chunk-Z6QLFPFB.js +907 -0
- package/dist/commands/chunk-ZB52ZIEA.js +1629 -0
- package/dist/commands/chunk-ZCD4AV2P.js +73 -0
- package/dist/commands/chunk-ZCHZU6NX.js +799 -0
- package/dist/commands/chunk-ZEH2B3DF.js +239 -0
- package/dist/commands/chunk-ZEUKX3RZ.js +245 -0
- package/dist/commands/chunk-ZGANVZCA.js +92 -0
- package/dist/commands/chunk-ZGBXUY7R.js +198 -0
- package/dist/commands/chunk-ZGEUWHFF.js +297 -0
- package/dist/commands/chunk-ZHSNQ2F7.js +161 -0
- package/dist/commands/chunk-ZIIUBGON.js +773 -0
- package/dist/commands/chunk-ZJ5S4VFD.js +258 -0
- package/dist/commands/chunk-ZNIIA275.js +59 -0
- package/dist/commands/chunk-ZV6BZZJ2.js +271 -0
- package/dist/commands/ci-timing-cli.js +22 -3
- package/dist/commands/code-symbol-cli.js +21 -7
- package/dist/commands/codex-hook-adapter.js +124 -119
- package/dist/commands/command-derive.js +9 -11
- package/dist/commands/cost-audit-main.js +118 -119
- package/dist/commands/cost-main.js +5 -7
- package/dist/commands/cspell-cached.js +55 -57
- package/dist/commands/defect-origin-main.js +42 -37
- package/dist/commands/defect-report-main.js +33 -25
- package/dist/commands/diff-summary-cli.js +3 -4
- package/dist/commands/disposition-cli.js +117 -118
- package/dist/commands/doctor.js +24 -11
- package/dist/commands/document-read-cli.js +50 -53
- package/dist/commands/document-section-main.js +50 -53
- package/dist/commands/dogfood-commit-cli.js +19 -4
- package/dist/commands/effect-audit-cli.js +40 -41
- package/dist/commands/epic-audit-main.js +88 -86
- package/dist/commands/epic-bundle-main.js +122 -119
- package/dist/commands/epic-check.js +37 -31
- package/dist/commands/epic-main.js +129 -126
- package/dist/commands/epic-next-main.js +85 -83
- package/dist/commands/eval-run.js +6 -7
- package/dist/commands/format-edited-cli.js +71 -46
- package/dist/commands/format.js +41 -56
- package/dist/commands/fresh-machine-cli.js +24 -7
- package/dist/commands/gh-usage-cli.js +22 -22
- package/dist/commands/git-followup-workflow.js +158 -158
- package/dist/commands/git-gh-checks-failed-main.js +23 -15
- package/dist/commands/git-workflow.js +52 -53
- package/dist/commands/github-release-cli.js +3 -3
- package/dist/commands/hook-ledger-cli.js +93 -94
- package/dist/commands/init-main.js +40 -40
- package/dist/commands/inputs.json +2042 -2002
- package/dist/commands/issue-ack-cli.js +28 -21
- package/dist/commands/issue-already-done-cli.js +107 -110
- package/dist/commands/issue-body-cli.js +71 -73
- package/dist/commands/issue-cite-main.js +35 -28
- package/dist/commands/issue-comment-main.js +36 -30
- package/dist/commands/issue-consolidate-cli.js +54 -54
- package/dist/commands/issue-file-main.js +274 -148
- package/dist/commands/issue-fold-existing-cli.js +126 -123
- package/dist/commands/issue-fold-main.js +57 -60
- package/dist/commands/issue-lint-main.js +59 -61
- package/dist/commands/issue-measured-cli.js +108 -110
- package/dist/commands/issue-plan-cli.js +156 -155
- package/dist/commands/issue-premise-unmet-cli.js +111 -113
- package/dist/commands/issue-priority-cli.js +38 -32
- package/dist/commands/issue-read-main.js +38 -33
- package/dist/commands/issue-release-class-cli.js +37 -31
- package/dist/commands/issue-release-main.js +35 -29
- package/dist/commands/issue-scout-main.js +123 -120
- package/dist/commands/issue-spill-main.js +149 -144
- package/dist/commands/issue-state-main.js +36 -31
- package/dist/commands/issue-tick-cli.js +37 -31
- package/dist/commands/josh-completion.js +21 -24
- package/dist/commands/lane-adopt-cli.js +53 -55
- package/dist/commands/lane-breakdown-cli.js +193 -172
- package/dist/commands/lane-cli.js +199 -180
- package/dist/commands/lane-launch-main.js +106 -56
- package/dist/commands/lane-limit-cli.js +119 -116
- package/dist/commands/lane-measure-cli.js +408 -245
- package/dist/commands/lane-pause-cli.js +51 -54
- package/dist/commands/lane-plan-cli.js +148 -147
- package/dist/commands/lane-resolve-cli.js +48 -50
- package/dist/commands/lane-restart-cli.js +185 -168
- package/dist/commands/lane-why-cli.js +121 -122
- package/dist/commands/lane-withdraw-cli.js +84 -86
- package/dist/commands/latest-corepack.js +3 -2
- package/dist/commands/latest-if-required-cli.js +12 -15
- package/dist/commands/latest-lane-guard-main.js +2 -3
- package/dist/commands/latest-scope-main.js +5 -7
- package/dist/commands/latest-update.js +3 -2
- package/dist/commands/lines-command.js +8 -10
- package/dist/commands/lint-parallel-main.js +65 -67
- package/dist/commands/lint-related.js +149 -133
- package/dist/commands/lint-rule.js +64 -66
- package/dist/commands/lockfile-policy.js +29 -32
- package/dist/commands/main-merge-main.js +23 -25
- package/dist/commands/main-sync-main.js +23 -24
- package/dist/commands/managed-config-scope-cli.js +11 -10
- package/dist/commands/measure-rerun-cli.js +31 -26
- package/dist/commands/metrics-command.js +97 -100
- package/dist/commands/observation-record-cli.js +24 -14
- package/dist/commands/observations-flush-cli.js +50 -52
- package/dist/commands/overrides-check.js +1 -1
- package/dist/commands/package-scout-cli.js +70 -73
- package/dist/commands/pin-verify-cli.js +21 -2
- package/dist/commands/plan-consumers-main.js +3 -4
- package/dist/commands/plan-scaffold-cli.js +145 -146
- package/dist/commands/pr-classification-main.js +22 -3
- package/dist/commands/pre-commit-lint.js +30 -34
- package/dist/commands/pre-commit-type-check.js +55 -55
- package/dist/commands/pre-push-unit.js +69 -70
- package/dist/commands/pretool-guard-cli.js +111 -113
- package/dist/commands/prevent-main-commit.js +2 -3
- package/dist/commands/project-profile-cli.js +24 -9
- package/dist/commands/propagate.js +31 -23
- package/dist/commands/prose-stale-cli.js +48 -42
- package/dist/commands/publishable-range-check.js +3 -3
- package/dist/commands/read-set-cli.js +58 -61
- package/dist/commands/refactor-scan-cli.js +8 -9
- package/dist/commands/release-cli.js +57 -57
- package/dist/commands/release-scope-main.js +41 -36
- package/dist/commands/rename-cli.js +64 -36
- package/dist/commands/repo-party-cli.js +3 -4
- package/dist/commands/report-template-cli.js +4 -5
- package/dist/commands/reserved-run.js +17 -20
- package/dist/commands/retrospective-cli.js +126 -127
- package/dist/commands/review-attest-cli.js +28 -20
- package/dist/commands/review-brief-main.js +184 -167
- package/dist/commands/review-findings-cli.js +23 -13
- package/dist/commands/review-pair-cli.js +180 -156
- package/dist/commands/review-record-main.js +171 -147
- package/dist/commands/review-round2-cli.js +89 -91
- package/dist/commands/review-stops-cli.js +51 -54
- package/dist/commands/review-submit-cli.js +184 -167
- package/dist/commands/rule-list.js +78 -80
- package/dist/commands/rule-value-cli.js +115 -116
- package/dist/commands/ruleset-check-cli.js +23 -6
- package/dist/commands/run-add-cli.js +115 -75
- package/dist/commands/run-board-main.js +172 -169
- package/dist/commands/run-carry-cli.js +182 -174
- package/dist/commands/run-chain-cli.js +184 -160
- package/dist/commands/run-cut-cli.js +206 -168
- package/dist/commands/run-ending-cli.js +51 -54
- package/dist/commands/run-entry-cli.js +230 -283
- package/dist/commands/run-event-cli.js +18 -21
- package/dist/commands/run-handoff-cli.js +75 -78
- package/dist/commands/run-handoff-lanes-cli.js +48 -51
- package/dist/commands/run-hold-main.js +105 -107
- package/dist/commands/run-liveness-cli.js +47 -49
- package/dist/commands/run-merge-main.js +159 -151
- package/dist/commands/run-next-cli.js +128 -129
- package/dist/commands/run-park-cli.js +137 -140
- package/dist/commands/run-pause-cli.js +190 -186
- package/dist/commands/run-pickup-cli.js +49 -52
- package/dist/commands/run-prep-main.js +124 -125
- package/dist/commands/run-prime-cli.js +175 -147
- package/dist/commands/run-progress-main.js +149 -146
- package/dist/commands/run-report-cli.js +60 -60
- package/dist/commands/run-review-cli.js +229 -214
- package/dist/commands/run-ship-cli.js +258 -252
- package/dist/commands/run-ship-evidence-cli.js +71 -72
- package/dist/commands/run-ship-lap-W66LTXJJ.js +28 -0
- package/dist/commands/run-ship-wait-main.js +83 -85
- package/dist/commands/run-split-cli.js +176 -172
- package/dist/commands/run-stale-main.js +72 -75
- package/dist/commands/run-status-cli.js +44 -44
- package/dist/commands/run-step-cli.js +213 -211
- package/dist/commands/run-tail-cli.js +23 -18
- package/dist/commands/run-tidy-main.js +67 -69
- package/dist/commands/run-wake-main.js +206 -187
- package/dist/commands/run-watcher-guard-cli.js +63 -66
- package/dist/commands/security-audit-main.js +21 -24
- package/dist/commands/security-audit-provision-main.js +9 -11
- package/dist/commands/selfcheck-cli.js +63 -57
- package/dist/commands/session-language-main.js +70 -73
- package/dist/commands/sonar-hotspots-cli.js +9 -8
- package/dist/commands/sonar-new-code-cli.js +3 -4
- package/dist/commands/split-assess-cli.js +55 -58
- package/dist/commands/split-child-recover-cli.js +38 -39
- package/dist/commands/start.js +64 -64
- package/dist/commands/stash-pop-main.js +4 -5
- package/dist/commands/stash-push-main.js +7 -9
- package/dist/commands/stop-guard.js +180 -176
- package/dist/commands/sync-main.js +30 -15
- package/dist/commands/telegram-test-main.js +29 -22
- package/dist/commands/test-declared.js +29 -15
- package/dist/commands/test-e2e-guard.js +54 -54
- package/dist/commands/test-pinned-main.js +57 -56
- package/dist/commands/test-reach-cli.js +40 -32
- package/dist/commands/test-red-main.js +12 -14
- package/dist/commands/test-related-Z6YY2GFH.js +113 -0
- package/dist/commands/test-related-main.js +89 -89
- package/dist/commands/test-unit-guard-main.js +37 -37
- package/dist/commands/time-cli.js +54 -57
- package/dist/commands/time-density-cli.js +26 -29
- package/dist/commands/tree-status-cli.js +6 -8
- package/dist/commands/type-check-command.js +26 -11
- package/dist/commands/ui-routes-cli.js +5 -6
- package/dist/commands/ui-shot-cli.js +1 -1
- package/dist/commands/uninstall.js +44 -43
- package/dist/commands/unused-members-KVKZDTXD.js +329 -0
- package/dist/commands/unused-members-cli.js +27 -12
- package/dist/commands/upstream-interrupt-main.js +159 -151
- package/dist/commands/verification-gate.js +85 -86
- package/dist/commands/version-check.js +25 -8
- package/dist/hooks/chunk-3SA3FIQC.js +6869 -0
- package/dist/hooks/chunk-46PTTMGE.js +1625 -0
- package/dist/hooks/chunk-5NIBRHWG.js +77 -0
- package/dist/hooks/chunk-76QKN2K3.js +258 -0
- package/dist/hooks/chunk-CHEKMGFP.js +321 -0
- package/dist/hooks/chunk-DCILEVDR.js +5173 -0
- package/dist/hooks/chunk-HVNGIM5W.js +5092 -0
- package/dist/hooks/chunk-L6IZZ2IL.js +11219 -0
- package/dist/hooks/chunk-UZXMFOVK.js +9170 -0
- package/dist/hooks/chunk-WCJ2GWYJ.js +1381 -0
- package/dist/hooks/chunk-YRKS5ZKE.js +1915 -0
- package/dist/hooks/codex-hook-adapter.js +11 -12
- package/dist/hooks/daemon.js +2140 -1387
- package/dist/hooks/format-edited.js +6 -6
- package/dist/hooks/inputs.json +512 -488
- package/dist/hooks/pretool-guard.js +8 -8
- package/dist/hooks/run-ship-lap-P5555IG7.js +8 -0
- package/dist/hooks/session-lang.js +10 -8
- package/dist/hooks/stop-guard.js +962 -669
- package/dist/inputs.json +73 -64
- package/dist/josh.js +1029 -577
- package/dist/registry-migrate.mjs +33938 -0
- package/dist/version/index.js +4251 -175
- package/package.json +4 -1
- package/prompts/collaboration-workflow/principles.md +4 -1
- package/prompts/collaboration-workflow/rule-delivery.md +1 -1
- package/scripts/agent/codex-launch-identity.ts +70 -0
- package/scripts/auto-ok/auto-ok-cli.ts +2 -0
- package/scripts/auto-ok/auto-ok-judge-write.ts +2 -0
- package/scripts/auto-ok/auto-ok-judge.ts +3 -1
- package/scripts/backlog/backlog-arrival.ts +1 -1
- package/scripts/backlog/backlog-budget.ts +5 -2
- package/scripts/backlog/backlog-defect-priority.ts +1 -1
- package/scripts/backlog/backlog-dispatch-bound.ts +17 -0
- package/scripts/backlog/backlog-drain-flush.ts +38 -3
- package/scripts/backlog/backlog-drive-cli.ts +1 -1
- package/scripts/backlog/backlog-drive-hold.ts +28 -5
- package/scripts/backlog/backlog-drive-launch.ts +37 -15
- package/scripts/backlog/backlog-drive-listing.ts +39 -23
- package/scripts/backlog/backlog-drive-retrospective-unit.ts +3 -2
- package/scripts/backlog/backlog-drive-split-unit.ts +1 -0
- package/scripts/backlog/backlog-hold-codes.ts +7 -0
- package/scripts/backlog/backlog-hold-text.ts +14 -1
- package/scripts/backlog/backlog-measure-close.ts +6 -0
- package/scripts/backlog/backlog-next-shared.ts +20 -2
- package/scripts/backlog/backlog-next.ts +24 -3
- package/scripts/backlog/backlog-offer-cli.ts +69 -16
- package/scripts/build/build-migration.ts +25 -0
- package/scripts/build/build.ts +2 -0
- package/scripts/epic/epic-classify.ts +6 -1
- package/scripts/epic/epic-live.ts +46 -0
- package/scripts/followup/followup-failed-tests.ts +71 -10
- package/scripts/followup/followup-job-rerun.ts +2 -2
- package/scripts/gate/change-scope-action.integration.test.ts +88 -0
- package/scripts/gate/change-scope-action.ts +2 -0
- package/scripts/gate/check-related-order.ts +6 -7
- package/scripts/gate/check-related.ts +18 -8
- package/scripts/gate/core-admission.ts +17 -30
- package/scripts/gate/core-budget-poll.ts +183 -0
- package/scripts/gate/core-budget-timing.ts +1 -1
- package/scripts/gate/core-budget.ts +24 -112
- package/scripts/gate/core-wait-record.ts +52 -7
- package/scripts/gate/machine-capacity.ts +6 -2
- package/scripts/gate/metrics-totals.ts +11 -0
- package/scripts/gate/path-glob.test.ts +18 -0
- package/scripts/gate/toolchain-inputs.consumer.test.ts +36 -0
- package/scripts/gh/fix-gh-packages-logic.ts +22 -15
- package/scripts/gh/gh-request-tally.ts +4 -0
- package/scripts/hooks/bash-revert.ts +79 -31
- package/scripts/hooks/format-edited-file.ts +6 -8
- package/scripts/hooks/implementation-shell.ts +3 -2
- package/scripts/init/distributed-paths.ts +18 -5
- package/scripts/init/init-actions.ts +16 -1
- package/scripts/init/init-bootstrap.ts +2 -0
- package/scripts/init/init-logic.ts +40 -8
- package/scripts/init/init.ts +11 -3
- package/scripts/issue/defect-rate-cli.ts +19 -13
- package/scripts/issue/issue-file-batch.ts +7 -3
- package/scripts/issue/issue-file-cli.ts +19 -6
- package/scripts/issue/issue-file-main.ts +6 -1
- package/scripts/issue/issue-file-pass.ts +17 -0
- package/scripts/issue/issue-file.ts +3 -0
- package/scripts/issue/issue-not-before.ts +9 -2
- package/scripts/issue/issue-observation-gate.ts +141 -0
- package/scripts/issue/issue-observation-prime.ts +83 -0
- package/scripts/issue/issue-publication-state.ts +61 -0
- package/scripts/issue/issue-publication.ts +144 -0
- package/scripts/issue/issue-sample-prime.ts +2 -0
- package/scripts/issue/issue-search-count.ts +26 -0
- package/scripts/issue/issue-search.ts +128 -3
- package/scripts/issue/issue-spill-cli.ts +4 -0
- package/scripts/issue/upstream-interrupt-cli.ts +21 -5
- package/scripts/josh/josh-commands-ai.ts +1 -1
- package/scripts/josh/josh-commands-development.ts +1 -1
- package/scripts/josh/josh-commands-issue-write.ts +9 -0
- package/scripts/josh/josh-commands-run.ts +6 -1
- package/scripts/josh/josh-commands-ship.ts +5 -5
- package/scripts/josh/josh-run.ts +5 -2
- package/scripts/josh/session-language-cli.ts +1 -1
- package/scripts/josh/shared-cache.ts +16 -1
- package/scripts/lane/lane-await.ts +15 -0
- package/scripts/lane/lane-cli.ts +2 -0
- package/scripts/lane/lane-dispatch-dependency.ts +102 -0
- package/scripts/lane/lane-dispatch-wait-stats.ts +239 -0
- package/scripts/lane/lane-dispatch.ts +44 -5
- package/scripts/lane/lane-early-push-count.ts +21 -0
- package/scripts/lane/lane-install.ts +15 -5
- package/scripts/lane/lane-launch-cli.ts +35 -14
- package/scripts/lane/lane-ledger-kind.ts +2 -0
- package/scripts/lane/lane-ledger-schema-ship.ts +5 -1
- package/scripts/lane/lane-ledger-schema.ts +15 -1
- package/scripts/lane/lane-ledger-write.ts +4 -1
- package/scripts/lane/lane-relaunch.ts +25 -2
- package/scripts/lane/lane-state-record.ts +2 -0
- package/scripts/lane/lane-state.ts +8 -1
- package/scripts/lane/lane-stats-tables.ts +2 -0
- package/scripts/lane/openai-lane-supervisor.ts +16 -1
- package/scripts/lib/inherited-scope.ts +48 -0
- package/scripts/lint/format-steps.ts +93 -0
- package/scripts/lint/format.ts +6 -49
- package/scripts/lint/lint-related-fix.ts +35 -0
- package/scripts/lint/lint-related.ts +22 -35
- package/scripts/propagate/propagate-steps.ts +9 -4
- package/scripts/registry-migration/migrate-cli.ts +50 -0
- package/scripts/registry-migration/migrate-files.ts +154 -0
- package/scripts/registry-migration/migrate-lock.ts +147 -0
- package/scripts/registry-migration/migrate.ts +235 -0
- package/scripts/registry-migration/npm-acquisition.ts +118 -0
- package/scripts/review/review-record-cli.ts +27 -13
- package/scripts/review/review-record-pinned.ts +15 -6
- package/scripts/run/add/run-add-cli.ts +21 -3
- package/scripts/run/add/run-add.ts +26 -9
- package/scripts/run/board/run-board-header.ts +4 -5
- package/scripts/run/board/run-board-layout.ts +2 -2
- package/scripts/run/board/run-board-read.ts +7 -1
- package/scripts/run/board/run-board-reason.ts +12 -0
- package/scripts/run/board/run-board-retry-wait.ts +35 -0
- package/scripts/run/board/run-board-roots.ts +25 -2
- package/scripts/run/board/run-board-seat.ts +9 -2
- package/scripts/run/board/run-board-setup.ts +19 -11
- package/scripts/run/board/run-board-status.ts +2 -0
- package/scripts/run/board/run-board-tick.ts +7 -1
- package/scripts/run/carry/run-carry-reclaim.ts +12 -2
- package/scripts/run/carry/run-carry-session.ts +48 -0
- package/scripts/run/carry/run-carry.ts +21 -14
- package/scripts/run/cut/run-cut-resume.ts +15 -3
- package/scripts/run/cut/run-cut.ts +1 -1
- package/scripts/run/detached-launch.ts +14 -5
- package/scripts/run/early-push-record.ts +6 -2
- package/scripts/run/event/run-event-setup.ts +2 -0
- package/scripts/run/event/run-event-stream-emit.ts +27 -7
- package/scripts/run/hold/run-hold-cli.ts +40 -5
- package/scripts/run/merge/run-merge-cut-release.ts +17 -0
- package/scripts/run/merge/run-merge-human-review.ts +6 -0
- package/scripts/run/merge/run-merge-steps.ts +4 -57
- package/scripts/run/merge/run-merge-waits.ts +54 -0
- package/scripts/run/prime/run-prime-cli.ts +16 -2
- package/scripts/run/review/run-review-cli.ts +5 -7
- package/scripts/run/review/run-review-early-push.ts +19 -8
- package/scripts/run/review/run-review-join-read.ts +33 -6
- package/scripts/run/review/run-review-pinned-remaining.ts +124 -0
- package/scripts/run/review/run-review-pinned-steps.ts +7 -1
- package/scripts/run/run-halfrun-resume.ts +49 -6
- package/scripts/run/run-headless.ts +3 -0
- package/scripts/run/run-pr-return.ts +14 -5
- package/scripts/run/run-repair-attempt.ts +219 -0
- package/scripts/run/ship/run-ship-lap.ts +5 -17
- package/scripts/run/ship/run-ship-pre-detach-pinned.ts +4 -13
- package/scripts/run/ship/run-ship-scoped.ts +66 -30
- package/scripts/run/startup/run-startup-schema.ts +31 -0
- package/scripts/run/startup/run-startup-store.ts +130 -0
- package/scripts/run/startup/run-startup.ts +119 -0
- package/scripts/run/wake/run-wake-codex.ts +144 -0
- package/scripts/run/wake/run-wake-driver.ts +32 -7
- package/scripts/run/wake/run-wake-handoff.ts +9 -8
- package/scripts/run/wake/run-wake-loop.ts +23 -3
- package/scripts/run/wake/run-wake-ports.ts +17 -3
- package/scripts/run/wake/run-wake-takeover.ts +6 -3
- package/scripts/run/wake/run-wake-window.ts +4 -1
- package/scripts/run/wake/run-wake.ts +5 -0
- package/scripts/sync/sync-ai-files.ts +17 -0
- package/scripts/sync/sync-configs.ts +11 -1
- package/scripts/sync/sync.ts +5 -1
- package/scripts/test/test-related-cap.ts +7 -3
- package/scripts/test/test-related-imports.ts +92 -0
- package/scripts/test/vitest-failure-summary.ts +7 -0
- package/scripts/version/npm-registry.ts +45 -7
- package/scripts/version/upgrade-shell-command.ts +34 -2
- package/templates/workflows/ci.yml +0 -15
- package/templates/workflows/github-release.yml +0 -5
- package/dist/commands/chunk-23GH6B3D.js +0 -333
- package/dist/commands/chunk-24ZDAWML.js +0 -48
- package/dist/commands/chunk-2BB5ZR2F.js +0 -128
- package/dist/commands/chunk-2BJJUTZA.js +0 -59
- package/dist/commands/chunk-2CXT6MBR.js +0 -51
- package/dist/commands/chunk-2DJLAUYB.js +0 -109
- package/dist/commands/chunk-2EZTYLO4.js +0 -179
- package/dist/commands/chunk-2FJJYCBD.js +0 -149
- package/dist/commands/chunk-2PHOLX62.js +0 -43
- package/dist/commands/chunk-2QM72JCJ.js +0 -338
- package/dist/commands/chunk-2VRITY55.js +0 -41
- package/dist/commands/chunk-2XAH3MHV.js +0 -23
- package/dist/commands/chunk-34KZDKQJ.js +0 -304
- package/dist/commands/chunk-352KLSFX.js +0 -67
- package/dist/commands/chunk-36LOGVJ7.js +0 -38
- package/dist/commands/chunk-3AEDZZNL.js +0 -223
- package/dist/commands/chunk-3B2HEFNO.js +0 -51
- package/dist/commands/chunk-3PEXBHRN.js +0 -33
- package/dist/commands/chunk-3Z425MM3.js +0 -61
- package/dist/commands/chunk-3ZOX4G4U.js +0 -88
- package/dist/commands/chunk-452HWOJ7.js +0 -395
- package/dist/commands/chunk-475EFIJV.js +0 -178
- package/dist/commands/chunk-47UZB54M.js +0 -73
- package/dist/commands/chunk-4DN4XVPL.js +0 -716
- package/dist/commands/chunk-4DVM57T7.js +0 -86
- package/dist/commands/chunk-4EADHJVC.js +0 -247
- package/dist/commands/chunk-4HERA2GY.js +0 -95
- package/dist/commands/chunk-4JI35CVO.js +0 -70
- package/dist/commands/chunk-4L4LNWZ7.js +0 -143
- package/dist/commands/chunk-4N32QKJZ.js +0 -170
- package/dist/commands/chunk-4NRSFLG7.js +0 -185
- package/dist/commands/chunk-4OKRPAUT.js +0 -98
- package/dist/commands/chunk-4PUKDAXL.js +0 -42
- package/dist/commands/chunk-4Q64PG46.js +0 -478
- package/dist/commands/chunk-4UDTQVDD.js +0 -278
- package/dist/commands/chunk-4WR2LEZL.js +0 -123
- package/dist/commands/chunk-4ZJOC6OK.js +0 -298
- package/dist/commands/chunk-4ZQM4I7R.js +0 -533
- package/dist/commands/chunk-54X37JEJ.js +0 -170
- package/dist/commands/chunk-56KW5EOK.js +0 -85
- package/dist/commands/chunk-5CG3XU3O.js +0 -74
- package/dist/commands/chunk-5ESZLHDZ.js +0 -514
- package/dist/commands/chunk-5FBRMARM.js +0 -578
- package/dist/commands/chunk-5RG4S66L.js +0 -47
- package/dist/commands/chunk-5UJGACVN.js +0 -137
- package/dist/commands/chunk-5Y7B7FDL.js +0 -44
- package/dist/commands/chunk-5Z6E5ZUV.js +0 -89
- package/dist/commands/chunk-5ZNUH4LV.js +0 -1722
- package/dist/commands/chunk-5ZTQX7OS.js +0 -125
- package/dist/commands/chunk-66NX6EXR.js +0 -29
- package/dist/commands/chunk-66TGK5XL.js +0 -84
- package/dist/commands/chunk-6CFHLMKM.js +0 -555
- package/dist/commands/chunk-6DDK5XWK.js +0 -74
- package/dist/commands/chunk-6GQX752S.js +0 -145
- package/dist/commands/chunk-6HRRZANN.js +0 -55
- package/dist/commands/chunk-6MAZ55GF.js +0 -1241
- package/dist/commands/chunk-6OP63TBT.js +0 -78
- package/dist/commands/chunk-6Q3XUCLM.js +0 -204
- package/dist/commands/chunk-6RUWU2SB.js +0 -45
- package/dist/commands/chunk-6UCWAFQY.js +0 -245
- package/dist/commands/chunk-6WKJ3GDA.js +0 -408
- package/dist/commands/chunk-6YURRFRU.js +0 -461
- package/dist/commands/chunk-6YVURZAJ.js +0 -350
- package/dist/commands/chunk-6Z4YZG7P.js +0 -169
- package/dist/commands/chunk-77BIN247.js +0 -122
- package/dist/commands/chunk-7ABHNNY3.js +0 -529
- package/dist/commands/chunk-7C7FOKJK.js +0 -115
- package/dist/commands/chunk-7HAGC6SW.js +0 -1062
- package/dist/commands/chunk-7KKUFLH5.js +0 -56
- package/dist/commands/chunk-7LJQMM2K.js +0 -102
- package/dist/commands/chunk-7MJYLUF4.js +0 -99
- package/dist/commands/chunk-7NHZCI5Y.js +0 -704
- package/dist/commands/chunk-7OQ56DVW.js +0 -239
- package/dist/commands/chunk-7VWPGTZO.js +0 -260
- package/dist/commands/chunk-7YZXS3AK.js +0 -30
- package/dist/commands/chunk-A4HOQKOG.js +0 -85
- package/dist/commands/chunk-A6T2N7VC.js +0 -159
- package/dist/commands/chunk-AAUDI7WJ.js +0 -250
- package/dist/commands/chunk-AC26ZUG5.js +0 -259
- package/dist/commands/chunk-ACZ52JPI.js +0 -140
- package/dist/commands/chunk-AJ65WNJB.js +0 -230
- package/dist/commands/chunk-AK7SEO4Y.js +0 -177
- package/dist/commands/chunk-AKK56GNX.js +0 -205
- package/dist/commands/chunk-AKQYYHP2.js +0 -461
- package/dist/commands/chunk-ALDAS2WG.js +0 -137
- package/dist/commands/chunk-ANUTT56I.js +0 -85
- package/dist/commands/chunk-AVVMDVGO.js +0 -68
- package/dist/commands/chunk-B3M5WSGN.js +0 -72
- package/dist/commands/chunk-B7ZNIEDV.js +0 -351
- package/dist/commands/chunk-BCUDQWYK.js +0 -77
- package/dist/commands/chunk-BF6YX4HE.js +0 -70
- package/dist/commands/chunk-BHRS7HAM.js +0 -272
- package/dist/commands/chunk-BIKGPT52.js +0 -29
- package/dist/commands/chunk-BJA5U4Q7.js +0 -75
- package/dist/commands/chunk-BMKWSWWE.js +0 -126
- package/dist/commands/chunk-BMTYUJNT.js +0 -59
- package/dist/commands/chunk-BRHPRDDV.js +0 -127
- package/dist/commands/chunk-BRUBX64M.js +0 -33
- package/dist/commands/chunk-BTZJDHQT.js +0 -46
- package/dist/commands/chunk-BYFC6MD2.js +0 -72
- package/dist/commands/chunk-BYGJ3BCJ.js +0 -803
- package/dist/commands/chunk-C2SEDMZ3.js +0 -238
- package/dist/commands/chunk-C54QXJD6.js +0 -4208
- package/dist/commands/chunk-C6QSVO5K.js +0 -56
- package/dist/commands/chunk-CBAKBWSZ.js +0 -332
- package/dist/commands/chunk-CFHRNTE5.js +0 -326
- package/dist/commands/chunk-CGLLAEKZ.js +0 -110
- package/dist/commands/chunk-CHKYPF5O.js +0 -82
- package/dist/commands/chunk-CJBW6BWG.js +0 -800
- package/dist/commands/chunk-CJKPF5DJ.js +0 -156
- package/dist/commands/chunk-CKUKK7JG.js +0 -252
- package/dist/commands/chunk-CMHGDCGN.js +0 -263
- package/dist/commands/chunk-CNGTHSUS.js +0 -750
- package/dist/commands/chunk-CP2J4RV2.js +0 -3987
- package/dist/commands/chunk-CQZI7RIK.js +0 -72
- package/dist/commands/chunk-CWCKCZS6.js +0 -188
- package/dist/commands/chunk-D5HIP4HT.js +0 -289
- package/dist/commands/chunk-D6D6WQR6.js +0 -125
- package/dist/commands/chunk-D7JRJI44.js +0 -297
- package/dist/commands/chunk-D7OAU32Z.js +0 -119
- package/dist/commands/chunk-DAAX7XDS.js +0 -1208
- package/dist/commands/chunk-DBKTFB5V.js +0 -18
- package/dist/commands/chunk-DEZF7QZZ.js +0 -184
- package/dist/commands/chunk-DMD74E3F.js +0 -39
- package/dist/commands/chunk-DPJVKTO4.js +0 -41
- package/dist/commands/chunk-DXJQHJQ4.js +0 -73
- package/dist/commands/chunk-DYZOOWVW.js +0 -912
- package/dist/commands/chunk-EBI2BAKQ.js +0 -47
- package/dist/commands/chunk-EDKOSZ3K.js +0 -88
- package/dist/commands/chunk-EFDVE5P5.js +0 -121
- package/dist/commands/chunk-EGIHAEMT.js +0 -72
- package/dist/commands/chunk-EKLU6QR7.js +0 -507
- package/dist/commands/chunk-ELY76WAR.js +0 -65
- package/dist/commands/chunk-EM3HAZF6.js +0 -52
- package/dist/commands/chunk-EMTZAGT5.js +0 -51
- package/dist/commands/chunk-ENKFCOVY.js +0 -472
- package/dist/commands/chunk-ERG4QRNG.js +0 -224
- package/dist/commands/chunk-EUGNQCYK.js +0 -139
- package/dist/commands/chunk-EW4NPUMQ.js +0 -363
- package/dist/commands/chunk-EWVR5AEX.js +0 -140
- package/dist/commands/chunk-EXDFKKMH.js +0 -113
- package/dist/commands/chunk-EXWB34R2.js +0 -238
- package/dist/commands/chunk-EYMPBHDN.js +0 -61
- package/dist/commands/chunk-EZ7IPKIH.js +0 -20
- package/dist/commands/chunk-EZSO25UZ.js +0 -80
- package/dist/commands/chunk-F6IQHZYY.js +0 -94
- package/dist/commands/chunk-FDS65XOJ.js +0 -212
- package/dist/commands/chunk-FFHEGWPK.js +0 -91
- package/dist/commands/chunk-FGL6DBZU.js +0 -71
- package/dist/commands/chunk-FHFWNNUC.js +0 -144
- package/dist/commands/chunk-FIUCHMCF.js +0 -32
- package/dist/commands/chunk-FJX7AENO.js +0 -74
- package/dist/commands/chunk-FKZ5E4JD.js +0 -97
- package/dist/commands/chunk-FMZWRDKH.js +0 -302
- package/dist/commands/chunk-FOKCRIAN.js +0 -67
- package/dist/commands/chunk-FQGWO2ZH.js +0 -43
- package/dist/commands/chunk-FROACLVU.js +0 -525
- package/dist/commands/chunk-FURNDIT3.js +0 -34
- package/dist/commands/chunk-FVDQNMP6.js +0 -93
- package/dist/commands/chunk-FVVZIJUC.js +0 -425
- package/dist/commands/chunk-FWU3H4TX.js +0 -17
- package/dist/commands/chunk-G3HBYHFA.js +0 -16
- package/dist/commands/chunk-G4E4M2P4.js +0 -299
- package/dist/commands/chunk-G5KSL2Q2.js +0 -151
- package/dist/commands/chunk-G6XC7V6Y.js +0 -58
- package/dist/commands/chunk-GCPP5XIG.js +0 -90
- package/dist/commands/chunk-GITT5A5A.js +0 -198
- package/dist/commands/chunk-GJYMI2CM.js +0 -48
- package/dist/commands/chunk-GLC47H7I.js +0 -285
- package/dist/commands/chunk-GUR54ELE.js +0 -328
- package/dist/commands/chunk-GW4UWR3O.js +0 -126
- package/dist/commands/chunk-GY4DMCKS.js +0 -306
- package/dist/commands/chunk-H6JQRHDC.js +0 -80
- package/dist/commands/chunk-HATKF6VX.js +0 -173
- package/dist/commands/chunk-HG2NZQD5.js +0 -135
- package/dist/commands/chunk-HH3CVIFU.js +0 -93
- package/dist/commands/chunk-HHMMGDMP.js +0 -469
- package/dist/commands/chunk-HI5WPM6C.js +0 -127
- package/dist/commands/chunk-HQGNXR6I.js +0 -245
- package/dist/commands/chunk-HTIDHEEN.js +0 -108
- package/dist/commands/chunk-HVCQYZVD.js +0 -38
- package/dist/commands/chunk-HWEZRNPL.js +0 -66
- package/dist/commands/chunk-HX3FFIO5.js +0 -74
- package/dist/commands/chunk-HXDTA5VU.js +0 -208
- package/dist/commands/chunk-I2KCGKJI.js +0 -107
- package/dist/commands/chunk-I63RNFFR.js +0 -213
- package/dist/commands/chunk-IAD4WLLI.js +0 -98
- package/dist/commands/chunk-IB5TT73I.js +0 -177
- package/dist/commands/chunk-IBAYXCMU.js +0 -156
- package/dist/commands/chunk-IF3EIFK4.js +0 -7515
- package/dist/commands/chunk-IGDJNXX2.js +0 -49
- package/dist/commands/chunk-ILGPZ47M.js +0 -33
- package/dist/commands/chunk-IYJEBWW5.js +0 -44
- package/dist/commands/chunk-J22PSIXR.js +0 -418
- package/dist/commands/chunk-J66YBAAM.js +0 -161
- package/dist/commands/chunk-J6WKZRV2.js +0 -391
- package/dist/commands/chunk-J7IO3AYH.js +0 -179
- package/dist/commands/chunk-JAKC2BHX.js +0 -88
- package/dist/commands/chunk-JCAQ7B6J.js +0 -124
- package/dist/commands/chunk-JHN6RCE6.js +0 -123
- package/dist/commands/chunk-JIGBNCDR.js +0 -88
- package/dist/commands/chunk-JJHWTFWQ.js +0 -76
- package/dist/commands/chunk-JJRKTWLK.js +0 -64
- package/dist/commands/chunk-JKOGWGQM.js +0 -92
- package/dist/commands/chunk-JM6EVOFN.js +0 -172
- package/dist/commands/chunk-JQXPLMCO.js +0 -81
- package/dist/commands/chunk-JV24VP2O.js +0 -81
- package/dist/commands/chunk-JVKXJ763.js +0 -45
- package/dist/commands/chunk-K275REYP.js +0 -37
- package/dist/commands/chunk-K4G3HOKS.js +0 -105
- package/dist/commands/chunk-K64EIHD2.js +0 -138
- package/dist/commands/chunk-KB3OQWDT.js +0 -71
- package/dist/commands/chunk-KCFOP5RI.js +0 -1310
- package/dist/commands/chunk-KGE4AS2Y.js +0 -134
- package/dist/commands/chunk-KIILCKQR.js +0 -220
- package/dist/commands/chunk-KK2SL42W.js +0 -241
- package/dist/commands/chunk-KKIMVXAP.js +0 -280
- package/dist/commands/chunk-KODXWMBX.js +0 -77
- package/dist/commands/chunk-KPSKWTOS.js +0 -208
- package/dist/commands/chunk-KVHNQHX3.js +0 -100
- package/dist/commands/chunk-KWYQR5MK.js +0 -269
- package/dist/commands/chunk-KXHXMERX.js +0 -214
- package/dist/commands/chunk-KZ5BBBMO.js +0 -271
- package/dist/commands/chunk-KZ7HD37E.js +0 -121
- package/dist/commands/chunk-KZSM5M5P.js +0 -89
- package/dist/commands/chunk-KZZWPUJW.js +0 -25
- package/dist/commands/chunk-L7DAL54N.js +0 -347
- package/dist/commands/chunk-LAR76BFA.js +0 -114
- package/dist/commands/chunk-LB557AHJ.js +0 -192
- package/dist/commands/chunk-LJXKVLYI.js +0 -229
- package/dist/commands/chunk-LOOFYHUM.js +0 -773
- package/dist/commands/chunk-LQXFVZTS.js +0 -13
- package/dist/commands/chunk-LT7QSHR4.js +0 -995
- package/dist/commands/chunk-LUXWDMKI.js +0 -426
- package/dist/commands/chunk-LWAXXZPS.js +0 -118
- package/dist/commands/chunk-LX7TIEMI.js +0 -1612
- package/dist/commands/chunk-LZ5QXE5N.js +0 -244
- package/dist/commands/chunk-M4UV3BEV.js +0 -313
- package/dist/commands/chunk-M6JDU5EK.js +0 -133
- package/dist/commands/chunk-MDLOETXL.js +0 -211
- package/dist/commands/chunk-MFBNNTBM.js +0 -44
- package/dist/commands/chunk-MGF64OHV.js +0 -32
- package/dist/commands/chunk-MI2OS6TL.js +0 -132
- package/dist/commands/chunk-MLW4S35K.js +0 -389
- package/dist/commands/chunk-MN425CU6.js +0 -63
- package/dist/commands/chunk-MPGJ4ONJ.js +0 -634
- package/dist/commands/chunk-MRORPFSO.js +0 -402
- package/dist/commands/chunk-MUGTOJUL.js +0 -319
- package/dist/commands/chunk-MVHPRYHE.js +0 -91
- package/dist/commands/chunk-MWO6FOSZ.js +0 -393
- package/dist/commands/chunk-MXC4IBZ7.js +0 -104
- package/dist/commands/chunk-N7QTMTST.js +0 -210
- package/dist/commands/chunk-NDBX7LSS.js +0 -32
- package/dist/commands/chunk-NEGJ77RV.js +0 -173
- package/dist/commands/chunk-NEGRE5VW.js +0 -101
- package/dist/commands/chunk-NFPD2P3V.js +0 -53
- package/dist/commands/chunk-NHIW7JE6.js +0 -335
- package/dist/commands/chunk-NILSN7A4.js +0 -158
- package/dist/commands/chunk-NOLFSPOB.js +0 -74
- package/dist/commands/chunk-NSAVEXVR.js +0 -353
- package/dist/commands/chunk-NT67QTZO.js +0 -65
- package/dist/commands/chunk-NU7W6QGT.js +0 -155
- package/dist/commands/chunk-NYWGJLBU.js +0 -19
- package/dist/commands/chunk-OAAVY2JK.js +0 -49
- package/dist/commands/chunk-OGS2DK7I.js +0 -47
- package/dist/commands/chunk-OHNP3QL2.js +0 -186
- package/dist/commands/chunk-OIPV3PWW.js +0 -870
- package/dist/commands/chunk-OIX2363L.js +0 -16
- package/dist/commands/chunk-OJ65BZBV.js +0 -646
- package/dist/commands/chunk-OKZWEVR4.js +0 -352
- package/dist/commands/chunk-OL6IF4JC.js +0 -20
- package/dist/commands/chunk-OMPRILFH.js +0 -29
- package/dist/commands/chunk-OOWGH2RG.js +0 -85
- package/dist/commands/chunk-OP2RFVLS.js +0 -102
- package/dist/commands/chunk-ORKVN2LO.js +0 -56
- package/dist/commands/chunk-OSBWXZJ4.js +0 -492
- package/dist/commands/chunk-OT3UMEWK.js +0 -47
- package/dist/commands/chunk-OVWPZDWP.js +0 -64
- package/dist/commands/chunk-OWYK2BEJ.js +0 -1222
- package/dist/commands/chunk-OX3VQLV2.js +0 -488
- package/dist/commands/chunk-OZJP77UM.js +0 -103
- package/dist/commands/chunk-OZZWRJQI.js +0 -246
- package/dist/commands/chunk-P3H3DKTE.js +0 -69
- package/dist/commands/chunk-P4D5RESF.js +0 -88
- package/dist/commands/chunk-P4KIQRSL.js +0 -119
- package/dist/commands/chunk-P5SOYWH2.js +0 -37
- package/dist/commands/chunk-P7FPXAHP.js +0 -29
- package/dist/commands/chunk-PE7B7242.js +0 -84
- package/dist/commands/chunk-PFO7EYAP.js +0 -45
- package/dist/commands/chunk-PHLOTUB7.js +0 -366
- package/dist/commands/chunk-PTNQCCIB.js +0 -41
- package/dist/commands/chunk-PTZEFQUX.js +0 -211
- package/dist/commands/chunk-Q5Q2QYVU.js +0 -112
- package/dist/commands/chunk-Q7EEIOAD.js +0 -120
- package/dist/commands/chunk-QABRNGQV.js +0 -88
- package/dist/commands/chunk-QAHFPCFR.js +0 -50
- package/dist/commands/chunk-QDFVVRQP.js +0 -92
- package/dist/commands/chunk-QGAERR7D.js +0 -99
- package/dist/commands/chunk-QHWJJ6X5.js +0 -53
- package/dist/commands/chunk-QJRVDE7T.js +0 -307
- package/dist/commands/chunk-QMDKDQKW.js +0 -114
- package/dist/commands/chunk-QOSC5RKD.js +0 -18
- package/dist/commands/chunk-QQ4CIYMF.js +0 -132
- package/dist/commands/chunk-QV5FKMOU.js +0 -80
- package/dist/commands/chunk-QWWTC3XR.js +0 -109
- package/dist/commands/chunk-QXQ56E56.js +0 -27
- package/dist/commands/chunk-R54Z2Z3X.js +0 -114
- package/dist/commands/chunk-R6QE5VJG.js +0 -46
- package/dist/commands/chunk-RG53UFNW.js +0 -418
- package/dist/commands/chunk-RGGEQM6G.js +0 -140
- package/dist/commands/chunk-RH6ZWJOA.js +0 -77
- package/dist/commands/chunk-RHKCWJQX.js +0 -62
- package/dist/commands/chunk-RKIAX4DZ.js +0 -191
- package/dist/commands/chunk-RLBFEHHC.js +0 -300
- package/dist/commands/chunk-RN2YDNLF.js +0 -229
- package/dist/commands/chunk-RRAIRS2T.js +0 -54
- package/dist/commands/chunk-RS764ZMU.js +0 -46
- package/dist/commands/chunk-RUIBQMOV.js +0 -38
- package/dist/commands/chunk-RUQY5TS3.js +0 -83
- package/dist/commands/chunk-RVUJ6F5L.js +0 -181
- package/dist/commands/chunk-RW64VHEB.js +0 -130
- package/dist/commands/chunk-RXYMJPJB.js +0 -114
- package/dist/commands/chunk-S4M6UWR2.js +0 -103
- package/dist/commands/chunk-SASX3W2M.js +0 -99
- package/dist/commands/chunk-SFNBUB6D.js +0 -110
- package/dist/commands/chunk-SJ2ZN575.js +0 -90
- package/dist/commands/chunk-SP7DKYGU.js +0 -1263
- package/dist/commands/chunk-SSL6A3Y4.js +0 -165
- package/dist/commands/chunk-SVAKCXZ7.js +0 -44
- package/dist/commands/chunk-SYOXIKB7.js +0 -705
- package/dist/commands/chunk-SZG5HDNP.js +0 -321
- package/dist/commands/chunk-T25S4QHL.js +0 -52
- package/dist/commands/chunk-T4F33UKZ.js +0 -114
- package/dist/commands/chunk-T4UYEHWG.js +0 -50
- package/dist/commands/chunk-TAEGXID2.js +0 -58
- package/dist/commands/chunk-TCBUX52E.js +0 -701
- package/dist/commands/chunk-TEPYEUYG.js +0 -585
- package/dist/commands/chunk-TFLHYC2F.js +0 -141
- package/dist/commands/chunk-TJKM56WJ.js +0 -109
- package/dist/commands/chunk-TLAB552K.js +0 -445
- package/dist/commands/chunk-TP6L4W3W.js +0 -82
- package/dist/commands/chunk-TR7WWYD5.js +0 -60
- package/dist/commands/chunk-TVZXG4Y4.js +0 -197
- package/dist/commands/chunk-TYNH2R66.js +0 -1150
- package/dist/commands/chunk-U3IVVR4W.js +0 -33
- package/dist/commands/chunk-U5P6G3UV.js +0 -77
- package/dist/commands/chunk-U7XU5RG3.js +0 -86
- package/dist/commands/chunk-UKBBWMLE.js +0 -1189
- package/dist/commands/chunk-ULVVGGTY.js +0 -64
- package/dist/commands/chunk-UNMSZGSG.js +0 -269
- package/dist/commands/chunk-URDT2O2K.js +0 -36
- package/dist/commands/chunk-UTHUX7VU.js +0 -88
- package/dist/commands/chunk-V4Z7G4UH.js +0 -73
- package/dist/commands/chunk-V5FD7DVV.js +0 -48
- package/dist/commands/chunk-VCPGFBMN.js +0 -655
- package/dist/commands/chunk-VGPIQNDB.js +0 -24
- package/dist/commands/chunk-VJE3RJAX.js +0 -23
- package/dist/commands/chunk-VK6D5CWA.js +0 -161
- package/dist/commands/chunk-VOF3N4WO.js +0 -114
- package/dist/commands/chunk-VQVPAVQ3.js +0 -45
- package/dist/commands/chunk-VV4TQYGD.js +0 -38
- package/dist/commands/chunk-W3FX7FYN.js +0 -84
- package/dist/commands/chunk-W7DRUOF7.js +0 -122
- package/dist/commands/chunk-WAEN2RTT.js +0 -161
- package/dist/commands/chunk-WCEUMOKK.js +0 -84
- package/dist/commands/chunk-WJ4NEDNI.js +0 -288
- package/dist/commands/chunk-WMMGXJXP.js +0 -92
- package/dist/commands/chunk-WOFLW2LX.js +0 -26
- package/dist/commands/chunk-WTH6NTXU.js +0 -128
- package/dist/commands/chunk-WWVYEHQT.js +0 -272
- package/dist/commands/chunk-X3TNPALI.js +0 -213
- package/dist/commands/chunk-XC6GG5JR.js +0 -78
- package/dist/commands/chunk-XDF25GSU.js +0 -536
- package/dist/commands/chunk-XFPEUYDV.js +0 -67
- package/dist/commands/chunk-XFWI6WHH.js +0 -60
- package/dist/commands/chunk-XGMRAKSL.js +0 -85
- package/dist/commands/chunk-XHGWMD3L.js +0 -104
- package/dist/commands/chunk-XKSUBUIH.js +0 -116
- package/dist/commands/chunk-XPBF5DG3.js +0 -419
- package/dist/commands/chunk-XUMYPESL.js +0 -160
- package/dist/commands/chunk-XXC32PVL.js +0 -541
- package/dist/commands/chunk-XXN2EZBY.js +0 -133
- package/dist/commands/chunk-XXNEY4B3.js +0 -110
- package/dist/commands/chunk-Y27PTXXI.js +0 -258
- package/dist/commands/chunk-Y4EBUI6M.js +0 -237
- package/dist/commands/chunk-YAU3LYNF.js +0 -60
- package/dist/commands/chunk-YDURQICF.js +0 -204
- package/dist/commands/chunk-YGFOGA7C.js +0 -1153
- package/dist/commands/chunk-YHJ2AJMA.js +0 -66
- package/dist/commands/chunk-YIA6FC3K.js +0 -78
- package/dist/commands/chunk-YM77CF4D.js +0 -183
- package/dist/commands/chunk-YNPRJCEO.js +0 -81
- package/dist/commands/chunk-YTBQAD5W.js +0 -170
- package/dist/commands/chunk-YVH2OLDS.js +0 -104
- package/dist/commands/chunk-Z3WGHIVB.js +0 -122
- package/dist/commands/chunk-ZAAHZY2A.js +0 -19
- package/dist/commands/chunk-ZBZ5DDCH.js +0 -1866
- package/dist/commands/chunk-ZLRUHSOP.js +0 -48
- package/dist/commands/chunk-ZNR75OXP.js +0 -444
- package/dist/commands/chunk-ZSOR4ISJ.js +0 -75
- package/dist/commands/chunk-ZVAIIHBE.js +0 -63
- package/dist/commands/chunk-ZYFHYQA7.js +0 -51
- package/dist/commands/chunk-ZZFFSQF4.js +0 -218
- package/dist/commands/chunk-ZZULXNC2.js +0 -47
- package/dist/commands/chunk-ZZXO6TFH.js +0 -232
- package/dist/commands/run-ship-lap-W5T2VHFC.js +0 -30
- package/dist/commands/test-related-ZCNC46MS.js +0 -113
- package/dist/commands/unused-members-STULPRBU.js +0 -331
- package/dist/hooks/chunk-5CUXGQT6.js +0 -8353
- package/dist/hooks/chunk-5R5YFQR5.js +0 -931
- package/dist/hooks/chunk-6RLY27FT.js +0 -232
- package/dist/hooks/chunk-6YGMIODI.js +0 -86
- package/dist/hooks/chunk-AO4TOV4V.js +0 -5026
- package/dist/hooks/chunk-FOW4B7OQ.js +0 -1795
- package/dist/hooks/chunk-G5WSPYJ6.js +0 -5663
- package/dist/hooks/chunk-HHIVWGHX.js +0 -6869
- package/dist/hooks/chunk-IURJANNZ.js +0 -1082
- package/dist/hooks/chunk-OV22V63P.js +0 -10980
- package/dist/hooks/chunk-SXABK6UV.js +0 -321
- package/dist/hooks/run-ship-lap-VCEOUHQI.js +0 -8
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.
|
|
2
|
+
"version": "1.3092.0",
|
|
3
3
|
"name": "@joshuafolkken/kit",
|
|
4
4
|
"description": "Hand-off kit for Claude Code and Codex: backlogrun takes your GitHub Issues to tested, reviewed, merged PRs — in parallel and unattended — with the rules, hooks and checks that keep the agent on track",
|
|
5
5
|
"keywords": [
|
|
@@ -66,6 +66,9 @@
|
|
|
66
66
|
"tsconfig.sonar.json",
|
|
67
67
|
"playwright.config.ts",
|
|
68
68
|
"!**/*.test.ts",
|
|
69
|
+
"scripts/gate/change-scope-action.integration.test.ts",
|
|
70
|
+
"scripts/gate/path-glob.test.ts",
|
|
71
|
+
"scripts/gate/toolchain-inputs.consumer.test.ts",
|
|
69
72
|
"!**/*.spec.ts",
|
|
70
73
|
"!**/*-fixture*.ts",
|
|
71
74
|
"!**/__snapshots__",
|
|
@@ -66,6 +66,9 @@ docs・prompts・skills・拒否文・Issue・PR の文章に適用する。
|
|
|
66
66
|
ユーザーへの回答に適用する。
|
|
67
67
|
|
|
68
68
|
- 順序: 結論(1〜2 文)→ 表か箇条書き 1 つ → 次の一手
|
|
69
|
+
- 質問への回答は事実だけで終えず、ユーザーの次の行動を必ず添える。推奨は一つに絞り、必要ならそのまま使えるコマンドや依頼文を示す
|
|
70
|
+
- 待つのが妥当なら「操作不要」と待つ条件・再確認する条件を示す。未確認事項には確認方法を添え、「断定できません」だけで終えない
|
|
71
|
+
- 既に権限がある作業は自律実行し、結果と残る次の一手を示す。不要な再確認やユーザーへの作業の押し戻しを増やさず、実装の引き渡しは本書の「consult-vs-execute」に従う
|
|
69
72
|
- 散文(コードブロック・表・箇条書きの外)の上限は `scripts/rules/concise-reply.ts` の `PROSE_LIMIT`。超えた回答は Stop フックの `pnpm josh stop:guard` が書き直させる
|
|
70
73
|
- 仕組みの説明や同じ内容の言い換えを並べない。詳細はファイルや Issue に書く
|
|
71
74
|
- 対象外: 直前の発話に「詳しく」「具体的に」「詳細」がある回答、`pnpm josh run:board --chat` のような固定出力をコードブロックで返す回答、ファイルや Issue に書く成果物
|
|
@@ -77,7 +80,7 @@ docs・prompts・skills・拒否文・Issue・PR の文章に適用する。
|
|
|
77
80
|
- **相談の主セッションは相談・起票・運用を担当する。実装は実装レーンが担当し、主セッション自身で実装を開始しない。** 「起票して」は起票を実行し、「対応してください」は合意した起票・Issue 更新・レーン操作として処理する。実装が必要なら Issue に範囲と計画を残し、既存の実装レーンへ引き渡す
|
|
78
81
|
- 明示されたワークフローキーワード(`kickoff` / `halfrun` / `prrun` / `fullrun` / `backlogrun`)は `workflow-commands` skill の既存手順へ渡す。主セッションが実装する根拠には読み替えない。`kickoff` は起票・計画で停止し、実装系の実行は実装レーンへ引き渡す
|
|
79
82
|
- 判別できないときは相談として扱う。承認済みの起票・Issue 更新・レーン操作と、実装レーン内の Tier A 判断は再確認せず進める。実行が指示された後の判断点は `CLAUDE.md` → "Decision autonomy" の Tier で決まる
|
|
80
|
-
- 相談スコープのシェルは、取り消せない操作(git・GitHub・依存・共有状態への書き込み)と runtime ファイルへの見える書き込みだけを実行前に拒否し、それ以外の呼び出しが変えた runtime
|
|
83
|
+
- 相談スコープのシェルは、取り消せない操作(git・GitHub・依存・共有状態への書き込み)と runtime ファイルへの見える書き込みだけを実行前に拒否し、それ以外の呼び出しが変えた runtime ファイルは、コマンドがそのパスを名指すときだけ実行後に戻し、名指さないものは別セッションの編集かもしれないので名前だけ報告する(`scripts/hooks/bash-revert.ts`)。拒否は `scripts/hooks/implementation-shell.ts` が強制する
|
|
81
84
|
|
|
82
85
|
## latest-first — 最新優先・fix-forward(pin-back は最終手段)
|
|
83
86
|
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
**引き金はシェルのコマンド文字列しか見えない**ので、node 内の REST のように引き金が掛からない経路を持つ規則は、常駐側にトリガ 1 行を残す。各項目の発火しない状態は「規則が守られている状態」と一致させ、一致が取れない規則は常駐に残す。
|
|
14
14
|
|
|
15
|
-
- 相談スコープのシェルが拒否される → `scripts/hooks/implementation-shell.ts`(拒否リストは `implementation-shell-deny.ts`)。それ以外の runtime
|
|
15
|
+
- 相談スコープのシェルが拒否される → `scripts/hooks/implementation-shell.ts`(拒否リストは `implementation-shell-deny.ts`)。それ以外の runtime 書き込みは、コマンドが名指すものを `scripts/hooks/bash-revert.ts` が戻す。
|
|
16
16
|
|
|
17
17
|
## stop-notify — 途中停止の通知(`confirmation`)
|
|
18
18
|
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { lane_child_marker } from '#scripts/lane/lane-child-marker'
|
|
2
|
+
import { lane_paths } from '#scripts/lane/lane-paths'
|
|
3
|
+
import { run_carry_session } from '#scripts/run/carry/run-carry-session'
|
|
4
|
+
import type { LaunchRequest } from '#scripts/run/detached-launch'
|
|
5
|
+
import { run_headless_keys } from '#scripts/run/run-headless-keys'
|
|
6
|
+
import { agent_profile_schema } from './agent-profile-schema'
|
|
7
|
+
|
|
8
|
+
const CONFIG_FLAG = '-c'
|
|
9
|
+
const SHELL_SET = 'shell_environment_policy.set.'
|
|
10
|
+
|
|
11
|
+
function identity_environment(request: LaunchRequest): Record<string, string | undefined> {
|
|
12
|
+
return {
|
|
13
|
+
[lane_paths.LANE_ROOT_KEY]: process.env[lane_paths.LANE_ROOT_KEY],
|
|
14
|
+
...request.env,
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function identity_arguments(request: LaunchRequest): ReadonlyArray<string> {
|
|
19
|
+
const source = identity_environment(request)
|
|
20
|
+
if (!lane_child_marker.is_child_of(request.cwd, source)) return []
|
|
21
|
+
|
|
22
|
+
return [lane_child_marker.KEY, lane_paths.LANE_ROOT_KEY].flatMap((key) =>
|
|
23
|
+
source[key] === undefined
|
|
24
|
+
? []
|
|
25
|
+
: [CONFIG_FLAG, `${SHELL_SET}${key}=${JSON.stringify(source[key])}`],
|
|
26
|
+
)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function is_codex_worker(request: LaunchRequest): boolean {
|
|
30
|
+
const { argv, profile } = request
|
|
31
|
+
|
|
32
|
+
return (
|
|
33
|
+
profile?.provider === 'openai' &&
|
|
34
|
+
profile.role === agent_profile_schema.WORKER &&
|
|
35
|
+
argv.command === 'codex' &&
|
|
36
|
+
argv.ends_with_prompt === true
|
|
37
|
+
)
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function scheduler_arguments(request: LaunchRequest): ReadonlyArray<string> {
|
|
41
|
+
if (request.profile?.role !== agent_profile_schema.SCHEDULER) return []
|
|
42
|
+
const keys = [run_carry_session.KEY, ...run_headless_keys.MARK_KEYS]
|
|
43
|
+
|
|
44
|
+
return keys.flatMap((key) =>
|
|
45
|
+
request.env?.[key] === undefined
|
|
46
|
+
? []
|
|
47
|
+
: [CONFIG_FLAG, `${SHELL_SET}${key}=${JSON.stringify(request.env[key])}`],
|
|
48
|
+
)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Only the launcher's explicit mark grants identity; a checkout path or inherited mark cannot.
|
|
52
|
+
function is_codex(request: LaunchRequest): boolean {
|
|
53
|
+
return request.profile?.provider === 'openai' && request.argv.command === 'codex'
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function arguments_for(request: LaunchRequest): ReadonlyArray<string> {
|
|
57
|
+
const { argv } = request
|
|
58
|
+
|
|
59
|
+
if (!is_codex(request) || argv.ends_with_prompt !== true) return argv.args
|
|
60
|
+
|
|
61
|
+
const identity = is_codex_worker(request)
|
|
62
|
+
? identity_arguments(request)
|
|
63
|
+
: scheduler_arguments(request)
|
|
64
|
+
|
|
65
|
+
return [...argv.args.slice(0, -1), ...identity, ...argv.args.slice(-1)]
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const codex_launch_identity = { arguments_for }
|
|
69
|
+
|
|
70
|
+
export { codex_launch_identity }
|
|
@@ -10,6 +10,7 @@ import { read_json_listing } from '#scripts/git/parse-json-array'
|
|
|
10
10
|
import { git_next_issues } from '#scripts/issue/git-next-issues'
|
|
11
11
|
import { AUTO_OK_LABEL } from '#scripts/issue/issue-labels'
|
|
12
12
|
import { issue_not_before } from '#scripts/issue/issue-not-before'
|
|
13
|
+
import { issue_publication_state } from '#scripts/issue/issue-publication-state'
|
|
13
14
|
import { issue_sample_prime } from '#scripts/issue/issue-sample-prime'
|
|
14
15
|
import { session_cite } from '#scripts/issue/session-cite'
|
|
15
16
|
|
|
@@ -344,6 +345,7 @@ interface RunnableOptions {
|
|
|
344
345
|
|
|
345
346
|
function is_ready(issue: OpenIssueData, options: RunnableOptions): boolean {
|
|
346
347
|
return (
|
|
348
|
+
!issue_publication_state.is_pending(issue.body) &&
|
|
347
349
|
auto_ok_author.is_author_trusted(issue) &&
|
|
348
350
|
is_unblocked(issue) &&
|
|
349
351
|
issue_not_before.is_due(issue.body, options.now ?? Date.now())
|
|
@@ -3,6 +3,7 @@ import { issue_label_schema } from '#scripts/git/git-schemas'
|
|
|
3
3
|
import { parse_json_object_or_undefined } from '#scripts/git/parse-json-array'
|
|
4
4
|
import { issue_auto_ok, type AutoOkDecision } from '#scripts/issue/issue-auto-ok'
|
|
5
5
|
import { AUTO_OK_LABEL, has_label_name } from '#scripts/issue/issue-labels'
|
|
6
|
+
import { issue_publication_state } from '#scripts/issue/issue-publication-state'
|
|
6
7
|
import { issue_run_verdict, type RunLabelFlags } from '#scripts/issue/issue-run-verdict'
|
|
7
8
|
import { session_cite } from '#scripts/issue/session-cite'
|
|
8
9
|
import { z } from 'zod'
|
|
@@ -116,6 +117,7 @@ async function apply(
|
|
|
116
117
|
const read = await read_issue(issue)
|
|
117
118
|
|
|
118
119
|
if (read === undefined) return refused(issue, UNREADABLE)
|
|
120
|
+
if (issue_publication_state.is_pending(read.body)) return refused(issue, 'publication is pending')
|
|
119
121
|
|
|
120
122
|
const settled = settled_of(read)
|
|
121
123
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { createHash } from 'node:crypto'
|
|
2
2
|
import { issue_auto_ok, type AutoOkDecision } from '#scripts/issue/issue-auto-ok'
|
|
3
3
|
import { AUTO_OK_LABEL, has_label_name } from '#scripts/issue/issue-labels'
|
|
4
|
+
import { issue_publication_state } from '#scripts/issue/issue-publication-state'
|
|
4
5
|
import type { WatchComment } from '#scripts/issue/issue-watch-diff'
|
|
5
6
|
|
|
6
7
|
// The pure half of `josh auto-ok:judge`: which open issues `backlogrun` judges for `auto-ok` when a lane
|
|
@@ -36,7 +37,8 @@ const CRLF = '\r\n'
|
|
|
36
37
|
const LF = '\n'
|
|
37
38
|
|
|
38
39
|
function is_candidate(issue: JudgeIssue): boolean {
|
|
39
|
-
|
|
40
|
+
const is_excluded = issue_publication_state.is_pending(issue.body) || !issue.is_trusted
|
|
41
|
+
if (is_excluded || has_label_name(issue.labels, AUTO_OK_LABEL)) return false
|
|
40
42
|
|
|
41
43
|
return issue_auto_ok.exclusion_of(issue.labels) === undefined
|
|
42
44
|
}
|
|
@@ -25,7 +25,7 @@ import { backlog_stalled_detect } from './backlog-stalled-detect'
|
|
|
25
25
|
//
|
|
26
26
|
// **The `auto-ok` listing gates the read** (joshuafolkken/kit#7229): each probe first asks the listing
|
|
27
27
|
// check `backlog:drive` asks (`backlog_drive_listing.watcher`), whose 304 spends no REST core, and reads
|
|
28
|
-
// the backlog only once the listing holds a new issue — so the probe shares that check's ten-second
|
|
28
|
+
// the backlog only once the listing holds a new or relabelled issue — so the probe shares that check's ten-second
|
|
29
29
|
// interval. A raised lane limit changes no listing, so it reads regardless, and a listing change whose
|
|
30
30
|
// reading failed is read again at the next probe.
|
|
31
31
|
//
|
|
@@ -35,7 +35,9 @@ const DEFAULT_IDLE_MS = DEFAULT_IDLE_MINUTES * MS_PER_MINUTE
|
|
|
35
35
|
// once, without waiting it out. `backlogrun-progress.md` → "Waiting, and never waiting forever" holds
|
|
36
36
|
// the row; the figure is here because `idle_watch_reason` below has to say it. Three minutes keeps the
|
|
37
37
|
// asks within the REST core budget while lanes run (joshuafolkken/kit#6718); the wake supervisor's
|
|
38
|
-
// pause is its own (`run-wake-window.ts`).
|
|
38
|
+
// pause is its own (`run-wake-window.ts`). **It is no dispatch path, so the dispatch bound does not
|
|
39
|
+
// shorten it** (joshuafolkken/kit#7507): with no seat free nothing can start before a child is
|
|
40
|
+
// collected, which asks at once, and with one free the listing check below holds the bound.
|
|
39
41
|
const OFFER_INTERVAL_SECONDS = 180
|
|
40
42
|
const OFFER_INTERVAL_MS = OFFER_INTERVAL_SECONDS * MS_PER_SECOND
|
|
41
43
|
|
|
@@ -50,7 +52,8 @@ const IDLE_OFFER_INTERVAL_MS = IDLE_OFFER_INTERVAL_SECONDS * MS_PER_SECOND
|
|
|
50
52
|
// **How often a free seat checks the `auto-ok` listing between two asks** (joshuafolkken/kit#7227).
|
|
51
53
|
// The check reads the listing's first page by its ETag, and a 304 spends no REST core, so the floor is
|
|
52
54
|
// the drive's own poll (`backlog-drive-cli.ts` → `POLL_MS`); a changed listing asks at once, an unchanged one waits out the intervals
|
|
53
|
-
// above.
|
|
55
|
+
// above. It stays within what the dispatch bound leaves to notice a change
|
|
56
|
+
// (`backlog-dispatch-bound.ts` → `NOTICE_MS`).
|
|
54
57
|
const LISTING_CHECK_INTERVAL_SECONDS = 10
|
|
55
58
|
const LISTING_CHECK_INTERVAL_MS = LISTING_CHECK_INTERVAL_SECONDS * MS_PER_SECOND
|
|
56
59
|
|
|
@@ -20,7 +20,7 @@ function above_message(measured: DefectRate): string {
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
function should_defer_mechanisms(measured: DefectRate | undefined): boolean {
|
|
23
|
-
if (measured === undefined) {
|
|
23
|
+
if (measured === undefined || measured.is_capped) {
|
|
24
24
|
console.error(UNMEASURED_MESSAGE)
|
|
25
25
|
|
|
26
26
|
return false
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { MS_PER_SECOND } from '#scripts/lib/timeouts'
|
|
2
|
+
|
|
3
|
+
// **The one bound on how long an issue ready to start waits for its `child-launch`**
|
|
4
|
+
// (joshuafolkken/kit#7507): counted from when it became ready, or from when a seat freed if none was free. The driver's and
|
|
5
|
+
// the supervisor's waits are derived from it rather than given figures of their own, so no interval can
|
|
6
|
+
// outgrow it alone. Kept free of the driver's imports, so the supervisor's window reads it cheaply.
|
|
7
|
+
const DISPATCH_BOUND_SECONDS = 60
|
|
8
|
+
const DISPATCH_BOUND_MS = DISPATCH_BOUND_SECONDS * MS_PER_SECOND
|
|
9
|
+
|
|
10
|
+
// A fresh driver's start up to its first dispatch, as measured in joshuafolkken/kit#7507, rounded up.
|
|
11
|
+
const DRIVER_START_SECONDS = 25
|
|
12
|
+
const DRIVER_START_MS = DRIVER_START_SECONDS * MS_PER_SECOND
|
|
13
|
+
|
|
14
|
+
// What is left of the bound to notice a change, where a fresh driver may still have to start after it.
|
|
15
|
+
const NOTICE_MS = DISPATCH_BOUND_MS - DRIVER_START_MS
|
|
16
|
+
|
|
17
|
+
export const backlog_dispatch_bound = { DISPATCH_BOUND_MS, DRIVER_START_MS, NOTICE_MS }
|
|
@@ -1,11 +1,26 @@
|
|
|
1
|
+
import { git_common_directory } from '#scripts/git/git-common-directory'
|
|
1
2
|
import { josh_command } from '#scripts/josh/josh-run'
|
|
2
3
|
import { lane_registry } from '#scripts/lane/lane-registry'
|
|
3
4
|
import { error_text } from '#scripts/lib/error-message'
|
|
5
|
+
import { MS_PER_SECOND } from '#scripts/lib/timeouts'
|
|
6
|
+
import { detached_launch, type LaunchArgv } from '#scripts/run/detached-launch'
|
|
7
|
+
import { backlogrun_launch } from './backlogrun-launch'
|
|
4
8
|
|
|
5
9
|
const FAILURE_PREFIX = 'observations:flush skipped: '
|
|
10
|
+
const DURATION_PREFIX = 'observations:flush finished in '
|
|
6
11
|
const FLUSH_COMMAND = 'observations:flush'
|
|
12
|
+
// The `backlog:offer` flag that runs `flush` alone — the body `start` launches detached. `as const`
|
|
13
|
+
// keeps the key a literal inside `backlog:offer`'s option table.
|
|
14
|
+
const OPTION = 'drain-flush' as const
|
|
15
|
+
const FLUSH_ARGV: LaunchArgv = { command: 'pnpm', args: ['josh', 'backlog:offer', `--${OPTION}`] }
|
|
16
|
+
|
|
17
|
+
function report_failure(reason: string): void {
|
|
18
|
+
console.error(`${FAILURE_PREFIX}${reason.replaceAll(/\s+/gu, ' ')}`)
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
async function flush(now: () => number = Date.now): Promise<void> {
|
|
22
|
+
const started_ms = now()
|
|
7
23
|
|
|
8
|
-
async function flush(): Promise<void> {
|
|
9
24
|
try {
|
|
10
25
|
const root = await lane_registry.main_repository_root()
|
|
11
26
|
|
|
@@ -15,8 +30,28 @@ async function flush(): Promise<void> {
|
|
|
15
30
|
FLUSH_COMMAND,
|
|
16
31
|
)
|
|
17
32
|
} catch (error) {
|
|
18
|
-
|
|
33
|
+
report_failure(error_text.message_of(error))
|
|
19
34
|
}
|
|
35
|
+
|
|
36
|
+
console.error(`${DURATION_PREFIX}${String((now() - started_ms) / MS_PER_SECOND)}s`)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function log_path_of(cwd: string): string | undefined {
|
|
40
|
+
const common = git_common_directory.repository(cwd)
|
|
41
|
+
|
|
42
|
+
return common === undefined ? undefined : backlogrun_launch.log_path(common)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// The flush pushes through the full pre-push suite, minutes the driver must keep offering through
|
|
46
|
+
// (joshuafolkken/kit#7505). Detached in its own process group, it also outlives a driver that ends or a
|
|
47
|
+
// run `backlogrun` replaces meanwhile, so the ledger is still published; its lines go to the run's log.
|
|
48
|
+
function start(cwd: string = process.cwd()): void {
|
|
49
|
+
const launched = detached_launch.launch(
|
|
50
|
+
{ argv: FLUSH_ARGV, cwd, log_path: log_path_of(cwd) },
|
|
51
|
+
report_failure,
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
if (launched.kind === 'failed') report_failure(launched.note)
|
|
20
55
|
}
|
|
21
56
|
|
|
22
|
-
export const backlog_drain_flush = { flush }
|
|
57
|
+
export const backlog_drain_flush = { OPTION, flush, start }
|
|
@@ -239,7 +239,7 @@ function ports_of(
|
|
|
239
239
|
return {
|
|
240
240
|
...child_ports(seeded, context.owner, tick.is_running),
|
|
241
241
|
begin_tick: tick.begin_tick,
|
|
242
|
-
offer: async (state) => await offer_for(state, context),
|
|
242
|
+
offer: holds.answering(async (state) => await offer_for(state, context)),
|
|
243
243
|
launch: async (issue) => await backlog_drive_launch.launch(issue, context.owner),
|
|
244
244
|
...room_ports(),
|
|
245
245
|
judgement_owed: judgement_reader(),
|
|
@@ -20,14 +20,19 @@ import { backlog_ready } from './backlog-ready'
|
|
|
20
20
|
// leaves `lane-hand-back-hold.ts`'s mark beside it; the finished run's is written every time.
|
|
21
21
|
|
|
22
22
|
const NO_FREE_LANES = 0
|
|
23
|
-
const { OFFER_PREFIX, HAND_BACK_PREFIX, REASON_SEPARATOR } =
|
|
23
|
+
const { DRAINED_REASON, OFFER_PREFIX, HAND_BACK_PREFIX, REASON_SEPARATOR, WATCH_VERDICT } =
|
|
24
|
+
backlog_hold_codes
|
|
24
25
|
// The verdict that starts nothing more: the run is finishing, so the lanes it frees are no hold.
|
|
25
26
|
const STOP_VERDICT = 'stop'
|
|
26
27
|
// The ends that finished the run: nothing is owed a lane after them.
|
|
27
28
|
const FINISHED_REASONS: ReadonlySet<string> = new Set([STOP_VERDICT, 'watch', 'retrospective'])
|
|
29
|
+
const WINDOW_REASON = 'window'
|
|
28
30
|
|
|
29
31
|
interface HoldRecorder {
|
|
30
32
|
hold: DrivePorts['hold']
|
|
33
|
+
// The offer port, its every answer kept — `undefined` for a failed read — so the end reads the
|
|
34
|
+
// latest verdict (joshuafolkken/kit#7510).
|
|
35
|
+
answering: (offer: DrivePorts['offer']) => DrivePorts['offer']
|
|
31
36
|
end: (end: DriveEnd) => Promise<void>
|
|
32
37
|
}
|
|
33
38
|
|
|
@@ -41,9 +46,11 @@ interface HeldDraft extends HeldWaiting {
|
|
|
41
46
|
reason: string | undefined
|
|
42
47
|
}
|
|
43
48
|
|
|
44
|
-
// Whether a hold may still be open — at a driver's start, one an earlier driver's hand-back left
|
|
49
|
+
// Whether a hold may still be open — at a driver's start, one an earlier driver's hand-back left — and
|
|
50
|
+
// the latest offer verdict this driver read.
|
|
45
51
|
interface HoldLedger {
|
|
46
52
|
is_open: boolean
|
|
53
|
+
last_verdict?: string | undefined
|
|
47
54
|
}
|
|
48
55
|
|
|
49
56
|
// The reason an offer that started nothing holds a free lane, or `undefined` for the run's stop. The
|
|
@@ -81,11 +88,20 @@ async function stopped(
|
|
|
81
88
|
if (after.is_stopping && !before.is_stopping) await ports.hold(undefined)
|
|
82
89
|
}
|
|
83
90
|
|
|
91
|
+
// A window that closed while the latest offer found nothing to start is the backlog's drain, not the
|
|
92
|
+
// window's: the drain wins, so the seat names it (joshuafolkken/kit#7510).
|
|
93
|
+
function end_cause(end: DriveEnd, last_verdict: string | undefined): string {
|
|
94
|
+
const is_drained = last_verdict === WATCH_VERDICT && end.reason === WINDOW_REASON
|
|
95
|
+
|
|
96
|
+
return is_drained ? DRAINED_REASON : end.reason
|
|
97
|
+
}
|
|
98
|
+
|
|
84
99
|
// The reason a driver's end leaves the lanes waiting on a session, or `undefined` for the finished run.
|
|
85
|
-
|
|
100
|
+
// `last_verdict` is the latest offer verdict the driver read before it ended.
|
|
101
|
+
function hand_back_reason(end: DriveEnd, last_verdict?: string): string | undefined {
|
|
86
102
|
if (FINISHED_REASONS.has(end.reason)) return undefined
|
|
87
103
|
|
|
88
|
-
return [HAND_BACK_PREFIX, end
|
|
104
|
+
return [HAND_BACK_PREFIX, end_cause(end, last_verdict)].join(REASON_SEPARATOR)
|
|
89
105
|
}
|
|
90
106
|
|
|
91
107
|
// The free count, or `undefined` where the lane limit is unreadable: no hold is known then. The
|
|
@@ -172,8 +188,15 @@ function recorder(
|
|
|
172
188
|
|
|
173
189
|
return {
|
|
174
190
|
hold: write,
|
|
191
|
+
answering: (offer) => async (state) => {
|
|
192
|
+
const read = await offer(state)
|
|
193
|
+
|
|
194
|
+
ledger.last_verdict = read?.verdict
|
|
195
|
+
|
|
196
|
+
return read
|
|
197
|
+
},
|
|
175
198
|
end: async (end) => {
|
|
176
|
-
const reason = hand_back_reason(end)
|
|
199
|
+
const reason = hand_back_reason(end, ledger.last_verdict)
|
|
177
200
|
|
|
178
201
|
await hand_back(ledger, reason, await free_count(free_lanes, reason))
|
|
179
202
|
},
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { git_stash } from '#scripts/git/stash/git-stash'
|
|
2
2
|
import { lane_launch_cli, type LaunchOutcome } from '#scripts/lane/lane-launch-cli'
|
|
3
3
|
import { run_event_setup } from '#scripts/run/event/run-event-setup'
|
|
4
|
+
import { run_startup } from '#scripts/run/startup/run-startup'
|
|
4
5
|
import { backlog_drive_launch_pass, type DriveLaunch } from './backlog-drive-launch-pass'
|
|
5
6
|
import { backlog_drive_owner } from './backlog-drive-owner'
|
|
6
7
|
import { backlog_drive_split_unit } from './backlog-drive-split-unit'
|
|
@@ -79,17 +80,7 @@ async function measured(issue: string): Promise<DriveLaunch | undefined> {
|
|
|
79
80
|
return outcome === 'wait' ? UNSAMPLED_LAUNCH : undefined
|
|
80
81
|
}
|
|
81
82
|
|
|
82
|
-
|
|
83
|
-
// (`backlog-drive-split-unit.ts`). The unit runs for minutes, so ownership is asserted again after it:
|
|
84
|
-
// a driver superseded meanwhile opens no lane.
|
|
85
|
-
async function opened(issue: string, owner: string): Promise<DriveLaunch> {
|
|
86
|
-
await backlog_drive_owner.assert_current(owner)
|
|
87
|
-
|
|
88
|
-
const settled = await measured(issue)
|
|
89
|
-
|
|
90
|
-
if (settled !== undefined) return settled
|
|
91
|
-
if ((await backlog_drive_split_unit.run(issue)) === 'split') return SPLIT_LAUNCH
|
|
92
|
-
await backlog_drive_owner.assert_current(owner)
|
|
83
|
+
async function launch_and_report(issue: string): Promise<DriveLaunch> {
|
|
93
84
|
await run_event_setup.emit(run_event_setup.opening_lane(issue))
|
|
94
85
|
|
|
95
86
|
const outcome = await launch_ready(issue)
|
|
@@ -102,12 +93,43 @@ async function opened(issue: string, owner: string): Promise<DriveLaunch> {
|
|
|
102
93
|
return outcome.kind
|
|
103
94
|
}
|
|
104
95
|
|
|
96
|
+
// Ownership is rechecked after the split-only unit, before any lane opens.
|
|
97
|
+
async function opened(issue: string, owner: string): Promise<DriveLaunch> {
|
|
98
|
+
await backlog_drive_owner.assert_current(owner)
|
|
99
|
+
const settled = await run_startup.phase('measurement', async () => await measured(issue), {
|
|
100
|
+
edge_of: (value) => (value === UNSAMPLED_LAUNCH ? 'waiting' : 'done'),
|
|
101
|
+
})
|
|
102
|
+
if (settled !== undefined) return settled
|
|
103
|
+
const split = await run_startup.phase(
|
|
104
|
+
'split assessment',
|
|
105
|
+
async () => await backlog_drive_split_unit.run(issue),
|
|
106
|
+
)
|
|
107
|
+
if (split === 'split') return SPLIT_LAUNCH
|
|
108
|
+
await backlog_drive_owner.assert_current(owner)
|
|
109
|
+
|
|
110
|
+
return await launch_and_report(issue)
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
function launch_edge(value: DriveLaunch): 'done' | 'failed' {
|
|
114
|
+
return value === 'unopened' || value === 'failed' ? 'failed' : 'done'
|
|
115
|
+
}
|
|
116
|
+
|
|
105
117
|
// The launch opened and closed on the stream (`backlog-drive-trace.ts`).
|
|
106
118
|
async function launch(issue: string, owner: string): Promise<DriveLaunch> {
|
|
107
|
-
return await
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
119
|
+
return await run_startup.phase(
|
|
120
|
+
'launch',
|
|
121
|
+
async () =>
|
|
122
|
+
await backlog_drive_trace.traced(
|
|
123
|
+
issue,
|
|
124
|
+
backlog_drive_trace.STEP.LAUNCH,
|
|
125
|
+
async () => await opened(issue, owner),
|
|
126
|
+
),
|
|
127
|
+
{
|
|
128
|
+
issue,
|
|
129
|
+
root: true,
|
|
130
|
+
edge_of: (value) =>
|
|
131
|
+
value === 'waiting' || value === 'unsampled' ? 'waiting' : launch_edge(value),
|
|
132
|
+
},
|
|
111
133
|
)
|
|
112
134
|
}
|
|
113
135
|
|
|
@@ -1,50 +1,66 @@
|
|
|
1
1
|
import { git_gh_issue } from '#scripts/gh/git-gh-issue'
|
|
2
|
-
import { git_gh_issue_rest } from '#scripts/gh/git-gh-issue-rest'
|
|
3
|
-
import { AUTO_OK_LABEL } from '#scripts/issue/issue-labels'
|
|
2
|
+
import { git_gh_issue_rest, type RestIssue } from '#scripts/gh/git-gh-issue-rest'
|
|
3
|
+
import { AUTO_OK_LABEL, IN_PROGRESS_LABEL } from '#scripts/issue/issue-labels'
|
|
4
|
+
import { z } from 'zod'
|
|
4
5
|
|
|
5
6
|
type ListingCheck = () => Promise<boolean>
|
|
6
7
|
|
|
7
|
-
//
|
|
8
|
-
|
|
8
|
+
// Each listed issue's label names, joined in order: the part of an issue whose change can make it ready.
|
|
9
|
+
type Listing = ReadonlyMap<number, string>
|
|
10
|
+
|
|
11
|
+
const labels_schema = z.array(z.looseObject({ name: z.string() })).catch([])
|
|
12
|
+
|
|
13
|
+
function labels_of(issue: RestIssue): ReadonlyArray<string> {
|
|
14
|
+
return labels_schema.parse(issue['labels']).map((label) => label.name)
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// The `auto-ok` listing's first page, its pull requests and its `in-progress` issues left out: an
|
|
18
|
+
// issue at work in a lane edits its own labels, and none of those edits makes anything ready.
|
|
19
|
+
function listing_of(body: string): Listing {
|
|
9
20
|
const issues = git_gh_issue_rest.parse_rest_issues(body)
|
|
21
|
+
const listed = issues
|
|
22
|
+
.filter((issue) => !git_gh_issue_rest.is_pull_request(issue))
|
|
23
|
+
.map((issue) => ({ number: issue.number, labels: labels_of(issue) }))
|
|
24
|
+
.filter((issue) => !issue.labels.includes(IN_PROGRESS_LABEL))
|
|
10
25
|
|
|
11
|
-
return new
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
.
|
|
26
|
+
return new Map(
|
|
27
|
+
listed.map((issue) => [
|
|
28
|
+
issue.number,
|
|
29
|
+
issue.labels.toSorted((left, right) => left.localeCompare(right)).join(','),
|
|
30
|
+
]),
|
|
15
31
|
)
|
|
16
32
|
}
|
|
17
33
|
|
|
18
|
-
function
|
|
34
|
+
function has_change(seen: Listing | undefined, listing: Listing): boolean {
|
|
19
35
|
if (seen === undefined) return false
|
|
20
36
|
|
|
21
|
-
return [...
|
|
37
|
+
return [...listing].some(([number, labels]) => seen.get(number) !== labels)
|
|
22
38
|
}
|
|
23
39
|
|
|
24
|
-
// Whether the `auto-ok` listing's first page holds an issue the previous read lacked
|
|
25
|
-
// (joshuafolkken/kit#7227). The ETag keeps the read cheap,
|
|
26
|
-
// label edits change it too, so only a new issue
|
|
27
|
-
//
|
|
28
|
-
// leaves an empty baseline rather than none, so
|
|
29
|
-
// still counts as new (joshuafolkken/kit#7229).
|
|
40
|
+
// Whether the `auto-ok` listing's first page holds an issue the previous read lacked, or an issue whose
|
|
41
|
+
// labels changed since (joshuafolkken/kit#7227, joshuafolkken/kit#7507). The ETag keeps the read cheap,
|
|
42
|
+
// but a running lane's own comments and label edits change it too, so only a new issue, or a relabelled
|
|
43
|
+
// one outside a lane, counts. The first read is the baseline, and a read that fails reads as unchanged:
|
|
44
|
+
// the ask's interval still comes. A first read that fails leaves an empty baseline rather than none, so
|
|
45
|
+
// an issue listed before the next read that answers still counts as new (joshuafolkken/kit#7229).
|
|
30
46
|
function watcher(): ListingCheck {
|
|
31
|
-
const memory: { seen?:
|
|
47
|
+
const memory: { seen?: Listing } = {}
|
|
32
48
|
|
|
33
|
-
function keep(
|
|
34
|
-
memory.seen =
|
|
49
|
+
function keep(listing: Listing): void {
|
|
50
|
+
memory.seen = listing
|
|
35
51
|
}
|
|
36
52
|
|
|
37
53
|
return async function is_changed(): Promise<boolean> {
|
|
38
54
|
try {
|
|
39
55
|
const detail = await git_gh_issue.issue_list_label_first_page(AUTO_OK_LABEL)
|
|
40
|
-
const
|
|
41
|
-
const is_new =
|
|
56
|
+
const listing = listing_of(detail.body)
|
|
57
|
+
const is_new = has_change(memory.seen, listing)
|
|
42
58
|
|
|
43
|
-
keep(
|
|
59
|
+
keep(listing)
|
|
44
60
|
|
|
45
61
|
return is_new
|
|
46
62
|
} catch {
|
|
47
|
-
keep(memory.seen ?? new
|
|
63
|
+
keep(memory.seen ?? new Map())
|
|
48
64
|
|
|
49
65
|
return false
|
|
50
66
|
}
|
|
@@ -14,7 +14,8 @@ import { backlog_drive_unit } from './backlog-drive-unit'
|
|
|
14
14
|
|
|
15
15
|
// The record is held by the driver's owner (the supervisor, or the attached parent), never by the
|
|
16
16
|
// unit's own session, so the close names that owner or `run:carry` refuses it as `busy`. The unit is
|
|
17
|
-
// no run parent `run:step` answers, so the digest command is named here.
|
|
17
|
+
// no run parent `run:step` answers, so the digest command is named here. The session `run:wake` wakes
|
|
18
|
+
// beside the driver at a `watch` drain reads the same brief (`run-wake-driver.ts`).
|
|
18
19
|
function brief_of(owner: string): string {
|
|
19
20
|
return [
|
|
20
21
|
'Run the backlogrun retrospective as the run parent would: `pnpm josh doc:read retrospective.md`;',
|
|
@@ -74,7 +75,7 @@ async function run(owner: string, ports: UnitPorts = production_ports()): Promis
|
|
|
74
75
|
return ports.is_marked(git_directory)
|
|
75
76
|
}
|
|
76
77
|
|
|
77
|
-
const backlog_drive_retrospective_unit = { run }
|
|
78
|
+
const backlog_drive_retrospective_unit = { brief_of, run }
|
|
78
79
|
|
|
79
80
|
export type { UnitPorts }
|
|
80
81
|
export { backlog_drive_retrospective_unit }
|
|
@@ -47,6 +47,7 @@ function brief_of(issue: string): string {
|
|
|
47
47
|
`\`pnpm josh doc:section .claude/skills/workflow-commands/split-assessment.md "${split_assess.QUESTION_SECTION}"\`.`,
|
|
48
48
|
`Separately-mergeable parts → file each child k with \`pnpm josh issue:file "<title>" --body-file .josh/tmp/split-${issue}-<k>.md --route split\`, then`,
|
|
49
49
|
`\`pnpm josh epic --promote ${issue} <N1> <N2> ... [--ordered]\`.`,
|
|
50
|
+
'Before publishing, record every child plan with `issue:plan --planned --no-notify`, then `pnpm josh issue:file --publish <E>`; retry the same epic on failure.',
|
|
50
51
|
`One deliverable → add \`${split_assess.REASON_PREFIX} <理由>\` under 背景 with \`pnpm josh issue:body ${issue} --body-file -\`.`,
|
|
51
52
|
'Nobody answers this session: end it once either is written.',
|
|
52
53
|
].join(' ')
|
|
@@ -10,14 +10,21 @@ const USAGE_LIMIT_REASON = 'usage-limit'
|
|
|
10
10
|
const MEMORY_REASON = 'memory'
|
|
11
11
|
// Before a hand-back mark's reason no driver recorded (`lane-hand-back-held.ts`).
|
|
12
12
|
const DRIVERLESS_PREFIX = 'driverless:'
|
|
13
|
+
// The offer verdict that started nothing because nothing could start (`backlog-drive.ts`).
|
|
14
|
+
const WATCH_VERDICT = 'watch'
|
|
15
|
+
// The hand-back reason of a window that closed after a `watch` offer: the backlog had drained
|
|
16
|
+
// (joshuafolkken/kit#7510), told apart from a window that closed mid-work.
|
|
17
|
+
const DRAINED_REASON = 'drained'
|
|
13
18
|
|
|
14
19
|
const backlog_hold_codes = {
|
|
20
|
+
DRAINED_REASON,
|
|
15
21
|
DRIVERLESS_PREFIX,
|
|
16
22
|
HAND_BACK_PREFIX,
|
|
17
23
|
MEMORY_REASON,
|
|
18
24
|
OFFER_PREFIX,
|
|
19
25
|
REASON_SEPARATOR,
|
|
20
26
|
USAGE_LIMIT_REASON,
|
|
27
|
+
WATCH_VERDICT,
|
|
21
28
|
}
|
|
22
29
|
|
|
23
30
|
export { backlog_hold_codes }
|
|
@@ -8,6 +8,7 @@ import { backlog_wait_cause, type WaitCause } from './backlog-wait-cause'
|
|
|
8
8
|
// The writers' own constants name the codes (`backlog-hold-codes.ts`).
|
|
9
9
|
|
|
10
10
|
const {
|
|
11
|
+
DRAINED_REASON,
|
|
11
12
|
DRIVERLESS_PREFIX,
|
|
12
13
|
HAND_BACK_PREFIX,
|
|
13
14
|
MEMORY_REASON,
|
|
@@ -26,7 +27,10 @@ const HAND_BACK_TEXT: ReadonlyMap<string, string> = new Map([
|
|
|
26
27
|
['launch', 'a lane launch failed; the session restarts the driver'],
|
|
27
28
|
['offer', 'the backlog offer failed; the session restarts the driver'],
|
|
28
29
|
['window', "the run's time window closed; the session restarts the driver"],
|
|
30
|
+
[DRAINED_REASON, 'the backlog had nothing to start; the session restarts the driver'],
|
|
29
31
|
])
|
|
32
|
+
// The hand-backs only a person ends; every other one ends when the session restarts the driver.
|
|
33
|
+
const PERSON_HAND_BACKS: ReadonlySet<string> = new Set(['judge', 'triage'])
|
|
30
34
|
|
|
31
35
|
// `offer:<verdict>:<detail>`: the offer started nothing, for its cause or its answer.
|
|
32
36
|
const OFFER_TEXT: ReadonlyMap<string, string> = new Map([
|
|
@@ -102,6 +106,15 @@ function text_of(code: string): string {
|
|
|
102
106
|
return prefixed_text(code) ?? whole_text(code) ?? code
|
|
103
107
|
}
|
|
104
108
|
|
|
105
|
-
|
|
109
|
+
// Whether the hold is the driver's hand-back a session restart ends, a driverless mark's included —
|
|
110
|
+
// told apart from a hand-back that waits on a person (joshuafolkken/kit#7510).
|
|
111
|
+
function is_driver_restart(code: string): boolean {
|
|
112
|
+
const own = code.startsWith(DRIVERLESS_PREFIX) ? code.slice(DRIVERLESS_PREFIX.length) : code
|
|
113
|
+
const reason = rest_after(own, HAND_BACK_PREFIX)
|
|
114
|
+
|
|
115
|
+
return reason !== undefined && !PERSON_HAND_BACKS.has(reason)
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
const backlog_hold_text = { is_driver_restart, text_of }
|
|
106
119
|
|
|
107
120
|
export { backlog_hold_text }
|
|
@@ -58,6 +58,12 @@ function measured(declaration: MeasureDeclaration, source: TrustedBody): Measure
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
async function declared(issue: string): Promise<Measurement | undefined> {
|
|
61
|
+
// The REST memo also serves split assessment (10-second TTL, invalidated by writes).
|
|
62
|
+
// An unverified body may only skip execution; it never authorizes a command.
|
|
63
|
+
const body = await git_gh_command.issue_get_body(issue)
|
|
64
|
+
|
|
65
|
+
if (body !== undefined && measure_declaration.parse(body) === undefined) return undefined
|
|
66
|
+
|
|
61
67
|
const read = await trusted_measure.read_trusted_body(issue)
|
|
62
68
|
|
|
63
69
|
if (read.kind === 'refused') return undefined
|