@ebrindley/build 0.0.0-stage → 1.42.1-rc28
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/.build-project/providers/catalog.json +13951 -0
- package/.build-project/providers/pricing.json +1978 -0
- package/.build-project/providers/registry.json +4103 -0
- package/.github/SECURITY.md +75 -0
- package/.nvmrc +1 -0
- package/CHANGELOG.md +661 -0
- package/CODE_OF_CONDUCT.md +44 -0
- package/CONTRIBUTING.md +24 -0
- package/INSTALL.md +623 -0
- package/LICENSE +21 -0
- package/README.md +118 -2
- package/THIRD_PARTY_NOTICES.txt +26 -0
- package/dist/ai-judge-UE5UOYOO.js +191 -0
- package/dist/allowlist-grounding-KPLN6NC5.js +16 -0
- package/dist/allowlist-utils-MZZKKXRD.js +31 -0
- package/dist/apply-completion-mode-EM37UZHB.js +110 -0
- package/dist/artifact-migrator-WPACNSEP.js +276 -0
- package/dist/ask-2OZ4JFQR.js +176 -0
- package/dist/auth-6UKBTJUQ.js +185 -0
- package/dist/auth-H5KJL6HL.js +165 -0
- package/dist/auth-LVJRJDMU.js +12 -0
- package/dist/auth-NHZOCNRR.js +94 -0
- package/dist/auth-PBXHWXGW.js +95 -0
- package/dist/auth-T7Y5DCAH.js +91 -0
- package/dist/auth-TVVKCHQW.js +13 -0
- package/dist/auth-UHB2UCSS.js +97 -0
- package/dist/auth-VACA3VUL.js +98 -0
- package/dist/auth-VVLC77S3.js +44 -0
- package/dist/auth-liveness-XO4AGDDD.js +53 -0
- package/dist/autoloop-cleanup-SI3VGAAR.js +106 -0
- package/dist/autoloop-evidence-gates-J5GG5YQB.js +39 -0
- package/dist/autoloop-gate-policy-SUNAEP6Q.js +169 -0
- package/dist/autoloop-helpers-VQGQNTT6.js +52 -0
- package/dist/autoloop-ledger-P6TIDP7C.js +96 -0
- package/dist/autoloop-ledger-subscriber-HFAGOZXH.js +161 -0
- package/dist/autoloop-run-defaults-GWGZBNT7.js +27 -0
- package/dist/autoloop-run-lock-GBWRM5A2.js +197 -0
- package/dist/autoloop-success-C32QVWOP.js +93 -0
- package/dist/autoloop-termination-summary-GI6IBQWD.js +58 -0
- package/dist/autoloop-trajectory-AMKSQISD.js +70 -0
- package/dist/autoloop-wall-clock-T7ZVIQOC.js +12 -0
- package/dist/automatic-branch-cleanup-R62X2C5O.js +49 -0
- package/dist/autonomous-loop-controller-2WL363LW.js +4386 -0
- package/dist/backend-YUTFDZXZ.js +30 -0
- package/dist/background-executor-Z3ODTMD7.js +260 -0
- package/dist/backlog-75QPEAMW.js +403 -0
- package/dist/backlog-execution-intent-GWUV5TUK.js +19 -0
- package/dist/backup-active-store-XHWLN34M.js +16 -0
- package/dist/backup-machine-stores-UI4LTJOY.js +251 -0
- package/dist/backup-telemetry-db-Z4ICYCNW.js +26 -0
- package/dist/branch-archive-manager-FMSQ7YJF.js +18 -0
- package/dist/branch-cleanup-manager-ST6FJGND.js +35 -0
- package/dist/build-gate-7NKWPY62.js +68 -0
- package/dist/build-root-S7DINODY.js +18 -0
- package/dist/change-summary-R6CB6VXJ.js +50 -0
- package/dist/chunk-24MNKKOM.js +173 -0
- package/dist/chunk-2H6VZFIO.js +235 -0
- package/dist/chunk-2JIX3EKV.js +39 -0
- package/dist/chunk-2KO7HVZM.js +106 -0
- package/dist/chunk-2L36U25O.js +100 -0
- package/dist/chunk-2NMNFUQA.js +475 -0
- package/dist/chunk-2OUAEH67.js +83 -0
- package/dist/chunk-2VLJUXJU.js +115 -0
- package/dist/chunk-2VUEDIUM.js +77 -0
- package/dist/chunk-2Y2IIHPI.js +430 -0
- package/dist/chunk-2YRG3LHZ.js +220 -0
- package/dist/chunk-2Z5Q3SUY.js +65 -0
- package/dist/chunk-32IYXIE5.js +873 -0
- package/dist/chunk-33IGPPUI.js +292 -0
- package/dist/chunk-352PCJLK.js +283 -0
- package/dist/chunk-35J4NE6S.js +226 -0
- package/dist/chunk-3C7WBIVK.js +1016 -0
- package/dist/chunk-3H3EY6U7.js +1225 -0
- package/dist/chunk-3H4MWYIC.js +198 -0
- package/dist/chunk-3HHWQR3N.js +2479 -0
- package/dist/chunk-3JKNRYEE.js +14 -0
- package/dist/chunk-3LECCYZY.js +128 -0
- package/dist/chunk-3LOY6YZI.js +852 -0
- package/dist/chunk-3M57DADF.js +44 -0
- package/dist/chunk-3NOTLVLG.js +3803 -0
- package/dist/chunk-3OPP2OZB.js +1480 -0
- package/dist/chunk-3P5IN5E7.js +9 -0
- package/dist/chunk-3PL22IYZ.js +20 -0
- package/dist/chunk-3REDAJUJ.js +14 -0
- package/dist/chunk-3S2R4XJI.js +203 -0
- package/dist/chunk-3UBZI5DW.js +61 -0
- package/dist/chunk-3VV5OBGG.js +308 -0
- package/dist/chunk-3WY5TU2O.js +823 -0
- package/dist/chunk-43OKHTW4.js +82 -0
- package/dist/chunk-45KUJBDI.js +112 -0
- package/dist/chunk-47X5LM7B.js +224 -0
- package/dist/chunk-4B6FQJ77.js +268 -0
- package/dist/chunk-4BTDUT2S.js +42 -0
- package/dist/chunk-4DJL2VXA.js +24 -0
- package/dist/chunk-4EBSXZ73.js +48 -0
- package/dist/chunk-4QKP6I4C.js +294 -0
- package/dist/chunk-4U6XK2DG.js +300 -0
- package/dist/chunk-4UMRUFBD.js +132 -0
- package/dist/chunk-4US4SYJ4.js +569 -0
- package/dist/chunk-4ZPLWEZO.js +154 -0
- package/dist/chunk-56WPYDJH.js +624 -0
- package/dist/chunk-57WRCJJW.js +50 -0
- package/dist/chunk-5AW4RMNG.js +24 -0
- package/dist/chunk-5EQN56OZ.js +155 -0
- package/dist/chunk-5F43TUIN.js +38 -0
- package/dist/chunk-5FKHIKTS.js +115 -0
- package/dist/chunk-5HDP7XZG.js +91 -0
- package/dist/chunk-5KQETTNS.js +152 -0
- package/dist/chunk-5PDVN2KO.js +498 -0
- package/dist/chunk-5UBIFVRD.js +509 -0
- package/dist/chunk-5YDE3Q62.js +46 -0
- package/dist/chunk-626AJVMU.js +302 -0
- package/dist/chunk-633XZ7UF.js +3583 -0
- package/dist/chunk-63DHNHGA.js +236 -0
- package/dist/chunk-666656AR.js +568 -0
- package/dist/chunk-67YRJPJO.js +19 -0
- package/dist/chunk-6CAU7VBA.js +20 -0
- package/dist/chunk-6CB3KJRY.js +21 -0
- package/dist/chunk-6DBMALXL.js +29 -0
- package/dist/chunk-6E25C4IA.js +269 -0
- package/dist/chunk-6FIBNIQU.js +73 -0
- package/dist/chunk-6G57FYBV.js +189 -0
- package/dist/chunk-6KZKRTG3.js +4885 -0
- package/dist/chunk-6LAH2UV2.js +525 -0
- package/dist/chunk-6PZY2TTU.js +921 -0
- package/dist/chunk-6T6NHXK4.js +230 -0
- package/dist/chunk-6TBEX4R4.js +432 -0
- package/dist/chunk-6TRD7TEE.js +911 -0
- package/dist/chunk-6XCP2RAI.js +47 -0
- package/dist/chunk-726G6WDL.js +351 -0
- package/dist/chunk-75EMT7BF.js +616 -0
- package/dist/chunk-762ACDZJ.js +4696 -0
- package/dist/chunk-77I6G4CO.js +1 -0
- package/dist/chunk-7DJ6SQH3.js +510 -0
- package/dist/chunk-7HPCIOMA.js +1383 -0
- package/dist/chunk-7HYBSRPZ.js +17503 -0
- package/dist/chunk-7KBEOPVB.js +73 -0
- package/dist/chunk-7LHJDJB3.js +2222 -0
- package/dist/chunk-7NVJMH52.js +306 -0
- package/dist/chunk-7RMARDVH.js +33 -0
- package/dist/chunk-7SEWU4QG.js +36 -0
- package/dist/chunk-7TUTZTI2.js +911 -0
- package/dist/chunk-7VBDFPUM.js +340 -0
- package/dist/chunk-7VRJHTGZ.js +6406 -0
- package/dist/chunk-7YAOUUKK.js +493 -0
- package/dist/chunk-AAAODV76.js +860 -0
- package/dist/chunk-AB4HUJVQ.js +339 -0
- package/dist/chunk-AEQWV746.js +611 -0
- package/dist/chunk-AHU3FKPA.js +11639 -0
- package/dist/chunk-AISTV5XU.js +226 -0
- package/dist/chunk-AJBTKGJZ.js +48 -0
- package/dist/chunk-AJJNW7XT.js +248 -0
- package/dist/chunk-AJN5Y5YZ.js +160 -0
- package/dist/chunk-ALDTFNZ3.js +150 -0
- package/dist/chunk-ARARVIZK.js +281 -0
- package/dist/chunk-ATBM6AW5.js +53 -0
- package/dist/chunk-ATKEKM3E.js +206 -0
- package/dist/chunk-AUJLW6JZ.js +92 -0
- package/dist/chunk-AY3MHEFM.js +24 -0
- package/dist/chunk-B7PYTV72.js +236 -0
- package/dist/chunk-B7YRSULE.js +1423 -0
- package/dist/chunk-BAWJNMWF.js +339 -0
- package/dist/chunk-BBPIILO2.js +88 -0
- package/dist/chunk-BD3PGW6A.js +957 -0
- package/dist/chunk-BDPYFAB4.js +44 -0
- package/dist/chunk-BIUV23HH.js +729 -0
- package/dist/chunk-BQ3VAGXH.js +243 -0
- package/dist/chunk-BQJOGAWT.js +31 -0
- package/dist/chunk-BT7EG7CO.js +68 -0
- package/dist/chunk-BV3XQQLU.js +27 -0
- package/dist/chunk-BY6ODHNZ.js +78 -0
- package/dist/chunk-BZRLSZNV.js +79 -0
- package/dist/chunk-C3DH3NCY.js +2773 -0
- package/dist/chunk-C3KCMAJP.js +756 -0
- package/dist/chunk-C7AGUJ5K.js +267 -0
- package/dist/chunk-CBSWKQCX.js +342 -0
- package/dist/chunk-CE5OZBYY.js +21 -0
- package/dist/chunk-CFCVYHSW.js +373 -0
- package/dist/chunk-CHA2HDE5.js +126 -0
- package/dist/chunk-CIHWPGS5.js +146 -0
- package/dist/chunk-CJBSZX3F.js +127 -0
- package/dist/chunk-CLA6QIJM.js +43 -0
- package/dist/chunk-CPSVQR2I.js +365 -0
- package/dist/chunk-CRPRVNQ4.js +254 -0
- package/dist/chunk-CSIE4Y7C.js +1093 -0
- package/dist/chunk-CSOPSYDY.js +142 -0
- package/dist/chunk-CSXLLEGB.js +205 -0
- package/dist/chunk-CTDLERWU.js +293 -0
- package/dist/chunk-CULBXMSK.js +110 -0
- package/dist/chunk-D2M2Y5ID.js +21 -0
- package/dist/chunk-D37WY7SH.js +1060 -0
- package/dist/chunk-D4VJFCGZ.js +89 -0
- package/dist/chunk-D6WTZMZB.js +48 -0
- package/dist/chunk-DBHOWDUH.js +976 -0
- package/dist/chunk-DCACX7BV.js +19364 -0
- package/dist/chunk-DFHX4XYA.js +128 -0
- package/dist/chunk-DIKBRRKE.js +176 -0
- package/dist/chunk-DJG5RIOR.js +9 -0
- package/dist/chunk-DNIOIISW.js +616 -0
- package/dist/chunk-DOA5G7IA.js +315 -0
- package/dist/chunk-DP7FKP6W.js +855 -0
- package/dist/chunk-DS2JZ677.js +79 -0
- package/dist/chunk-DSRLVYBS.js +82 -0
- package/dist/chunk-EAEVKNJA.js +209 -0
- package/dist/chunk-EEUESN3T.js +575 -0
- package/dist/chunk-EJ4LUU5Y.js +73 -0
- package/dist/chunk-EJIWTPSZ.js +1063 -0
- package/dist/chunk-EJVCDTAN.js +116 -0
- package/dist/chunk-EKLUBDBQ.js +627 -0
- package/dist/chunk-EN62WLFD.js +849 -0
- package/dist/chunk-ENYRCL43.js +26 -0
- package/dist/chunk-EP22ZMFO.js +273 -0
- package/dist/chunk-EP4SVAVI.js +87 -0
- package/dist/chunk-EPAMVGI3.js +1562 -0
- package/dist/chunk-EPRMH6HO.js +24 -0
- package/dist/chunk-ES6NWJ36.js +4057 -0
- package/dist/chunk-ETA2K4KI.js +30 -0
- package/dist/chunk-ETAD4NKD.js +31 -0
- package/dist/chunk-EUWIIDQ7.js +93 -0
- package/dist/chunk-EVE3OD2W.js +141 -0
- package/dist/chunk-EXA26FFC.js +459 -0
- package/dist/chunk-EXSPAA35.js +244 -0
- package/dist/chunk-F55YABKV.js +258 -0
- package/dist/chunk-F5DNGU5W.js +27 -0
- package/dist/chunk-F622MJYV.js +103 -0
- package/dist/chunk-F6NIQD74.js +5111 -0
- package/dist/chunk-FAWJTC34.js +43 -0
- package/dist/chunk-FAZBRHGG.js +47 -0
- package/dist/chunk-FIEUSGNJ.js +39 -0
- package/dist/chunk-FKCG7K6H.js +1146 -0
- package/dist/chunk-FOVVXV45.js +229 -0
- package/dist/chunk-FRBPKBFE.js +30 -0
- package/dist/chunk-FSA5BPFI.js +268 -0
- package/dist/chunk-FSJ5TTZ3.js +29 -0
- package/dist/chunk-FT7SGLXT.js +193 -0
- package/dist/chunk-FUUVZZUB.js +62 -0
- package/dist/chunk-FYMRVUNZ.js +1697 -0
- package/dist/chunk-FYTAA5FG.js +162 -0
- package/dist/chunk-G3VB2UCZ.js +3892 -0
- package/dist/chunk-G6OIMVXH.js +405 -0
- package/dist/chunk-G7PQCXVH.js +228 -0
- package/dist/chunk-GAB6UW52.js +1087 -0
- package/dist/chunk-GAFJEYLK.js +29 -0
- package/dist/chunk-GC4CRMTS.js +642 -0
- package/dist/chunk-GFHSIWHL.js +5297 -0
- package/dist/chunk-GI5M67YA.js +735 -0
- package/dist/chunk-GIJWHUWF.js +191 -0
- package/dist/chunk-GO6DRECI.js +1 -0
- package/dist/chunk-GOFVBTMN.js +314 -0
- package/dist/chunk-GQIP72ZJ.js +13 -0
- package/dist/chunk-GQXLXRFA.js +28 -0
- package/dist/chunk-GT6HFKJB.js +48 -0
- package/dist/chunk-GVJGSSKM.js +174 -0
- package/dist/chunk-GWHGTG37.js +36 -0
- package/dist/chunk-GZAJHLKO.js +18 -0
- package/dist/chunk-GZK62I3N.js +314 -0
- package/dist/chunk-H3HGMISG.js +483 -0
- package/dist/chunk-H3ISZJMJ.js +403 -0
- package/dist/chunk-H4HXVWEC.js +9 -0
- package/dist/chunk-H6MJGKAW.js +120 -0
- package/dist/chunk-HBTTGVR5.js +353 -0
- package/dist/chunk-HBZ322WZ.js +35 -0
- package/dist/chunk-HEP3ILP4.js +34 -0
- package/dist/chunk-HGFXODKO.js +106 -0
- package/dist/chunk-HHWDTB6S.js +59 -0
- package/dist/chunk-HKO45NLZ.js +286 -0
- package/dist/chunk-HLVTEA6A.js +89 -0
- package/dist/chunk-HS3SY6HN.js +160 -0
- package/dist/chunk-HT5OCGKN.js +899 -0
- package/dist/chunk-HXIIEMGF.js +78 -0
- package/dist/chunk-I56TH7VM.js +46 -0
- package/dist/chunk-I6FN3R5D.js +352 -0
- package/dist/chunk-I7SCBHJN.js +655 -0
- package/dist/chunk-IJM4GKAT.js +529 -0
- package/dist/chunk-IMEYU36R.js +344 -0
- package/dist/chunk-INJ3SS6A.js +936 -0
- package/dist/chunk-IUKOPCCE.js +441 -0
- package/dist/chunk-IVEPZQJO.js +33 -0
- package/dist/chunk-IVZEONFC.js +43 -0
- package/dist/chunk-IWBHRSG7.js +936 -0
- package/dist/chunk-IYY3HQAD.js +484 -0
- package/dist/chunk-J2ICMYDA.js +48 -0
- package/dist/chunk-J2QCFLUN.js +505 -0
- package/dist/chunk-J5HM6V5P.js +1039 -0
- package/dist/chunk-J6NZX6QH.js +398 -0
- package/dist/chunk-JBBB2Y47.js +432 -0
- package/dist/chunk-JDCZQZU7.js +42 -0
- package/dist/chunk-JEDNXGSS.js +169 -0
- package/dist/chunk-JHP7OT6K.js +89 -0
- package/dist/chunk-JLS65NUQ.js +14 -0
- package/dist/chunk-JNMWYMC6.js +38 -0
- package/dist/chunk-JNSTWNNW.js +25 -0
- package/dist/chunk-JOSK6GEU.js +9564 -0
- package/dist/chunk-JQUMSIGC.js +100 -0
- package/dist/chunk-JVHGMURQ.js +1106 -0
- package/dist/chunk-JYXS47FQ.js +951 -0
- package/dist/chunk-K2ZMW2Z5.js +2147 -0
- package/dist/chunk-K7FAFORM.js +14 -0
- package/dist/chunk-KBJXX3ON.js +333 -0
- package/dist/chunk-KHFKVQWY.js +486 -0
- package/dist/chunk-KHMEI3DQ.js +173 -0
- package/dist/chunk-KHW3UD7B.js +69 -0
- package/dist/chunk-KKQKWAMF.js +365 -0
- package/dist/chunk-KOKXJV2U.js +455 -0
- package/dist/chunk-KQ4NGOJI.js +14 -0
- package/dist/chunk-KQYQOXMS.js +342 -0
- package/dist/chunk-KTMW65UX.js +14 -0
- package/dist/chunk-KUEWV2JH.js +593 -0
- package/dist/chunk-KXYDV3HP.js +1523 -0
- package/dist/chunk-KZ4JMGZ5.js +96 -0
- package/dist/chunk-KZWGBUIO.js +2659 -0
- package/dist/chunk-L2CBG5IX.js +1892 -0
- package/dist/chunk-L2S235CU.js +314 -0
- package/dist/chunk-L32WD57F.js +98 -0
- package/dist/chunk-LDJCKAJP.js +123 -0
- package/dist/chunk-LDWNBEN7.js +541 -0
- package/dist/chunk-LJVH57G2.js +241 -0
- package/dist/chunk-LPQ7NZEN.js +209 -0
- package/dist/chunk-LRGH3CCV.js +148 -0
- package/dist/chunk-LULOGMMM.js +1133 -0
- package/dist/chunk-LWGKN2GY.js +8284 -0
- package/dist/chunk-LX4F24ZH.js +157 -0
- package/dist/chunk-M4BUEXXF.js +839 -0
- package/dist/chunk-M6UHOC4I.js +553 -0
- package/dist/chunk-MCBNWZNO.js +657 -0
- package/dist/chunk-MEMSY6VY.js +223 -0
- package/dist/chunk-MHLEZQQI.js +145 -0
- package/dist/chunk-MJ6WNSIX.js +192 -0
- package/dist/chunk-MKASIKWZ.js +442 -0
- package/dist/chunk-MNOVBYFU.js +60 -0
- package/dist/chunk-MO2BYAAF.js +2896 -0
- package/dist/chunk-MP6P7Y2A.js +180 -0
- package/dist/chunk-MQ4TFJAG.js +3365 -0
- package/dist/chunk-MT2WAIR3.js +131 -0
- package/dist/chunk-MTU7VTNN.js +1122 -0
- package/dist/chunk-MULMXX4V.js +150 -0
- package/dist/chunk-MW2DWWVA.js +147 -0
- package/dist/chunk-MY3ZPUN4.js +151 -0
- package/dist/chunk-MYLH2S4G.js +64 -0
- package/dist/chunk-MZ5WYKNA.js +28 -0
- package/dist/chunk-N3Q2JNPV.js +249 -0
- package/dist/chunk-N5DX4JAK.js +12 -0
- package/dist/chunk-NAINGKHF.js +35 -0
- package/dist/chunk-NEQUQHOX.js +223 -0
- package/dist/chunk-NHNPEZS4.js +1408 -0
- package/dist/chunk-NHTIXJCR.js +17 -0
- package/dist/chunk-NKLPMBNV.js +1154 -0
- package/dist/chunk-NMVZ5YES.js +199 -0
- package/dist/chunk-NRFRY3GE.js +256 -0
- package/dist/chunk-NTD6CSI6.js +1266 -0
- package/dist/chunk-NUO7B3SH.js +318 -0
- package/dist/chunk-NVOHIJKG.js +1319 -0
- package/dist/chunk-NXH3RX7O.js +523 -0
- package/dist/chunk-NXZ3DURF.js +257 -0
- package/dist/chunk-O26L6F7F.js +209 -0
- package/dist/chunk-O5RRIUEP.js +124 -0
- package/dist/chunk-O5X6BKAO.js +10 -0
- package/dist/chunk-O6ZQUVTR.js +31 -0
- package/dist/chunk-O7FE75QZ.js +306 -0
- package/dist/chunk-OC7Z6AJQ.js +81 -0
- package/dist/chunk-OH7IEZ63.js +307 -0
- package/dist/chunk-OI734GRS.js +115 -0
- package/dist/chunk-OJBH62DK.js +684 -0
- package/dist/chunk-OKJLVSTJ.js +247 -0
- package/dist/chunk-OMX5VL43.js +79 -0
- package/dist/chunk-ONHAMBN6.js +12 -0
- package/dist/chunk-ONYPLIVE.js +753 -0
- package/dist/chunk-OSK7QWPD.js +637 -0
- package/dist/chunk-OTXLMJKP.js +438 -0
- package/dist/chunk-OV5PKQMA.js +213 -0
- package/dist/chunk-OXK5HA4B.js +31 -0
- package/dist/chunk-OYDWFQA4.js +272 -0
- package/dist/chunk-OZAUKWHB.js +22 -0
- package/dist/chunk-P5P2EKGH.js +94 -0
- package/dist/chunk-P6SSWAKY.js +29 -0
- package/dist/chunk-P7CQGPLS.js +30 -0
- package/dist/chunk-P7RVCHQV.js +197 -0
- package/dist/chunk-PEBWDYIW.js +726 -0
- package/dist/chunk-PFCXFO7A.js +9193 -0
- package/dist/chunk-PFLDWMX6.js +168 -0
- package/dist/chunk-PHZGLQSK.js +15883 -0
- package/dist/chunk-PNFTPNSR.js +20 -0
- package/dist/chunk-PPHXX4W7.js +175 -0
- package/dist/chunk-PPZESPJT.js +262 -0
- package/dist/chunk-PRDHI2L5.js +296 -0
- package/dist/chunk-PSTKWHHN.js +32 -0
- package/dist/chunk-PV53ODOT.js +555 -0
- package/dist/chunk-PVJBTI7P.js +24 -0
- package/dist/chunk-PXKERBKX.js +100 -0
- package/dist/chunk-PZ5AY32C.js +10 -0
- package/dist/chunk-Q3DHEZA5.js +85 -0
- package/dist/chunk-Q5RZDVQK.js +204 -0
- package/dist/chunk-Q64IR2Z2.js +4933 -0
- package/dist/chunk-Q6Z5UGPL.js +398 -0
- package/dist/chunk-QAMAV4DT.js +627 -0
- package/dist/chunk-QBWF4444.js +112 -0
- package/dist/chunk-QDKYT4CI.js +22805 -0
- package/dist/chunk-QFLBRWCJ.js +126 -0
- package/dist/chunk-QILAQACE.js +107 -0
- package/dist/chunk-QJ6OEH4K.js +3683 -0
- package/dist/chunk-QK3NLYTV.js +320 -0
- package/dist/chunk-QOFLUS24.js +535 -0
- package/dist/chunk-QOIASNEJ.js +98 -0
- package/dist/chunk-QP4UTSOV.js +3587 -0
- package/dist/chunk-QP5ST7RI.js +904 -0
- package/dist/chunk-QS5AGRZN.js +167 -0
- package/dist/chunk-QTAOU53N.js +107 -0
- package/dist/chunk-QTCLJHLZ.js +351 -0
- package/dist/chunk-QTOLTG4L.js +119 -0
- package/dist/chunk-QWDV4OSL.js +142 -0
- package/dist/chunk-QWMQ74KD.js +508 -0
- package/dist/chunk-QX6LOMMH.js +158 -0
- package/dist/chunk-QXBKIHY7.js +238 -0
- package/dist/chunk-QXBKTJT6.js +270 -0
- package/dist/chunk-QYQOVOLR.js +196 -0
- package/dist/chunk-R2CKS6WT.js +73 -0
- package/dist/chunk-R2TIYG7U.js +68 -0
- package/dist/chunk-R2W3LESH.js +465 -0
- package/dist/chunk-R5EXHMUN.js +100 -0
- package/dist/chunk-RBBTBCHX.js +289 -0
- package/dist/chunk-RBKLOUXA.js +121 -0
- package/dist/chunk-RCP2Y6DQ.js +86 -0
- package/dist/chunk-RCYEJSD5.js +260 -0
- package/dist/chunk-RFDVSI4N.js +134 -0
- package/dist/chunk-RGJU63FV.js +1717 -0
- package/dist/chunk-RI4EX2QE.js +18 -0
- package/dist/chunk-RIMARPCF.js +152 -0
- package/dist/chunk-RJ6RSNT6.js +42 -0
- package/dist/chunk-RNI2GUIF.js +131 -0
- package/dist/chunk-RPHUWJ3K.js +264 -0
- package/dist/chunk-RPIMAMV7.js +361 -0
- package/dist/chunk-RQFX6YRN.js +49 -0
- package/dist/chunk-RRC5BL7B.js +285 -0
- package/dist/chunk-RSYTSBOO.js +79 -0
- package/dist/chunk-RWQQIKIC.js +35 -0
- package/dist/chunk-RZUBOZH2.js +373 -0
- package/dist/chunk-S2E632FQ.js +380 -0
- package/dist/chunk-S2VQCZO4.js +22 -0
- package/dist/chunk-S2XIMQJQ.js +681 -0
- package/dist/chunk-S47ISY27.js +183 -0
- package/dist/chunk-S6I4KISU.js +142 -0
- package/dist/chunk-S6TAFQI5.js +2403 -0
- package/dist/chunk-SBBNT5ZJ.js +27 -0
- package/dist/chunk-SDJV2DTQ.js +491 -0
- package/dist/chunk-SDPIFNLD.js +33 -0
- package/dist/chunk-SF6YK3JI.js +835 -0
- package/dist/chunk-SK3ZFONO.js +976 -0
- package/dist/chunk-SKTFRFQ7.js +1775 -0
- package/dist/chunk-SNGM452K.js +2002 -0
- package/dist/chunk-STW7OFOA.js +581 -0
- package/dist/chunk-SU6UFUQY.js +1351 -0
- package/dist/chunk-SVJM3LJA.js +27 -0
- package/dist/chunk-SVUNZOPG.js +129 -0
- package/dist/chunk-T5XLUYV3.js +34 -0
- package/dist/chunk-T7E5JS6N.js +57 -0
- package/dist/chunk-TA3N5MMO.js +450 -0
- package/dist/chunk-TAJPCXSB.js +13 -0
- package/dist/chunk-TDEMDRN2.js +1639 -0
- package/dist/chunk-TDSEX5CF.js +24 -0
- package/dist/chunk-TGCVL74Y.js +28 -0
- package/dist/chunk-TGXXYDL4.js +1012 -0
- package/dist/chunk-TIKTYUJO.js +296 -0
- package/dist/chunk-TIZAJD4M.js +6029 -0
- package/dist/chunk-TLSEZZCG.js +5549 -0
- package/dist/chunk-TMBDRHAX.js +19 -0
- package/dist/chunk-TRURQUBP.js +1217 -0
- package/dist/chunk-TSQ256N5.js +152 -0
- package/dist/chunk-TUQMMFEQ.js +2244 -0
- package/dist/chunk-U424MJLC.js +81 -0
- package/dist/chunk-U4DRS6ZW.js +11 -0
- package/dist/chunk-U5KS22IN.js +204 -0
- package/dist/chunk-UAPHFJPN.js +673 -0
- package/dist/chunk-UB7LQITD.js +1040 -0
- package/dist/chunk-UBVRHGAZ.js +237 -0
- package/dist/chunk-UDNNAQN5.js +98 -0
- package/dist/chunk-UJP3XM54.js +342 -0
- package/dist/chunk-UJYDH2MW.js +305 -0
- package/dist/chunk-UKMPASIC.js +399 -0
- package/dist/chunk-UKUL3EHK.js +763 -0
- package/dist/chunk-UPHU64NB.js +1327 -0
- package/dist/chunk-URMSZXAD.js +43 -0
- package/dist/chunk-US3RT6CY.js +525 -0
- package/dist/chunk-UTDEOPKV.js +30 -0
- package/dist/chunk-UUUDKV7N.js +13 -0
- package/dist/chunk-UVKWU3SM.js +39 -0
- package/dist/chunk-V2TVPO3X.js +521 -0
- package/dist/chunk-V3KLVK7B.js +398 -0
- package/dist/chunk-V3YFFHDR.js +17 -0
- package/dist/chunk-VAG6GUBR.js +1162 -0
- package/dist/chunk-VBENAHDA.js +1814 -0
- package/dist/chunk-VBNCKCCI.js +16 -0
- package/dist/chunk-VCGSWN5M.js +1300 -0
- package/dist/chunk-VE2O2I7M.js +115 -0
- package/dist/chunk-VIFHYTI5.js +31 -0
- package/dist/chunk-VJER3FUS.js +5080 -0
- package/dist/chunk-VLMDM56Q.js +268 -0
- package/dist/chunk-VMFZEVVX.js +99 -0
- package/dist/chunk-VNDPQVUZ.js +1853 -0
- package/dist/chunk-VSPJRLGA.js +4783 -0
- package/dist/chunk-VSWC5ZXI.js +103 -0
- package/dist/chunk-VYI4DSZP.js +2017 -0
- package/dist/chunk-W4BAIQ6L.js +1212 -0
- package/dist/chunk-W7VQAL2K.js +2203 -0
- package/dist/chunk-WEI3ZDZH.js +33 -0
- package/dist/chunk-WEIUS5NT.js +26 -0
- package/dist/chunk-WEW7UFWE.js +546 -0
- package/dist/chunk-WGQAXLNA.js +384 -0
- package/dist/chunk-WJAL4JL3.js +206 -0
- package/dist/chunk-WKFOJ5ZG.js +141 -0
- package/dist/chunk-WMWQEFLN.js +2177 -0
- package/dist/chunk-WNECKKO2.js +154 -0
- package/dist/chunk-WPKLYOAM.js +195 -0
- package/dist/chunk-WSH37YQN.js +243 -0
- package/dist/chunk-WV3KQDPE.js +84 -0
- package/dist/chunk-WZFC4V4U.js +389 -0
- package/dist/chunk-XCOIBNET.js +13 -0
- package/dist/chunk-XDM65LBX.js +53 -0
- package/dist/chunk-XGU6PBO5.js +645 -0
- package/dist/chunk-XHOI4V62.js +43 -0
- package/dist/chunk-XIBVFMLQ.js +6858 -0
- package/dist/chunk-XJ2E7YEJ.js +117 -0
- package/dist/chunk-XON4ZCYX.js +69 -0
- package/dist/chunk-XQPEWJPI.js +127 -0
- package/dist/chunk-XSJTIFUY.js +31 -0
- package/dist/chunk-XT7OVWM3.js +64 -0
- package/dist/chunk-XTXYIISX.js +1104 -0
- package/dist/chunk-XV7NZL4B.js +57 -0
- package/dist/chunk-XWIZ6B5S.js +109 -0
- package/dist/chunk-XWLIKOBX.js +240 -0
- package/dist/chunk-XZOXEIN4.js +156 -0
- package/dist/chunk-XZRS7I7W.js +3673 -0
- package/dist/chunk-Y4ZDDHB6.js +44 -0
- package/dist/chunk-Y733RB7T.js +194 -0
- package/dist/chunk-YBHUB4XR.js +14931 -0
- package/dist/chunk-YKC75XK4.js +147 -0
- package/dist/chunk-YKMXFVK7.js +27 -0
- package/dist/chunk-YO5BAJ55.js +225 -0
- package/dist/chunk-YPDCLXNZ.js +568 -0
- package/dist/chunk-YSQPGVFK.js +116 -0
- package/dist/chunk-YTVVTIWJ.js +716 -0
- package/dist/chunk-YVCMDVBB.js +698 -0
- package/dist/chunk-YYTOA6DP.js +114 -0
- package/dist/chunk-Z5WGNULV.js +88 -0
- package/dist/chunk-Z6NGVVXG.js +66 -0
- package/dist/chunk-Z7CDQNH3.js +20 -0
- package/dist/chunk-ZH4G3FU5.js +187 -0
- package/dist/chunk-ZJB6SQPA.js +257 -0
- package/dist/chunk-ZL6E4HMY.js +42 -0
- package/dist/chunk-ZMLOC3DW.js +62 -0
- package/dist/chunk-ZORW64QH.js +101 -0
- package/dist/chunk-ZVVD2XGV.js +1369 -0
- package/dist/cli-utils-ER33ODC5.js +31 -0
- package/dist/cli-validation-6CHPTANV.js +146 -0
- package/dist/commit-utils-3STAY7C7.js +49 -0
- package/dist/compatibility-notice-IHNXR2JR.js +21 -0
- package/dist/compete-config-resolver-V3GDNJMM.js +125 -0
- package/dist/compete-results-XUM3PJHS.js +318 -0
- package/dist/competition-outcome-tracker-NWSMVUPG.js +62 -0
- package/dist/config-4HHE4OIK.js +238 -0
- package/dist/config-D6YAZASH.js +10 -0
- package/dist/config-MIPRDYYV.js +46 -0
- package/dist/config-audit-GA5DCUAI.js +371 -0
- package/dist/config-explain-4LMO556H.js +71 -0
- package/dist/config-loader-RGP634PC.js +51 -0
- package/dist/config-manager-J2UTO635.js +114 -0
- package/dist/config-merger-TVUJBZTS.js +14 -0
- package/dist/config-validator-H4ZVIE56.js +122 -0
- package/dist/cost-HSIV5U2Y.js +85 -0
- package/dist/data-migration-state-OAUL2WPQ.js +35 -0
- package/dist/db-migrator-NUOW5NKR.js +34 -0
- package/dist/default-paths-UILB62BN.js +49 -0
- package/dist/discovery-V6GYUJUC.js +53 -0
- package/dist/doctor-BBSMCDWE.js +271 -0
- package/dist/doctor-context-blocks-LPY75VZA.js +231 -0
- package/dist/doctor-instructions-import-JXHDDOE5.js +70 -0
- package/dist/doctor-purpose-6YJOXPBE.js +30 -0
- package/dist/domain-analyzer-S35ABUNA.js +48 -0
- package/dist/ensure-initialized-Q6PEU55O.js +78 -0
- package/dist/entry.js +922 -0
- package/dist/error-parser-core-MZFMFANN.js +70 -0
- package/dist/evaluation-context-GQBYDAEV.js +63 -0
- package/dist/evidence-plan-resolver-5FUAP3SA.js +111 -0
- package/dist/execution-data-writer-YCG5UH37.js +72 -0
- package/dist/execution-policy-applier-PWZM5LNA.js +63 -0
- package/dist/execution-preflight-DASJWWQF.js +223 -0
- package/dist/execution-roles-KNSNNB2D.js +112 -0
- package/dist/exit-code-error-QIY5DOKF.js +18 -0
- package/dist/external-temp-cleanup-CAW7LQ6R.js +360 -0
- package/dist/factory-YCYCB7AE.js +209 -0
- package/dist/file-utils-ZQYNBQBW.js +45 -0
- package/dist/flywheel-allowlist-revert-H22HA6JE.js +21 -0
- package/dist/flywheel-autoloop-executor-PDOASJEZ.js +316 -0
- package/dist/flywheel-autoloop-unverified-TOKYFCDC.js +36 -0
- package/dist/flywheel-competition-executor-YJUMMEJO.js +320 -0
- package/dist/flywheel-executor-JWU43KAY.js +437 -0
- package/dist/flywheel-git-isolation-FQ2TRWMB.js +56 -0
- package/dist/flywheel-manifest-HDPNMWWF.js +114 -0
- package/dist/flywheel-model-defaults-UHAKTZT3.js +110 -0
- package/dist/flywheel-preflight-III2C7TH.js +163 -0
- package/dist/flywheel-resume-2O45MS7Y.js +31 -0
- package/dist/flywheel-resume-execution-lease-P2BK257J.js +59 -0
- package/dist/flywheel-safety-AVAVFXIJ.js +19 -0
- package/dist/flywheel-scope-decision-ALJUUNGG.js +14 -0
- package/dist/get-telemetry-logger-MPDVO2JA.js +155 -0
- package/dist/git-message-style-KCXGMTDT.js +104 -0
- package/dist/guidance-profile-config-G3K5YQOO.js +113 -0
- package/dist/guidance-profile-renderer-TX4TNDFL.js +23 -0
- package/dist/identity-XLQJ4YJF.js +25 -0
- package/dist/index-query-6NUY4FKX.js +37 -0
- package/dist/index.js +85588 -0
- package/dist/indexer-DL54CM3K.js +44 -0
- package/dist/init-OUZ72344.js +245 -0
- package/dist/instructions-import-offer-NSYXSITC.js +363 -0
- package/dist/instructions-run-NBII7W36.js +114 -0
- package/dist/interrupted-work-E4TLKJLE.js +43 -0
- package/dist/invoke-provider-auth-NEWEIHCI.js +38 -0
- package/dist/judge-scoring.json +64 -0
- package/dist/lab-mode-YXQ2Y3NG.js +44 -0
- package/dist/lab-utils-5QAMDJR5.js +29 -0
- package/dist/linux-host-class-YDWQX65O.js +31 -0
- package/dist/llm-judge-executor-OJSNCTFJ.js +179 -0
- package/dist/local-ci-config-VZ4WWDT5.js +48 -0
- package/dist/local-executor-DCMDDRX2.js +280 -0
- package/dist/logger-5KNKS3O4.js +154 -0
- package/dist/matrix-prompt-builder-4ZBOGZSB.js +527 -0
- package/dist/matrix-result-parser-EZJM4YXP.js +14 -0
- package/dist/merge-batch-RTEEMVDB.js +313 -0
- package/dist/merge-batch-members-VIWGVRHP.js +24 -0
- package/dist/merge-queue-TIIUSOY6.js +126 -0
- package/dist/merge-queue-trust-DUNZ4J65.js +21 -0
- package/dist/metadata-UKSMWM6J.js +29 -0
- package/dist/model-catalog-readiness-R5KJBP5M.js +202 -0
- package/dist/model-invocations-db-XTUPPQ34.js +70 -0
- package/dist/model-resolver-JFZ2MHOJ.js +39 -0
- package/dist/model-resolver-SCQ57KAQ.js +217 -0
- package/dist/model-roles-D3OR4NAH.js +110 -0
- package/dist/monitor-F4SIU5G2.js +96 -0
- package/dist/nested-worktrees-2WUWQ75N.js +23 -0
- package/dist/next-S3IRLVER.js +96 -0
- package/dist/next-UKPFRXOO.js +148 -0
- package/dist/opportunistic-TL4S26VX.js +86 -0
- package/dist/optimization-config-resolver-NAEIYU6A.js +148 -0
- package/dist/package-HJR4QJT4.js +10 -0
- package/dist/parse-git-status-7PIYFPS2.js +21 -0
- package/dist/path-security-5WJSY56G.js +41 -0
- package/dist/paths-JUI7C4KU.js +45 -0
- package/dist/plan-backlog-list-fast-SSTQL5XP.js +89 -0
- package/dist/plan-backlog-show-fast-PFRAQ3JB.js +114 -0
- package/dist/plan-sprint-list-fast-HD2KBZSY.js +110 -0
- package/dist/plan-sprint-status-fast-YFYH7WQF.js +116 -0
- package/dist/plan-task-status-fast-JU5PNLUU.js +114 -0
- package/dist/plan-to-flywheel-PY5MSY2H.js +529 -0
- package/dist/preflight-PJHGTJNZ.js +12 -0
- package/dist/process-registry-B4ZUCN7T.js +28 -0
- package/dist/process-scanner-TU3QHWVB.js +23 -0
- package/dist/processes-6FHVGT72.js +28 -0
- package/dist/processes-json-fast-YWTMUWXB.js +72 -0
- package/dist/profile-HWTC56SG.js +209 -0
- package/dist/project-runtime-paths-2UQNG5Y4.js +41 -0
- package/dist/protected-branches-N36LDBFY.js +71 -0
- package/dist/provider-aware-resource-manager-YTFAHNGJ.js +40 -0
- package/dist/provider-matrix-2KO2V5OM.js +214 -0
- package/dist/provider-matrix-renderer-MEC3PER7.js +139 -0
- package/dist/provider-output-forwarding-2AHL7YMA.js +26 -0
- package/dist/provider-registry-WCZ65QHC.js +136 -0
- package/dist/provider-temp-cleanup-IUNPJCZF.js +14 -0
- package/dist/prune-engine-EOQVWEP6.js +448 -0
- package/dist/publication-turn-S42RZTQF.js +44 -0
- package/dist/quality-gate-JQMVCKOO.js +72 -0
- package/dist/quickstart-3O6FRCFB.js +105 -0
- package/dist/readiness-GW6ABRHB.js +139 -0
- package/dist/readiness-KFZCXDTT.js +215 -0
- package/dist/registry-7XG376SY.js +217 -0
- package/dist/repair-helpers-TTV5FEF4.js +117 -0
- package/dist/repo-root-YG6MQZDW.js +28 -0
- package/dist/resolution-engine-FFEK7HQ2.js +187 -0
- package/dist/resolve-provider-cli-ZEXVZKET.js +44 -0
- package/dist/restore-telemetry-db-E7BR5PO7.js +459 -0
- package/dist/routing-events-AW6SRZ6G.js +13 -0
- package/dist/routing-history-store-FMDDQL6W.js +39 -0
- package/dist/routing-planner-C6OHO3EY.js +221 -0
- package/dist/runner-KHDNQ5KU.js +1194 -0
- package/dist/runner-PIS2BW7Y.js +1801 -0
- package/dist/safety-E3JJVSFL.js +67 -0
- package/dist/safety-stanza-HE6GXP4G.js +49 -0
- package/dist/sandbox-7LBZC5PE.js +72 -0
- package/dist/sandbox-ASWCDYZL.js +80 -0
- package/dist/schema-extensions.sql +234 -0
- package/dist/security-JI22TBEB.js +17 -0
- package/dist/setup-bb-plugin-FQXLA76Y.js +531 -0
- package/dist/setup-claude-code-NF4ZSHVE.js +197 -0
- package/dist/setup-temp-cleanup-2APZ4HMA.js +29 -0
- package/dist/shared-utils-34HJZ6JX.js +40 -0
- package/dist/simple-artifact-goal-MQLDDMMX.js +29 -0
- package/dist/sprint-N7JFTEGL.js +403 -0
- package/dist/sprint-bridge-KJXIBNRJ.js +117 -0
- package/dist/sprint-completion-dependents-34SR7JVL.js +43 -0
- package/dist/sprint-execution-service-A6JPUBWY.js +376 -0
- package/dist/sprint-manager-MU2ZUWN2.js +140 -0
- package/dist/sqlite-timeout-config-U2CT4LKU.js +13 -0
- package/dist/sqlite-wrapper-FSGJ2QEW.js +19 -0
- package/dist/stale-cleanup-orchestrator-4X6324VF.js +71 -0
- package/dist/storage-access-I3V5LER7.js +31 -0
- package/dist/store-XVG64ZR2.js +25 -0
- package/dist/task-classifier-MN2DYE5R.js +558 -0
- package/dist/task-list-fast-7AT6LTTA.js +112 -0
- package/dist/task-manager-LHPBBRRE.js +136 -0
- package/dist/task-report-OLPAWBTK.js +64 -0
- package/dist/task-type-detector-6RG3YNZF.js +27 -0
- package/dist/task-type-resolver-EQHOUIHT.js +64 -0
- package/dist/telemetry-5VYSK772.js +212 -0
- package/dist/telemetry-health-tracker-4GFW2EMP.js +12 -0
- package/dist/telemetry-path-resolver-H3NFHHQY.js +34 -0
- package/dist/telemetry-reliability-URJDTNPZ.js +76 -0
- package/dist/transports-NREZQTJK.js +106 -0
- package/dist/unified-cost-tracker-5MTBJ2CL.js +59 -0
- package/dist/unified-state-cleanup-GGAXLHXF.js +292 -0
- package/dist/universal-cost-calculator-JTFEJVWK.js +70 -0
- package/dist/user-agents-QLIGPLP2.js +30 -0
- package/dist/variant-execution-I4ZZUAWY.js +319 -0
- package/dist/variant-opt-parser-JHCXKY2K.js +251 -0
- package/dist/variant-request-input-PL37N3AN.js +11 -0
- package/dist/variant-state-cleanup-KHMXRBZN.js +287 -0
- package/dist/variant-worker-COB5YTJX.js +4517 -0
- package/dist/variant-worker.js +26 -0
- package/dist/variants-XGDSXYG3.js +267 -0
- package/dist/verification-command-YSPU4VBH.js +66 -0
- package/dist/verify-command-timeout-DQUYH33Z.js +11 -0
- package/dist/verify-commands-LOHMOFKC.js +65 -0
- package/dist/warning-JSKSFKBT.js +13 -0
- package/dist/work-edge-K65NHVWY.js +50 -0
- package/dist/work-item-writer-KY5ZWZWW.js +30 -0
- package/dist/worker-JNXXEIT6.js +1504 -0
- package/dist/worker.js +21 -0
- package/dist/workspace-tree-identity-JO5PSKTW.js +52 -0
- package/dist/worktree-environment-WTVABAQW.js +64 -0
- package/dist/worktree-metrics-VZRQI26T.js +66 -0
- package/dist/writeback-TQFQBJNU.js +50 -0
- package/docs/CLI_REFERENCE.md +8287 -0
- package/docs/PROVIDER_SETUP.md +1737 -0
- package/docs/README.md +96 -0
- package/docs/TROUBLESHOOTING.md +2209 -0
- package/docs/getting-started/QUICK_START.md +260 -0
- package/docs/getting-started/README.md +198 -0
- package/docs/getting-started/SETUP.md +25 -0
- package/docs/reference/AGENT_CONTEXT.md +84 -0
- package/docs/reference/DELIVERY_ONBOARDING.md +198 -0
- package/docs/reference/PROVIDER_RELEASE_TIERS.md +34 -0
- package/docs/reference/SECURITY.md +291 -0
- package/docs/reference/TELEMETRY_PRIVACY.md +259 -0
- package/integrations/bb-plugin-build/README.md +391 -0
- package/integrations/bb-plugin-build/app.css +431 -0
- package/integrations/bb-plugin-build/app.tsx +6210 -0
- package/integrations/bb-plugin-build/package.json +45 -0
- package/integrations/bb-plugin-build/server.ts +488 -0
- package/integrations/bb-plugin-build/src/adapter.ts +3672 -0
- package/integrations/bb-plugin-build/src/backlog-authoring-model.ts +150 -0
- package/integrations/bb-plugin-build/src/backlog-authoring-schema.ts +458 -0
- package/integrations/bb-plugin-build/src/backlog-authoring-service.ts +467 -0
- package/integrations/bb-plugin-build/src/backlog-authoring-view.ts +1025 -0
- package/integrations/bb-plugin-build/src/command-evidence-schema.ts +13 -0
- package/integrations/bb-plugin-build/src/competition-defaults-schema.ts +122 -0
- package/integrations/bb-plugin-build/src/competition-defaults-service.ts +105 -0
- package/integrations/bb-plugin-build/src/competition-defaults-view.ts +138 -0
- package/integrations/bb-plugin-build/src/contract.ts +718 -0
- package/integrations/bb-plugin-build/src/execution-activity-view.ts +98 -0
- package/integrations/bb-plugin-build/src/finalize-model.ts +205 -0
- package/integrations/bb-plugin-build/src/finalize-schema.ts +150 -0
- package/integrations/bb-plugin-build/src/finalize-service.ts +330 -0
- package/integrations/bb-plugin-build/src/finalize-view.ts +159 -0
- package/integrations/bb-plugin-build/src/judge-operations-readback.ts +303 -0
- package/integrations/bb-plugin-build/src/judge-operations-schema.ts +33 -0
- package/integrations/bb-plugin-build/src/judge-operations-view.ts +459 -0
- package/integrations/bb-plugin-build/src/model.ts +1318 -0
- package/integrations/bb-plugin-build/src/monitor-service.ts +233 -0
- package/integrations/bb-plugin-build/src/panel-read-ux.ts +97 -0
- package/integrations/bb-plugin-build/src/patch-preview-schema.ts +166 -0
- package/integrations/bb-plugin-build/src/patch-preview-service.ts +480 -0
- package/integrations/bb-plugin-build/src/patch-preview-view.ts +109 -0
- package/integrations/bb-plugin-build/src/planning-readback.ts +228 -0
- package/integrations/bb-plugin-build/src/planning-service.ts +647 -0
- package/integrations/bb-plugin-build/src/planning-sync-evidence.ts +37 -0
- package/integrations/bb-plugin-build/src/planning-workspace-readback.ts +33 -0
- package/integrations/bb-plugin-build/src/planning-workspace-schema.ts +131 -0
- package/integrations/bb-plugin-build/src/planning-workspace.ts +333 -0
- package/integrations/bb-plugin-build/src/poll-handoff.ts +136 -0
- package/integrations/bb-plugin-build/src/project-target-server.ts +21 -0
- package/integrations/bb-plugin-build/src/project-target.ts +45 -0
- package/integrations/bb-plugin-build/src/reference-index.ts +218 -0
- package/integrations/bb-plugin-build/src/repository-identity.ts +17 -0
- package/integrations/bb-plugin-build/src/repository-schema.ts +30 -0
- package/integrations/bb-plugin-build/src/result-explorer-view.ts +597 -0
- package/integrations/bb-plugin-build/src/result-readback-model.ts +163 -0
- package/integrations/bb-plugin-build/src/result-readback-schema.ts +319 -0
- package/integrations/bb-plugin-build/src/result-readback-service.ts +333 -0
- package/integrations/bb-plugin-build/src/run-page-view.ts +332 -0
- package/integrations/bb-plugin-build/src/setup-config-schema.ts +293 -0
- package/integrations/bb-plugin-build/src/setup-config-service.ts +620 -0
- package/integrations/bb-plugin-build/src/setup-config-view.ts +388 -0
- package/integrations/bb-plugin-build/src/sprint-close-model.ts +150 -0
- package/integrations/bb-plugin-build/src/sprint-close-schema.ts +128 -0
- package/integrations/bb-plugin-build/src/sprint-close-service.ts +293 -0
- package/integrations/bb-plugin-build/src/sprint-close-view.ts +116 -0
- package/integrations/bb-plugin-build/src/sprint-composition-model.ts +709 -0
- package/integrations/bb-plugin-build/src/sprint-composition-readback.ts +231 -0
- package/integrations/bb-plugin-build/src/sprint-composition-schema.ts +597 -0
- package/integrations/bb-plugin-build/src/sprint-composition-service.ts +773 -0
- package/integrations/bb-plugin-build/src/sprint-composition-view.ts +1221 -0
- package/integrations/bb-plugin-build/src/sprint-execution-schema.ts +188 -0
- package/integrations/bb-plugin-build/src/sprint-execution-service.ts +289 -0
- package/integrations/bb-plugin-build/src/sprint-execution-view.ts +54 -0
- package/integrations/bb-plugin-build/src/task-authoring-model.ts +563 -0
- package/integrations/bb-plugin-build/src/task-authoring-schema.ts +629 -0
- package/integrations/bb-plugin-build/src/task-authoring-service.ts +842 -0
- package/integrations/bb-plugin-build/src/task-authoring-view.ts +1227 -0
- package/integrations/bb-plugin-build/src/task-catalog-schema.ts +46 -0
- package/integrations/bb-plugin-build/src/task-catalog-service.ts +44 -0
- package/integrations/bb-plugin-build/src/task-detail-readback.ts +56 -0
- package/integrations/bb-plugin-build/src/task-detail-schema.ts +171 -0
- package/integrations/bb-plugin-build/src/task-navigation.ts +446 -0
- package/integrations/bb-plugin-build/src/workbench-route.ts +74 -0
- package/package.json +306 -4
- package/schemas/README.md +80 -0
- package/schemas/build.config.schema.json +2110 -0
- package/schemas/config-v1.schema.json +136 -0
- package/schemas/execution-config.schema.json +47 -0
- package/schemas/judge-scoring.schema.json +257 -0
- package/schemas/provider-config.schema.json +179 -0
- package/schemas/telemetry-config.schema.json +79 -0
- package/schemas/user-preferences.schema.json +141 -0
- package/scripts/assert-node-runtime.mjs +146 -0
- package/scripts/preflight-native.mjs +49 -0
- package/scripts/setup-git-hooks.mjs +39 -0
- package/scripts/sync.sh +2871 -0
- package/scripts/write-node-launcher.sh +138 -0
- package/src/resources/gemini/slash-packs/default/plan.toml +15 -0
- package/src/resources/gemini/slash-packs/default/summary.toml +16 -0
- package/src/resources/gemini/slash-packs/default/tests.toml +16 -0
- package/templates/.build-project/README.md +41 -0
- package/templates/.build-project/agents/README.md +50 -0
- package/templates/.build-project/agents/architect.md +10 -0
- package/templates/.build-project/agents/code-reviewer.md +10 -0
- package/templates/.build-project/agents/debugger.md +10 -0
- package/templates/.build-project/agents/documenter.md +10 -0
- package/templates/.build-project/agents/test-automator.md +10 -0
- package/templates/.build-project/config/build.config.jsonc +64 -0
- package/templates/.build-project/config/project-context.template.json +6 -0
- package/templates/.build-project/config/task-type-aliases.presets/kanban.yaml +14 -0
- package/templates/.build-project/config/task-type-aliases.presets/scrum.yaml +17 -0
- package/templates/.build-project/config/task-type-aliases.presets/xp.yaml +12 -0
- package/templates/.build-project/config/task-type-aliases.yaml +29 -0
- package/templates/.build-project/gitignore.template +70 -0
- package/templates/.build-project/task-types/analysis.yaml +38 -0
- package/templates/.build-project/task-types/architecture.yaml +35 -0
- package/templates/.build-project/task-types/doc.yaml +34 -0
- package/templates/.build-project/task-types/feature.yaml +22 -0
- package/templates/.build-project/task-types/general.yaml +4 -0
- package/templates/.build-project/task-types/security.yaml +38 -0
- package/templates/AGENTS.template.md +85 -0
- package/templates/CLAUDE.template.md +1 -0
- package/templates/GEMINI.template.md +1 -0
- package/templates/builtin-workflows/code-review.yaml +73 -0
- package/templates/builtin-workflows/skills/code-review/SKILL.md +61 -0
- package/templates/builtin-workflows/skills/execution-contract-analysis/SKILL.md +24 -0
- package/templates/builtin-workflows/skills/execution-contract-code/SKILL.md +19 -0
- package/templates/builtin-workflows/skills/execution-contract-structured/SKILL.md +17 -0
- package/templates/ci/incident-intake.mjs +787 -0
- package/templates/ci/incidents.yml.template +103 -0
- package/templates/ci/node.yml.template +17 -0
- package/templates/ci/python.yml.template +17 -0
- package/templates/guard-kit/GUARD_SETUP.md.template +258 -0
- package/templates/guard-kit/build-guard.yml.template +189 -0
- package/templates/guard-kit/check.mjs.template +932 -0
- package/templates/guard-kit/config.json.template +7 -0
- package/templates/guard-kit/policy.json.template +1 -0
- package/templates/profiles/README.md +57 -0
- package/templates/profiles/frontier-claude.json +23 -0
- package/templates/profiles/frontier-codex.json +23 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Generated locally after review. Publish to activate record-only incident intake.
|
|
2
|
+
# Optional dispatch requires an owner-provided executor accepting the four documented inputs.
|
|
3
|
+
name: Build CI incidents
|
|
4
|
+
on:
|
|
5
|
+
workflow_run:
|
|
6
|
+
workflows: ['REVIEWED_BACKGROUND_WORKFLOW']
|
|
7
|
+
types: [completed]
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
inputs:
|
|
10
|
+
incident_number:
|
|
11
|
+
required: true
|
|
12
|
+
type: string
|
|
13
|
+
expected_attempt:
|
|
14
|
+
required: true
|
|
15
|
+
type: string
|
|
16
|
+
executor_run_id:
|
|
17
|
+
required: true
|
|
18
|
+
type: string
|
|
19
|
+
outcome:
|
|
20
|
+
required: true
|
|
21
|
+
type: choice
|
|
22
|
+
options: [retry, needs-decision, candidate]
|
|
23
|
+
repair_pr:
|
|
24
|
+
required: false
|
|
25
|
+
type: string
|
|
26
|
+
repair_sha:
|
|
27
|
+
required: false
|
|
28
|
+
type: string
|
|
29
|
+
permissions:
|
|
30
|
+
contents: read
|
|
31
|
+
actions: read
|
|
32
|
+
issues: write
|
|
33
|
+
jobs:
|
|
34
|
+
intake:
|
|
35
|
+
if: github.event_name == 'workflow_run'
|
|
36
|
+
runs-on: ubuntu-latest
|
|
37
|
+
concurrency:
|
|
38
|
+
group: build-incident-dispatch
|
|
39
|
+
cancel-in-progress: false
|
|
40
|
+
queue: max
|
|
41
|
+
steps:
|
|
42
|
+
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09
|
|
43
|
+
with:
|
|
44
|
+
ref: ${{ github.event.repository.default_branch }}
|
|
45
|
+
persist-credentials: false
|
|
46
|
+
- uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444
|
|
47
|
+
with:
|
|
48
|
+
node-version: '24'
|
|
49
|
+
- run: node .build-project/ci/incident-intake.mjs intake
|
|
50
|
+
env:
|
|
51
|
+
GITHUB_TOKEN: ${{ github.token }}
|
|
52
|
+
reconcile:
|
|
53
|
+
if: github.event_name == 'workflow_dispatch'
|
|
54
|
+
runs-on: ubuntu-latest
|
|
55
|
+
permissions:
|
|
56
|
+
contents: read
|
|
57
|
+
actions: read
|
|
58
|
+
issues: write
|
|
59
|
+
pull-requests: read
|
|
60
|
+
checks: read
|
|
61
|
+
concurrency:
|
|
62
|
+
group: build-incident-dispatch
|
|
63
|
+
cancel-in-progress: false
|
|
64
|
+
queue: max
|
|
65
|
+
steps:
|
|
66
|
+
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09
|
|
67
|
+
with:
|
|
68
|
+
ref: ${{ github.event.repository.default_branch }}
|
|
69
|
+
persist-credentials: false
|
|
70
|
+
- uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444
|
|
71
|
+
with:
|
|
72
|
+
node-version: '24'
|
|
73
|
+
- run: node .build-project/ci/incident-intake.mjs reconcile
|
|
74
|
+
env:
|
|
75
|
+
GITHUB_TOKEN: ${{ github.token }}
|
|
76
|
+
BUILD_REPAIR_WORKFLOW: ${{ vars.BUILD_REPAIR_WORKFLOW }}
|
|
77
|
+
dispatch:
|
|
78
|
+
needs: [intake, reconcile]
|
|
79
|
+
if: always() && (needs.intake.result == 'success' || needs.reconcile.result == 'success') && vars.BUILD_REPAIR_DISPATCH_ENABLED == 'true' && vars.BUILD_REPAIR_CALLBACK_CONFIGURED == 'true' && vars.BUILD_REPAIR_WORKFLOW != ''
|
|
80
|
+
runs-on: ubuntu-latest
|
|
81
|
+
# GitHub.com queues at most 100 waiting jobs; incident issues remain durable beyond this bound.
|
|
82
|
+
concurrency:
|
|
83
|
+
group: build-incident-dispatch
|
|
84
|
+
cancel-in-progress: false
|
|
85
|
+
queue: max
|
|
86
|
+
permissions:
|
|
87
|
+
contents: read
|
|
88
|
+
actions: write
|
|
89
|
+
issues: write
|
|
90
|
+
steps:
|
|
91
|
+
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09
|
|
92
|
+
with:
|
|
93
|
+
ref: ${{ github.event.repository.default_branch }}
|
|
94
|
+
persist-credentials: false
|
|
95
|
+
- uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444
|
|
96
|
+
with:
|
|
97
|
+
node-version: '24'
|
|
98
|
+
- run: node .build-project/ci/incident-intake.mjs dispatch
|
|
99
|
+
env:
|
|
100
|
+
GITHUB_TOKEN: ${{ github.token }}
|
|
101
|
+
BUILD_REPAIR_DISPATCH_ENABLED: ${{ vars.BUILD_REPAIR_DISPATCH_ENABLED }}
|
|
102
|
+
BUILD_REPAIR_WORKFLOW: ${{ vars.BUILD_REPAIR_WORKFLOW }}
|
|
103
|
+
BUILD_REPAIR_CALLBACK_CONFIGURED: ${{ vars.BUILD_REPAIR_CALLBACK_CONFIGURED }}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
name: Build CI
|
|
2
|
+
on:
|
|
3
|
+
pull_request:
|
|
4
|
+
push:
|
|
5
|
+
branches: [__DEFAULT_BRANCH__]
|
|
6
|
+
permissions:
|
|
7
|
+
contents: read
|
|
8
|
+
concurrency:
|
|
9
|
+
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number || github.run_id }}
|
|
10
|
+
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
|
11
|
+
jobs:
|
|
12
|
+
validation:
|
|
13
|
+
name: Build CI
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09
|
|
17
|
+
- uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
name: Build CI
|
|
2
|
+
on:
|
|
3
|
+
pull_request:
|
|
4
|
+
push:
|
|
5
|
+
branches: [__DEFAULT_BRANCH__]
|
|
6
|
+
permissions:
|
|
7
|
+
contents: read
|
|
8
|
+
concurrency:
|
|
9
|
+
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number || github.run_id }}
|
|
10
|
+
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
|
11
|
+
jobs:
|
|
12
|
+
validation:
|
|
13
|
+
name: Build CI
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09
|
|
17
|
+
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
# Build Guard setup playbook (kit version {{KIT_VERSION}})
|
|
2
|
+
|
|
3
|
+
## What this is
|
|
4
|
+
|
|
5
|
+
This file is the PATH; `build guard verify` is the GROUND TRUTH. Follow these
|
|
6
|
+
steps, in order, until `build guard verify` reports `configured` (all local and
|
|
7
|
+
GitHub criteria pass) or `proven-gated` (a live rejection was also witnessed).
|
|
8
|
+
Re-run `build guard verify` after every step and let its scorecard — not this
|
|
9
|
+
document — tell you what is still missing.
|
|
10
|
+
|
|
11
|
+
This file is generated by Build. It is overwritten on every
|
|
12
|
+
`build init --guardrails` install/upgrade/reinstall. It is NOT hash-tracked, so
|
|
13
|
+
you may annotate it freely without tripping a tamper check, but your notes are
|
|
14
|
+
lost on the next upgrade — keep durable notes elsewhere.
|
|
15
|
+
|
|
16
|
+
## The criteria (C1..C7)
|
|
17
|
+
|
|
18
|
+
`build guard verify` evaluates seven criteria, in order. Order is load-bearing:
|
|
19
|
+
later criteria depend on earlier ones (C5/C6 need the check identity from C4 and
|
|
20
|
+
the remote default branch from C2; C7 needs the identity from C4).
|
|
21
|
+
|
|
22
|
+
| ID | Meaning (one line) |
|
|
23
|
+
|----|--------------------|
|
|
24
|
+
| C1 | Kit installed and untampered (`.build-project/guard/` present, hashes match the lock). |
|
|
25
|
+
| C2 | Gate present on the remote default branch (`check.mjs` committed on `main`). |
|
|
26
|
+
| C3 | Local gate actually gates (self-test: the committed `check.mjs` rejects a planted violation). |
|
|
27
|
+
| C4 | A single gate-check identity is derivable from your workflows (one job, correct triggers, no `continue-on-error`). |
|
|
28
|
+
| C5 | Green evidence for the current default-branch head or the merged PR that produced it. |
|
|
29
|
+
| C6 | Branch protection (or a ruleset) REQUIRES that check context, ideally with up-to-date-branch strictness. |
|
|
30
|
+
| C7 | Witnessed live rejection: a canary PR was actually blocked by the check (the proof). |
|
|
31
|
+
|
|
32
|
+
### Verdict ladder
|
|
33
|
+
|
|
34
|
+
- `not-gated` — a criterion in C1..C6 hard-FAILED, or a canary was NOT rejected
|
|
35
|
+
(C7 fail). `build guard verify` exits 1.
|
|
36
|
+
- `partially-gated` — no hard failure, but at least one C1..C6 criterion is a
|
|
37
|
+
`gap` (could not be verified: missing `gh`, no network, opaque ruleset
|
|
38
|
+
semantics, or skipped via a flag). Exits 3.
|
|
39
|
+
- `configured` — C1..C6 all pass. C7 may be a gap. This is the normal "the gate
|
|
40
|
+
is wired and required" target. Exits 0.
|
|
41
|
+
- `proven-gated` — C1..C6 all pass AND C7 passes (a canary was witnessed being
|
|
42
|
+
rejected). The strongest verdict. Exits 0.
|
|
43
|
+
|
|
44
|
+
A criterion that cannot be verified is a `gap`, never a `pass` — the scorecard
|
|
45
|
+
fails closed. `configured` and `proven-gated` are unreachable while any C1..C6
|
|
46
|
+
criterion is a gap (for example, an uninterpretable ruleset forces C6 to a gap).
|
|
47
|
+
|
|
48
|
+
## Ordered steps
|
|
49
|
+
|
|
50
|
+
Do these in order. Skipping ahead — especially requiring the check (C6) before
|
|
51
|
+
it has ever reported green (C5) — deadlocks every PR.
|
|
52
|
+
|
|
53
|
+
### Step 1 — Install the kit (C1)
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
build init --guardrails
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
This renders `.build-project/guard/` (`check.mjs`, `config.json`, `policy.json`,
|
|
60
|
+
`checks.lock`, and this file). `policy.json` carries the repo's `git.attribution`
|
|
61
|
+
mode; change it with `build config set git.attribution <allow|human-only>`
|
|
62
|
+
followed by `build guard sync`, never by hand. In ordinary repositories it also installs one
|
|
63
|
+
repo-local pre-commit wrapper that runs the built-in secret catalog against the
|
|
64
|
+
staged index. Existing hooks are preserved as a sidecar. Build does not rewrite
|
|
65
|
+
global, Husky-generated, or tracked repository hooks; those repositories keep
|
|
66
|
+
their existing local hook policy and still use the hosted Guard.
|
|
67
|
+
|
|
68
|
+
The local scan is a fast accident-prevention layer, not a replacement for a
|
|
69
|
+
deeper scanner such as Gitleaks or TruffleHog. If Node is temporarily unavailable,
|
|
70
|
+
use `SKIP_BUILD_GUARD_SECRET_SCAN=1 git commit ...`; `--no-verify` bypasses every
|
|
71
|
+
pre-commit hook and should be reserved for recovery. Confirm C1:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
build guard verify
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
C1 should read `OK: C1 Kit installed and untampered`. If it reports `absent`,
|
|
78
|
+
run the install again; if `tampered`/`partial`, run
|
|
79
|
+
`build init --guardrails --reinstall-guard`.
|
|
80
|
+
|
|
81
|
+
### Step 2 — Commit the gate on a branch
|
|
82
|
+
|
|
83
|
+
Create a normal working branch and commit the whole guard directory:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
git checkout -b add-build-guard
|
|
87
|
+
git add .build-project/guard
|
|
88
|
+
git commit -m "Add Build guard kit"
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
The gate only works once `check.mjs` is COMMITTED — the CI trusted-base pattern
|
|
92
|
+
reads it from the base branch's tree. A repo-wide `.build-project/` gitignore silently
|
|
93
|
+
swallows it; make sure `.build-project/guard/check.mjs` is tracked.
|
|
94
|
+
|
|
95
|
+
### Step 3 — Add the reference workflow (C4)
|
|
96
|
+
|
|
97
|
+
Print the reference GitHub Actions workflow and save it:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
build guard print-ci > .github/workflows/build-guard.yml
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
(You can also copy `build-guard.yml.template` from the kit and substitute the
|
|
104
|
+
kit version yourself.) Adapt ONLY the CUSTOMIZE-FREELY regions marked in the
|
|
105
|
+
file (runner label, timeout, optional path-filter additions). Do NOT change the
|
|
106
|
+
MUST-NOT-CHANGE regions: `permissions: contents: read`, the trusted-base
|
|
107
|
+
extraction, the `test -s` non-empty guard, `fetch-depth: 0`, both triggers
|
|
108
|
+
(`pull_request_target` and `merge_group`), checkout of the base branch (do
|
|
109
|
+
not set checkout `ref:` to the PR head), and the literal job
|
|
110
|
+
`name: Build Guard` (that name is the required status-check context).
|
|
111
|
+
Commit it alongside the gate.
|
|
112
|
+
|
|
113
|
+
### Step 4 — Land the gate + workflow on the default branch (C2, C5)
|
|
114
|
+
|
|
115
|
+
Open a PR from your branch and merge it into the default branch through your
|
|
116
|
+
existing flow. This satisfies C2. The introducing PR cannot use a
|
|
117
|
+
`pull_request_target` workflow absent from its base, and the reference workflow
|
|
118
|
+
has no default-branch push trigger.
|
|
119
|
+
|
|
120
|
+
### Step 5 — Confirm green evidence for the current default branch (C5)
|
|
121
|
+
|
|
122
|
+
Use the next ordinary PR after installation: its base now contains the workflow.
|
|
123
|
+
Wait for its "Build Guard" check to pass, then merge through the existing flow.
|
|
124
|
+
A small verification PR can establish this first run if no ordinary change is
|
|
125
|
+
ready. After that merge, run:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
build guard verify
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
C5 accepts a successful check on the CURRENT default-branch head or on the
|
|
132
|
+
merged PR that produced it. An unrelated historical green run is insufficient.
|
|
133
|
+
If C5 reports no evidence, inspect the associated PR and workflow event; waiting
|
|
134
|
+
alone does not create a missing run. Require the check only after C5 passes.
|
|
135
|
+
|
|
136
|
+
For a PR head that remains "Expected — Waiting for status", diagnose the exact
|
|
137
|
+
SHA without changing the C1..C7 verdict:
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
build guard verify --head-sha <40-character-head-sha>
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
The diagnostic distinguishes absent, queued, running, completed, and stale-head
|
|
144
|
+
state. If an open PR still has no event or app-bound check after 15 minutes,
|
|
145
|
+
close and reopen that PR to retrigger the native `pull_request_target`
|
|
146
|
+
workflow on the same SHA. Do not publish a replacement check manually; the
|
|
147
|
+
GitHub Actions-owned workflow remains the only attestation producer.
|
|
148
|
+
|
|
149
|
+
### Step 6 — Require the check in branch protection (C6)
|
|
150
|
+
|
|
151
|
+
ONLY after C5 is green. Requiring a check that has never reported deadlocks every
|
|
152
|
+
PR ("Expected — Waiting for status" forever). Require the exact context string
|
|
153
|
+
`Build Guard` with up-to-date-branch strictness.
|
|
154
|
+
|
|
155
|
+
UI path: Repository Settings -> Branches (or Rules -> Rulesets) -> the default
|
|
156
|
+
branch rule -> "Require status checks to pass before merging" -> add
|
|
157
|
+
`Build Guard` -> also enable "Require branches to be up to date before merging".
|
|
158
|
+
|
|
159
|
+
Add the context to the existing policy. Preserve all other required checks
|
|
160
|
+
(including `Build Local CI`, if present), expected check sources, review
|
|
161
|
+
requirements, push restrictions, and administrator policy. Select GitHub Actions
|
|
162
|
+
as the expected source for `Build Guard` where the UI supports it. A full
|
|
163
|
+
branch-protection replacement can remove those existing controls; use the
|
|
164
|
+
additive UI procedure above.
|
|
165
|
+
|
|
166
|
+
Strictness matters: without "up to date before merging" a PR can merge green
|
|
167
|
+
against a stale base and break the gate on the new head (the stale-green-merge
|
|
168
|
+
race). Re-run `build guard verify`; C6 should pass and the verdict should reach
|
|
169
|
+
`configured`.
|
|
170
|
+
|
|
171
|
+
### Step 7 — Optional live proof canary (C7)
|
|
172
|
+
|
|
173
|
+
This upgrades `configured` to `proven-gated` by WITNESSING a real rejection.
|
|
174
|
+
|
|
175
|
+
1. Branch: `git checkout -b build-guard-canary/<date>` (the
|
|
176
|
+
`build-guard-canary/` prefix lets `build guard verify` auto-discover it).
|
|
177
|
+
2. Add a file whose path matches an artifact deny glob (see
|
|
178
|
+
`defaultDenyPaths` / `extraDenyPaths`; a path listed in `config.json`
|
|
179
|
+
`allowPaths` is exempt from the defaults) — for example a committed
|
|
180
|
+
`dist/` build output. NEVER use a secret-shaped string: push protection would
|
|
181
|
+
reject the push and page your security team, and the point is to test the
|
|
182
|
+
gate, not the platform.
|
|
183
|
+
3. Open it as a DRAFT PR. Expect the "Build Guard" check to FAIL within
|
|
184
|
+
minutes. If it PASSES, your gate is broken — return to Step 3 and check the
|
|
185
|
+
workflow's trusted-base extraction and triggers.
|
|
186
|
+
4. Close the PR UNMERGED (never merge a canary).
|
|
187
|
+
5. Prove it:
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
build guard verify --canary-pr <n>
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
With C1..C6 already passing, C7 now passes and the verdict is `proven-gated`.
|
|
194
|
+
|
|
195
|
+
## Exit-code contracts
|
|
196
|
+
|
|
197
|
+
The gate (`check.mjs`, run in CI):
|
|
198
|
+
|
|
199
|
+
- `0` — clean.
|
|
200
|
+
- `1` — a HARD finding (secret in an added line, a denied artifact path, or AI
|
|
201
|
+
attribution under `human-only`). Blocks the merge.
|
|
202
|
+
- `2` — ONLY guard-machinery changed under `.build-project/guard/` and no hard finding.
|
|
203
|
+
Softer than 1, but the reference workflow still blocks on it: it means "a human should review the
|
|
204
|
+
gate change." Legitimate kit-upgrade PRs are the expected exit-2 case. A hard
|
|
205
|
+
finding always dominates, so exit 1 wins when both are present. See the
|
|
206
|
+
[two-context/review alternative](#two-context-split-for-automerge-teams) before
|
|
207
|
+
choosing a different maintenance policy; human review alone does not override a
|
|
208
|
+
failing required check.
|
|
209
|
+
|
|
210
|
+
`build guard verify` (the scorecard):
|
|
211
|
+
|
|
212
|
+
- `0` — `configured` or `proven-gated`.
|
|
213
|
+
- `3` — `partially-gated` (at least one unverifiable gap, no hard failure).
|
|
214
|
+
- `1` — `not-gated` (a criterion failed, or a canary was not rejected).
|
|
215
|
+
|
|
216
|
+
## Troubleshooting
|
|
217
|
+
|
|
218
|
+
| Scorecard message (paraphrased) | Next action |
|
|
219
|
+
|---------------------------------|-------------|
|
|
220
|
+
| C1 state is `absent` | Run `build init --guardrails`. |
|
|
221
|
+
| C1 state is `tampered`/`partial` | Run `build init --guardrails --reinstall-guard`; `config.json` is preserved. |
|
|
222
|
+
| C2 gate not on the default branch | Merge the branch from Step 2 to the default branch (Step 4). |
|
|
223
|
+
| C3 self-test could not run / skipped via `--no-selftest` | Run in a full checkout with Node >= 24; drop `--no-selftest`. |
|
|
224
|
+
| C4 "no GitHub Actions workflows found" | Add the workflow from Step 3 (`build guard print-ci`). |
|
|
225
|
+
| C4 flags `continue-on-error` / missing trigger / dead extraction | Fix the workflow's MUST-NOT-CHANGE regions; do not soften the gate. |
|
|
226
|
+
| C5 "has never reported on the current default-branch head" | Complete the post-install PR flow in Step 5; do not require the check yet. |
|
|
227
|
+
| C5 "not green ... latest conclusion: failure" | Investigate the failing run; the gate found a real problem or the workflow is misconfigured. |
|
|
228
|
+
| C6 "does not require 'Build Guard'" | Require the context in branch protection / a ruleset (Step 6). |
|
|
229
|
+
| C6 "strict ... enforcement is OFF" | Enable "Require branches to be up to date before merging" / `strict_required_status_checks_policy=true`. |
|
|
230
|
+
| C6 "semantics could not be fully interpreted" | Inspect the ruleset with the `gh api` command shown; a merge-queue-only ruleset with no visible required checks reads as a gap. |
|
|
231
|
+
| C7 "no canary proof recorded" | Run the Step 7 canary (an artifact-path violation, never a secret), or pass `--canary-pr <n>`. |
|
|
232
|
+
| C7 "was merged — the gate did not block it" | The gate did not reject the canary: it is broken. Return to Step 3. |
|
|
233
|
+
|
|
234
|
+
## Optional patterns
|
|
235
|
+
|
|
236
|
+
### Two-context split for automerge teams
|
|
237
|
+
|
|
238
|
+
If you want routine PRs to automerge but still block on gate-machinery changes,
|
|
239
|
+
split the single check into two contexts: one required check that runs the gate
|
|
240
|
+
and treats only hard findings (exit 1) as failing, and a second required check
|
|
241
|
+
(or a `CODEOWNERS`-gated review) for guard-directory changes (exit 2). Require
|
|
242
|
+
both; automation may merge when the hard-finding context is green while
|
|
243
|
+
exit-2 PRs still wait for a human. Keep the trusted-base extraction in both.
|
|
244
|
+
|
|
245
|
+
## Non-GitHub CI
|
|
246
|
+
|
|
247
|
+
The trusted-base pattern is portable. On another CI platform, replicate the
|
|
248
|
+
reference workflow's shell step: fail closed (`set -euo pipefail`), fetch the
|
|
249
|
+
base branch, `git show base:.build-project/guard/check.mjs > "$PRIVATE_TMP/guard-check.mjs"`
|
|
250
|
+
(use a private per-run temp path, never a predictable shared `/tmp` filename),
|
|
251
|
+
`test -s` it, then run it with `BUILD_GUARD_DIR="$PWD/.build-project/guard"`. Enforce
|
|
252
|
+
the equivalent of a required, up-to-date status check in your platform's
|
|
253
|
+
merge-protection settings.
|
|
254
|
+
|
|
255
|
+
Criteria C5, C6, and C7 use the GitHub API (via `gh`) and will report `gap` off
|
|
256
|
+
GitHub, so `configured`/`proven-gated` are unreachable there — that is expected,
|
|
257
|
+
not a failure. Rely on the local criteria (C1..C4) plus your platform's own
|
|
258
|
+
equivalents of the green-run, required-check, and rejection-proof gates.
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
# Build Guard reference workflow (kit version {{KIT_VERSION}}).
|
|
2
|
+
#
|
|
3
|
+
# Emitted by `build guard print-ci`. This is NOT installed into your repo
|
|
4
|
+
# automatically: copy it to .github/workflows/build-guard.yml, commit it on a
|
|
5
|
+
# branch, land it on your default branch, confirm one green run, and only then
|
|
6
|
+
# require the "Build Guard" check in branch protection. The ordered procedure
|
|
7
|
+
# and the criteria this satisfies (C4..C7) live in .build-project/guard/GUARD_SETUP.md.
|
|
8
|
+
#
|
|
9
|
+
# ---------------------------------------------------------------------------
|
|
10
|
+
# MUST NOT CHANGE (security-critical — editing these breaks the guarantee):
|
|
11
|
+
# * permissions: contents: read (least privilege; do not widen).
|
|
12
|
+
# * The trusted-base extraction: the gate is run from the BASE branch's copy
|
|
13
|
+
# of check.mjs, not the PR's copy. A PR could otherwise strip its own
|
|
14
|
+
# guard-integrity check before it runs. Keep the `git show ... > file`,
|
|
15
|
+
# the `test -s` non-empty guard, and `set -euo pipefail` exactly as-is.
|
|
16
|
+
# * fetch-depth: 0 (the gate needs history to find the merge base; a shallow
|
|
17
|
+
# clone makes it fail closed instead of passing silently).
|
|
18
|
+
# * Both triggers: pull_request_target AND merge_group. pull_request_target
|
|
19
|
+
# is what makes GitHub load THIS workflow file from the base/default
|
|
20
|
+
# branch; `on: pull_request` would load the PR's copy, so a PR could
|
|
21
|
+
# rewrite the YAML to skip the gate and still publish a green
|
|
22
|
+
# "Build Guard" context. A merge queue re-runs required checks in the
|
|
23
|
+
# queue; omitting merge_group leaves queued PRs unguarded / stuck.
|
|
24
|
+
# * Checkout the BASE / default branch (the pull_request_target default).
|
|
25
|
+
# Do NOT set checkout `ref:` to the PR head — that would make the
|
|
26
|
+
# workspace the untrusted tree used to run scripts. Fetch the PR head
|
|
27
|
+
# SHA only as a git object for the gate's diff.
|
|
28
|
+
# * The pull_request_target `types:` list must keep `edited`. Every check
|
|
29
|
+
# below is computed against the BASE branch, and the required status is
|
|
30
|
+
# bound to the head SHA — so retargeting a PR to a different base leaves
|
|
31
|
+
# the previous base's green result standing for an unexamined range.
|
|
32
|
+
# `edited` is the only event GitHub fires for a base change (with
|
|
33
|
+
# changes.base), and the default types (opened, synchronize, reopened)
|
|
34
|
+
# do not include it. Re-running on `edited` re-reports this context for
|
|
35
|
+
# the same head SHA against the new base. Title/body edits also fire it;
|
|
36
|
+
# a redundant re-run is the intended cost.
|
|
37
|
+
# * The job `name:` is the status-check CONTEXT you require in branch
|
|
38
|
+
# protection. Keep it a stable literal ("Build Guard") — never an
|
|
39
|
+
# expression, or the required context name changes per run and can never
|
|
40
|
+
# be satisfied.
|
|
41
|
+
#
|
|
42
|
+
# CUSTOMIZE FREELY (safe to adapt to your project):
|
|
43
|
+
# * runs-on: swap the runner label for a self-hosted/larger runner.
|
|
44
|
+
# * timeout-minutes: raise/lower for your repo size.
|
|
45
|
+
# * ADD paths-filters ONLY with care. Filtering a REQUIRED check means PRs
|
|
46
|
+
# that touch no matching path never report the check and sit forever
|
|
47
|
+
# "Expected — Waiting for status". Recommended: do NOT paths-filter this
|
|
48
|
+
# workflow. If your team wants automerge without the guard blocking on
|
|
49
|
+
# kit-upgrade PRs (exit 2), use the two-context split documented in
|
|
50
|
+
# GUARD_SETUP.md instead of a paths-filter.
|
|
51
|
+
# ---------------------------------------------------------------------------
|
|
52
|
+
|
|
53
|
+
name: Build Guard
|
|
54
|
+
|
|
55
|
+
# All PRs (no branch filter) plus merge-queue runs. Do not add a branches
|
|
56
|
+
# filter unless you deliberately want some PRs unguarded.
|
|
57
|
+
#
|
|
58
|
+
# pull_request_target loads this YAML from the base branch. `edited` is
|
|
59
|
+
# load-bearing, not cosmetic: it is the event a base retarget fires, and
|
|
60
|
+
# without it the head SHA keeps the green this gate published for its former
|
|
61
|
+
# base. The other three are GitHub's defaults, restated because naming `types`
|
|
62
|
+
# at all replaces them.
|
|
63
|
+
on:
|
|
64
|
+
pull_request_target:
|
|
65
|
+
types: [opened, synchronize, reopened, edited]
|
|
66
|
+
merge_group:
|
|
67
|
+
|
|
68
|
+
# Cancel superseded runs: a new push to the same PR obsoletes the in-flight
|
|
69
|
+
# run, and the required status is bound to the new head SHA, so canceling the
|
|
70
|
+
# stale run cannot wedge the current head's check.
|
|
71
|
+
# pull_request_target sets github.ref to the BASE branch, so the group must
|
|
72
|
+
# key on the PR number (not github.ref) or every PR targeting the same base
|
|
73
|
+
# would share one slot and cancel each other.
|
|
74
|
+
concurrency:
|
|
75
|
+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
|
76
|
+
cancel-in-progress: true
|
|
77
|
+
|
|
78
|
+
# Least privilege: the gate only reads the tree and git history.
|
|
79
|
+
# pull_request_target's default token is write-capable — this block is what
|
|
80
|
+
# pins it to read. Do not add pull-requests: write or secrets.
|
|
81
|
+
permissions:
|
|
82
|
+
contents: read
|
|
83
|
+
|
|
84
|
+
jobs:
|
|
85
|
+
build-guard:
|
|
86
|
+
# This literal is the status-check context you require in branch
|
|
87
|
+
# protection. Keep it stable and expression-free.
|
|
88
|
+
name: Build Guard
|
|
89
|
+
runs-on: ubuntu-latest
|
|
90
|
+
timeout-minutes: 10
|
|
91
|
+
steps:
|
|
92
|
+
# SHA-pinned (supply-chain): a mutable tag on a security-critical gate's
|
|
93
|
+
# own actions would let a retagged action compromise the gate.
|
|
94
|
+
# pull_request_target default ref is the base/default branch. Do not set
|
|
95
|
+
# `ref:` to the PR head — the workspace must stay the trusted base tree.
|
|
96
|
+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
|
|
97
|
+
with:
|
|
98
|
+
# Full history so the gate can compute the merge base. A shallow
|
|
99
|
+
# clone makes the gate fail closed, not pass silently.
|
|
100
|
+
fetch-depth: 0
|
|
101
|
+
|
|
102
|
+
# check.mjs requires Node >= 24; the runner's ambient node may be older.
|
|
103
|
+
# Pin the runtime explicitly so the gate never depends on image defaults.
|
|
104
|
+
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
|
|
105
|
+
with:
|
|
106
|
+
node-version: '24'
|
|
107
|
+
|
|
108
|
+
- name: Run Build Guard (trusted base copy)
|
|
109
|
+
# Fail closed on every error, unset variable, and pipe failure.
|
|
110
|
+
run: |
|
|
111
|
+
set -euo pipefail
|
|
112
|
+
|
|
113
|
+
# Resolve the base BRANCH name for both event types. Fail closed if
|
|
114
|
+
# it cannot be determined (a missing base must never empty the diff
|
|
115
|
+
# and skip every check).
|
|
116
|
+
if [ "${GITHUB_EVENT_NAME}" = "pull_request_target" ]; then
|
|
117
|
+
# pull_request_target exposes the base branch directly.
|
|
118
|
+
BASE_BRANCH="${GITHUB_BASE_REF:?Error: GITHUB_BASE_REF is empty on a pull_request_target event}"
|
|
119
|
+
PR_SHA="$(jq -r '.pull_request.head.sha // empty' "${GITHUB_EVENT_PATH}")"
|
|
120
|
+
if [ -z "${PR_SHA}" ]; then
|
|
121
|
+
echo "Error: could not resolve pull_request.head.sha from the event payload (fail closed)." >&2
|
|
122
|
+
exit 1
|
|
123
|
+
fi
|
|
124
|
+
PR_NUMBER="$(jq -r '.pull_request.number // empty' "${GITHUB_EVENT_PATH}")"
|
|
125
|
+
if [ -z "${PR_NUMBER}" ]; then
|
|
126
|
+
echo "Error: could not resolve pull_request.number from the event payload (fail closed)." >&2
|
|
127
|
+
exit 1
|
|
128
|
+
fi
|
|
129
|
+
elif [ "${GITHUB_EVENT_NAME}" = "merge_group" ]; then
|
|
130
|
+
# merge_group leaves GITHUB_BASE_REF empty; the base branch lives in
|
|
131
|
+
# the event payload as merge_group.base_ref (a full ref like
|
|
132
|
+
# refs/heads/main). Strip the refs/heads/ prefix.
|
|
133
|
+
BASE_REF_FULL="$(jq -r '.merge_group.base_ref // empty' "${GITHUB_EVENT_PATH}")"
|
|
134
|
+
if [ -z "${BASE_REF_FULL}" ]; then
|
|
135
|
+
echo "Error: could not resolve merge_group.base_ref from the event payload (fail closed)." >&2
|
|
136
|
+
exit 1
|
|
137
|
+
fi
|
|
138
|
+
BASE_BRANCH="${BASE_REF_FULL#refs/heads/}"
|
|
139
|
+
else
|
|
140
|
+
echo "Error: unsupported event '${GITHUB_EVENT_NAME}' for the Build Guard gate (fail closed)." >&2
|
|
141
|
+
exit 1
|
|
142
|
+
fi
|
|
143
|
+
|
|
144
|
+
if [ -z "${BASE_BRANCH}" ]; then
|
|
145
|
+
echo "Error: base branch resolved empty (fail closed)." >&2
|
|
146
|
+
exit 1
|
|
147
|
+
fi
|
|
148
|
+
|
|
149
|
+
# Fetch the base branch so origin/<base> is resolvable for the diff.
|
|
150
|
+
git fetch --no-tags origin "+refs/heads/${BASE_BRANCH}:refs/remotes/origin/${BASE_BRANCH}"
|
|
151
|
+
|
|
152
|
+
# pull_request_target workspace is the base tree. Fetch the PR head
|
|
153
|
+
# SHA as a git object only (GitHub's pull ref, including forks) and
|
|
154
|
+
# point HEAD at that object so the gate diffs against it. Do not
|
|
155
|
+
# checkout the PR — that would replace the trusted workspace.
|
|
156
|
+
if [ "${GITHUB_EVENT_NAME}" = "pull_request_target" ]; then
|
|
157
|
+
git fetch --no-tags origin "+refs/pull/${PR_NUMBER}/head:refs/build/pr-head"
|
|
158
|
+
FETCHED_SHA="$(git rev-parse --verify "refs/build/pr-head^{commit}")"
|
|
159
|
+
if [ "${FETCHED_SHA}" != "${PR_SHA}" ]; then
|
|
160
|
+
echo "Error: fetched PR head ${FETCHED_SHA} does not match event sha ${PR_SHA} (fail closed)." >&2
|
|
161
|
+
exit 1
|
|
162
|
+
fi
|
|
163
|
+
git update-ref --no-deref HEAD "${PR_SHA}"
|
|
164
|
+
fi
|
|
165
|
+
|
|
166
|
+
# TRUSTED BASE: run the gate from the BASE branch's committed copy of
|
|
167
|
+
# check.mjs, never the PR's copy. A PR cannot strip its own
|
|
168
|
+
# guard-integrity check this way. RUNNER_TEMP (per-job temp dir,
|
|
169
|
+
# always set on GitHub runners) avoids the predictable shared /tmp
|
|
170
|
+
# path a concurrent process on a persistent self-hosted runner could
|
|
171
|
+
# race or pre-create.
|
|
172
|
+
git show "origin/${BASE_BRANCH}:.build-project/guard/check.mjs" > "${RUNNER_TEMP}/guard-check.mjs"
|
|
173
|
+
|
|
174
|
+
# Non-empty guard: an empty file would run as a silent pass under node.
|
|
175
|
+
test -s "${RUNNER_TEMP}/guard-check.mjs"
|
|
176
|
+
|
|
177
|
+
# Point the extracted gate at the trusted workspace guard dir (config).
|
|
178
|
+
# The workspace is the BASE checkout, so config is not
|
|
179
|
+
# PR-controlled. The gate diffs git objects (HEAD = PR sha vs base).
|
|
180
|
+
# The gate's exit code passes straight through:
|
|
181
|
+
# 0 clean.
|
|
182
|
+
# 1 hard finding (secret / artifact path) -> blocks.
|
|
183
|
+
# 2 ONLY guard-machinery changed (exit 2) -> also blocks this check.
|
|
184
|
+
# Exit 2 is expected on legitimate kit-upgrade PRs and means "a human
|
|
185
|
+
# should review the gate change". Teams that want such PRs to
|
|
186
|
+
# automerge should split contexts per GUARD_SETUP.md rather than
|
|
187
|
+
# weaken this required check. Never mask the gate's exit code (no
|
|
188
|
+
# error suppression, no `|| true`).
|
|
189
|
+
BUILD_GUARD_DIR="$PWD/.build-project/guard" node "${RUNNER_TEMP}/guard-check.mjs"
|