Dashboard › craft › Distillation
ad7e14ce-ee68-41d4-8878-48732581959a["lore_tm_v1_Ge3L7taEDAjPtQk38QVrlg5bMINX5g5fqJlQJxcNDus","lore_tm_v1_YaC46eIsvioiTlTH1mAG6kwStRqbcc6GDguRJSDd_9M","lore_tm_v1_pm1_Ca3lAb9D8ZB-76mk-UzTF1cHBUar8UC_6JNuGb4","lore_tm_v1_RFJLdAPZVdwfEyEkfsehhIAWrzmOpiccfReWi3XDOOE","lore_tm_v1_YFUwxSMataGGJlacHTovA6QurNkVd64w1jZUOV7_cG4","lore_tm_v1_0hEuGNWoXSV4EfRNwDtZVSZstzaOhebu-GifVstuDeQ","lore_tm_v1_X51Xrj9x2B3XEjFaCs9iqjRy0j1zliz2hellm8gGVRs","lore_tm_v1_Ldrm3VPvmceNhWxVaRtiDdntSbAdoZlB0PsSWkPmmoU","lore_tm_v1_eCiqwAMH0ZW7j1vAm2JFnyUmWzwT7mcLRNv_sXERH6k","lore_tm_v1_CFWh-K_qmgWQonoH6Z9Wz6DqwLkDn3WxsLZKcdeK6VQ","lore_tm_v1_nGnKRbkLdECe3lrb9sgczG52xcfYu-Mx19hhaACmoj8","lore_tm_v1_i3cZihxgzcMn8FQiET2h_OburOcAyThi2ICK657kp00","lore_tm_v1_5VIO5AzWWPxXZkoMbJooV1phsVZ2FXGcZ2sCA1IwwTw","lore_tm_v1_4AIgW8DJgdh_x3Vj35H1qCXWkkJSh3USRCkYgCe9sgw","lore_tm_v1_NsT2Tt2VLIIRNk2pGqLf5pUljQr9oWeINVHSG7I6kG4","lore_tm_v1_uNpVYp1lksTa4E1fXWwAvVb9ngrFFK3_8MyarHdEFcU","lore_tm_v1_7U5tZj3nknpbCySZzvRRO--FRCFLQtjB3xwf6ZvIomQ","lore_tm_v1_-o8FXaFC41buV7sRmzNmoGzt7fKX7TBxwBtDj4vvwhY","lore_tm_v1_8r-3v-1kV-cbYZiAhC__vRQRAdyAV33WD9MGOepoxbM","lore_tm_v1_dR_3wB5Lccod9R3gDDyzR8YAMGFUStBJcwHJ6uySLx0","lore_tm_v1_JgnSzTGiK4nJTrsx5MHVRdjOgSiLOgiDYRPQ79hSNe0","lore_tm_v1_GC7xdQtqBdzWuqfTE1tzAKKxhCuGpLszRGJrRTvNDI8","lore_tm_v1_4HmfAJ9CSRYdIW3pzxVwkSWBSeXrZ5ya391iGbCUnLI","lore_tm_v1_NrEN9h-yii764M_othQnhHePq9bL9G_g30estmz6CFE","lore_tm_v1_RbnrghgRv-asYV0i3_HgHXf1vYNEQi1YJaFODf8DFAs","lore_tm_v1_i5INRregFmKEDerc3z-APvaQxfQef9hicXWUr0spwXA","lore_tm_v1_oxcMB0Krlv5Ub4QVETp1o0wDYXAuiWeuzgHpAzJZ3BM","lore_tm_v1_0x3qH7yt_hgRtjbOF8QXIJaHzwttV1dIUzm51Ss9Ymg","lore_tm_v1_1uoOVkunrEFJfxqipMV3ikjH4pAvjhDuFa65LKytHU8","lore_tm_v1_-OTsaYmxcvYYyz5Euy2o7A62a_1Jil24U9wLw75__c4","lore_tm_v1_IyboB7hS_F3xk1zPehskgmLxwNn7ENre3qir8lpcC1Y","lore_tm_v1_q9yWeozeox4mgOwkjJnPgAWkTYz-WdLiNW-vKvb2D6M","lore_tm_v1_H2vJc3dPgbB4ig9C_xZo4KrWBHlWUTLBFIZzsj-yVLA","lore_tm_v1_N6bht5v2YCfb01W3wJM8TAyoGCjahE-g_Z0GknNgDyM","lore_tm_v1_S-m0vTYq44eXEZrve9x4KfiZUsuwyNgDD_LzTapcHP0","lore_tm_v1_7lR-TVAIM5gBsjBT55-YQIFnUeCeBu0OYAlsWKVIEBo","lore_tm_v1_i7MOl6DAMCnOOaNq7oCHUK0BN0lLa6YUoGz0lad126Y","lore_tm_v1_EoCcnTYsvq3miRfn0kBSI4M60MbuNieAqtJs8Dg_FZc","lore_tm_v1_BniNcDwkZmWYqPOHzopcGI1rCUWJ0fsAwUJPA6XAdkE","lore_tm_v1_xtzzPjA5cvdinAzaHa1gyz5tCKKZRxtoY0ZWZIghBRc","lore_tm_v1_GACw2dTkdhIEYCS3IgSxrdPL57Xde8E9Fkm7RN8FqUg","lore_tm_v1_vk5t8WNTw_IH3jt-r5YotjJI3fX1kz8WpHtZ5eVIdwA","lore_tm_v1_wIha3QAYqarhYKUwNjePANCZS56umI-gzUkIU4tE5fI","lore_tm_v1_xbk2TXdTOeboaOeqTQcQXKUQ8b8PXw48lZT4ZydKmp4","lore_tm_v1_hP363mAOr_Sspdq0QiuYurkgyOk-Zoh4XLUcV_cNcG0","lore_tm_v1_mKLmQoJRiVsMzTVozyrYho35AFod0AQIedcaCIMvSyw","lore_tm_v1_GsAnPIZOB6AhnG5YX5C-mYFlUM1FzmC6uxKysXExyQo","lore_tm_v1_eyz6XB3vIlxYNu2FPFZjp6JmnPr0zMtXGKCbE0npam4","lore_tm_v1_k4_nnaWSiRUujupwqNn22UNiq6ju9kB5AZ0JaxaJTfs","lore_tm_v1_3r_pdgDPJhB2kRIbk90hcldDElBs8pw4rBHUD6YbwHE","lore_tm_v1_lHaIy6uFzMkDLdppP4shU7fGV3oyukxdGChMVhVUYc4","lore_tm_v1_GcqXdnZ7kSX_omtPenctfLtQuTmUc8rklO2NXmzUeBA","lore_tm_v1_DVn3waV119RqCWod7E6rTieGOELZVVI1v7RGVJpnpog","lore_tm_v1_HB-cdZbj3X1ZZGYywOR1SUbwvBDwmIV6hRJKutHmpBg","lore_tm_v1_AygCxi1N7zQTK815IrlX_KcOQZ75dUJ1aRg6_fLUSLo","lore_tm_v1_1og7gUIwv40FqFtAmnoE1dF7BUkyKH7ousSMMCzm7RY","lore_tm_v1_5Lsm0M5XaLxmCyi6U-QB8ksd7_-fFNTcR-M0fj1y6xo","lore_tm_v1_QoX6i5SEgA6O4RhniBVo51sx70vthcYC_KMe0HMq3MI","lore_tm_v1_c15sjM0NptMNx33J-TP99mRUF1iL2ufS0e7zPtgdbrM","lore_tm_v1_IlNmISRSuyGJO5oDPp-4podLS-PWOs75CHNLzoBgKW0","lore_tm_v1_aSAYZiX0QqJD_FBCzcjMkXjSoZd_6qIun9kyuXbjDog","lore_tm_v1_HXv_4pKNJZI5l1cEWJ5B8qd4EJxEWeATHnqTMGJ0CBk","lore_tm_v1_vEb-jZW6vZrxJxYDoMqBK160s1SrLJbJK-udppNZWEQ","lore_tm_v1_alfpBTno-VY0e-E_V6fXWlGrt9D69FVvQhZ2-RB2g1M","lore_tm_v1_zgcyTsqDUYB8zH-Z3Dr8aDz_mjRkTsZXg_WmFHp-9X4","lore_tm_v1_SOq4SKmh_hzMHcGZBBdY7dDqTETMG-JogYOfoX3rPcc","lore_tm_v1_s5LUkSuc6bLUF3848O83Ua0x0kbLJwPF6M2CUV0OOi8","lore_tm_v1_6FjPjVQvJnK2F0jYZfvgxQfH7WumXQt1gPnOkg2e2_U","lore_tm_v1_1tGxblJvUiQ8I8dmrAe5P2wf4R6jUiB7wc9Kh9HsBvA","lore_tm_v1_MgKCB44_5pEwrGCtQEw9YydlrPp2k0gVKCnho1YKrUs","lore_tm_v1_FjaL8bJ7X5Y3tdY8B1s7wJ3qOrYk3ZCQH_Fz83Vo8IU","lore_tm_v1_kRKvIMiXMaoLmdxP9U03WWUAyvXYfwd00j7thFLHbyQ","lore_tm_v1_6mASyucG0VkcyeHcS6vJVjxeRW4LA20FcMG06nG_0Ys","lore_tm_v1_TpKMhnzqXyURnwcjeO0NeqctFZDYm2ccc38WQdALSkk","lore_tm_v1_He9CBZn-5KJecp7fWOQ1VHGdcRaJzvl4uJIrnJW3Mvg","lore_tm_v1_CBsEtLx0UU5ZxJDqj5V8ypqGBlTd7MKgriwyGRLSl2Y","lore_tm_v1_cLMzHktWjEMNQ8K1zpU03zwh6V_p3Lisr90ESW3Gj6E","lore_tm_v1_bM-INrEbWpbNQ6fqkdYsvrAKvQQo--1Gua68MzVcyRM","lore_tm_v1_bK-Xgh66I4z_v586s-GzM_adkRjjkleuGuaHIzqxsxQ","lore_tm_v1_hqmVMEJOkxBAmykf5yHrOyrEr5GZL7MX-VyHW1xK8Nc","lore_tm_v1_WC2NsQ4O3PKhwUlNPGmOycc8y_rPuY0BgCl24kFEDGA","lore_tm_v1_Zj9KE86Lj7NkaxXYu8f65jzcSEmtoXwtK0UJs6a1Moc","lore_tm_v1_VI_tZCh0N5mvj4udAXRM9TGOPF06Rkf8si2XQRM7TxM","lore_tm_v1_6BnmpMMP4THVAL4XvGsANX8UTp9XmvpCxp35o_BCGKw","lore_tm_v1_tF8ykJDyTear2a6pTzEyaMLxyAUqyLaslIPiDoDe4Vk","lore_tm_v1_Zf5Tbzg-ARFs51d_v3Eg-v6w81nOgi6G8lO3hFsrJS0","lore_tm_v1_AU2q8ZFAcreg25Pt5UgtYBl4d110YX6eXWevFKLCQi8","lore_tm_v1_ArNaQQdO7ACPvpGXaEPyu1D1Ze6_LFU2pOKTmLRmRDY","lore_tm_v1_BN3rF0qL0V2ZCkxJ3nowkaFHqlt6EemtctfSYboVYz0","lore_tm_v1_pkmhxPfJGnAJfp6J7glD4qWBvqlpLZ5yycAjp_elvoM","lore_tm_v1_CTl_mXUF2p9Rlfr0eD6qkcEI4mTmjeC9MQYLdnn4rzs","lore_tm_v1_3aaTg3aGeORUk0r7khlFCih2P7jCoeL7LkOPrkzvZFU","lore_tm_v1_-626GakhqEAFpvXusF6T-Eyi9VZatUr_GPGc60IEKLk","lore_tm_v1_WQmNKGkRaC3hvKE8Wx-tMWFglKdHQ1_VsXkbh5jHJFo","lore_tm_v1_pp7qJLoTy-Q2FdEUyr4DRQG3ViA9i8ssS7opDhwOoBY","lore_tm_v1_djhGPDC7WzsbqWBEFAg5f-cL8Qww1bErrfJildsrt-g","lore_tm_v1__w22jqOclD_pwV06wPc5qBC3FOiWkvHuPVOQ57-Ahwc","lore_tm_v1_W50xl6Cy60dBYHAwWQtb4fd06fntijJdDJkwYbONPCU","lore_tm_v1_bVMzD5ICNYWyP8yUveZPGf8Hyb91Ali_3b3e28Ly05s","lore_tm_v1_fCg8k3k6q3YZW7xvk2A00-uBjxwMaZBI_F_fREC19hg","lore_tm_v1_UQCijQKZXJcRjbwaxjySjrq88kbrCblk3r7srCgEZGo","lore_tm_v1_k4_Gf_7dwRcja0lr6Ksq9wtONGSKSfklGbA2MAd0CkY","lore_tm_v1_ny6ujF-lzFFNpC03Ttaw-ynuEd-fN6InSr1IsPLffvc","lore_tm_v1_0nRxknY_-MT3__PUucRkUwQIT_C8T4Id3UcnWt4frLY","lore_tm_v1_A6ILpNVJtN7oLBzYDMtyPu3CmdmdTltHCLcgqFN6Tds","lore_tm_v1_Tv1sz_daDgO7Ge82Rz2Fdrxi-E3Mmb_h4FzJ5pRxdr8","lore_tm_v1_MV9CZcfag5HQXz0Ika2T5xxYJ9K0dqIKu-_Va066A3E","lore_tm_v1_jvxMGy4tlZk_CrQs0Xz46GFJMl5B_5Fm829D3d0jMes","lore_tm_v1_YJypi0ZIDTctnQooV0lQLO2FFv_MwkQcmw-KMq2OGJo","lore_tm_v1_U8m7sxp4J3WBuPxKC7jnquwCAR25OeY-byprwDqehdg","lore_tm_v1_WVyI_smVBGXytE1hzYkkuYzEkuPbmYI0OVGxTfJeJdc","lore_tm_v1_leVPEy1qmQ7JXffdLpZ_mWfiSE_qOoIcq5o5nYLB3sw","lore_tm_v1_nyQoj1-v7ZUrXJtYsPP5xhzT68bBfYQf8IpIWpdvqF8","lore_tm_v1_-7Y2ITIhrV9o91TUDYn2rJc_M5j6UVL00ikT0hZzhjo","lore_tm_v1_2QuQVmIpc4s11-P6jGBAQJf47WBX96g3-c_m8SNxiZU","lore_tm_v1_7g8rPWOTlZOlPsqd9zjJMeDSQhMHm83CaoAmFo18C_g","lore_tm_v1_VcllGCh3zvyEV2umhhWaWmlGxnXvrv3BFFaQO7CeiNg","lore_tm_v1_bLlguqYzCHn0fSi4odcyi47LtMACBI0_PjRIzTDeVjo","lore_tm_v1_dUQ_Xktw5iVcCnpae1GugL2eaqdpCZse92ldWA6S1Zk","lore_tm_v1_V_FbRdybfvtF5wtjwIQXfXpyC-9BE-hxl7cgiqkpMuM","lore_tm_v1_V5TJrAiozC62eydRv5r_Qnx5D-17-OhUR67JwHnxfg4","lore_tm_v1_PvSq6iFxpKKFI5mTDENKqERb9wftPkqNEH4gJ7CGOi4","lore_tm_v1_lvXWCTa7nzfyo7ndK3XCQXI2ql2xo5zDahoSQBwnEKU","lore_tm_v1_NTQ_rWITsB5QFDNKl-61-ptfVXHbqWs79BR_uI8Rwh0","lore_tm_v1_0iOX1PUpcjJTh2IhHTfLAio7gqes0fbi7lnHYfZ7b5I","lore_tm_v1_v0UGIRVai3ngzNuOIRlYtg6BIR8TVncZI40QNM4EQyY","lore_tm_v1_nHXtfS6EE3foFMoMbruDNJ-63lwgbQ1JQB506dA1O0s","lore_tm_v1_JSPEzGqMJsIZEPJgSh0MpwDF0TgrnNjCSBpDk01StIA","lore_tm_v1_p2lVindWZilTVHF0lpyZKVwaD6kbD3rYQLzZ4t_eVsI","lore_tm_v1_8Z33jzYW1rsUjM-fWy0qWh28JOBtW0ETR7OSEfVXNQo","lore_tm_v1_RbveNKJlnCCGXVliqm9xqNFGiyibyXW6bbIH0DkDX80","lore_tm_v1_6nNK2bfgHaIR0RvCpT88yRErY6cCRaGFsEEF-nOePoQ","lore_tm_v1_xGcMxCoIP2eM3iGj8lBQUzDtVHOdd0V1HHPVbcRw3FM","lore_tm_v1_J5T4aVkwscO-sn6IkCnfy7ZCc2bH-t3HjpYOqOa1iUE","lore_tm_v1_k1TcD6i_HHAc-XA9dgZsQs5-S4nAdkYWYIb6ZRuYOs4","lore_tm_v1_ag93VLzG24Mqza-TA7K43FckFYC6KwHVC2625EARgjk","lore_tm_v1_JPqa0ijSadlbCTNdoCaKh1kwAFbXJQv2O3oSsyW2V8M","lore_tm_v1_2-51fjLB--X5vaTsQwvLo5UpTRQbQGH_NlU__1duNww","lore_tm_v1_4uUMnSz-LLhWYfUrjqdTkGbIaoJr5_E08uG973iuu3c","lore_tm_v1_Ox2cAhTmbBdmiNcugLbKaWIGjocbGM6PMccem7yrWfo","lore_tm_v1_DVoAWM8w9-Fi0dDhcX2DJ4Em_5f0BFjsTjfmqVDbdjg","lore_tm_v1_44nvhKNYojVQtO9shswkAj9gZVpwFf97b0inKQ8LZ9w","lore_tm_v1_KgXTqDIWLKaGOO1x3KCSeJfiuUOvBGbUUOqbUpMxO7A","lore_tm_v1_Am3Ln404g7yXy9kDMT3ShBwZH8ONmFAt7-dUzZuR_zc","lore_tm_v1_BmvczXW475-r_Lodj_K7o58ga0oMOx-E6zA526OI-4I","lore_tm_v1_E5z-FB_bbYkX3p15Qs4yK3TwnPEHzx_AyxZ1iAI--x4","lore_tm_v1_m--voV_lSjVok2uGMXpo4bEu0ncdQgHOgdysrNOEsAw","lore_tm_v1_yqvXS9_h2a3gkjNtL4kEMqjKg2v1JVUpbaE7XPCTmz4","lore_tm_v1_4MIis2rS-3_-UvhrIeK9oMB9OgIOf4q07asHEQdkcW8","lore_tm_v1_PExjfy3tlb99183AILwyjDYIQ6H5wPFMhVHW9qnZqzw","lore_tm_v1_m0ucHC1bKh_UGWByy4wrV9ZoTpqqk1C4EK72IUVwXyE","lore_tm_v1_wNCNgF8PBC1KJNdzTMRDc-nXczA9RoWKGlcQ_v8jCx0","lore_tm_v1_NJAQs37ljZgDlp9Msy7i6I8VYN_jCXuT3euu1KBOdZw","lore_tm_v1_GivhvbpniIUlOvbQ8YkGbsgxuYuW5TaPmaN45r1HdNM","lore_tm_v1_cKWcVc-6wDP16Lg_Vr8RUKQ2ysMI_zoW8IlTLXQYL6E","lore_tm_v1_xvW51xSpcmxW-2asB1-8cyG9L9a3yWyy8bxCw5vvwVc","lore_tm_v1_tK3NAbQKlPk6Ss_LsgVTIOkb4-eNKGGwbbVF8FSRRCU","lore_tm_v1_YelGjd_PxMWSnGdHs4FlMm5z3BsdzFrTowXfqsOyd8g","lore_tm_v1_f_Simr8xBLAr-7o37moxAEA0eEBkRmafRZvQc3nEZC8","lore_tm_v1_thzyWCC8xXRSZdMwErTuu77GwB9YWaa8y2SITuRIEJQ","lore_tm_v1_VDSFt0JlbIUxkzv2q3u6KWPRYkd9XX7oDF5d2bg4IAY","lore_tm_v1_8r3mZeIQwqeRMth13IPQLOz5vLVkiMHaj21Dj5XANS8","lore_tm_v1_MJ6dD9Ygh0lJEJ9CLUYRC94SsvRBxa1uO_z6YR9jCKY","lore_tm_v1_jihmTpwNdqg57eTpjyea_kbyu5xUBZrjd01PQp5tdmQ","lore_tm_v1_Fnm9sfRAymDVenHPZjXnVct-UAPerajKDcuvtZdzKGw","lore_tm_v1_nqx7nchcAqat5dI5Tpjn9HSRzfRKtUv1N0mXF0Rv3C0","lore_tm_v1_03fYjhcNoerWm-Zy_ADKg3tIhYGlyD-uJQ_TvHWfW3s","lore_tm_v1_gPib_IYKK5gcFG9jwtJxQnZztPykzT01H-8utrUfI0Y","lore_tm_v1_9DvWE0dly_TksPXScF0mqmVK3u54nQgMjNeX5A2LO-Q","lore_tm_v1_HMf4c1o_VlpRPjrJFdubnuy3F2pC8Urknmr4N3969Jo","lore_tm_v1_56kPEM8o8Ol_0jWcHnkmZtbFOVL4iJfB7Ue6E1-PyiY","lore_tm_v1_iVXvdU8KegERc_5Zn5p4etgd3V-Ra8_v-GFtc22CIaA","lore_tm_v1_NQX--XS6qC9sAojvqEBg3yE-9975Tyg5goculy_1i3k","lore_tm_v1_caMx-ScJTHNGUYApFR7ZVpVy75QJW6Yg0in5GDoJzb4","lore_tm_v1_Y3IXwlx_Vqwoh4cZ8iFK35kTeaTCbpecP0DgaIJGA8Q","lore_tm_v1_HeoT8pamZkF58LCk8kWV-CGForGqohzNB_mYEcZv6lU","lore_tm_v1_IPfhJYKGI9dFOj8DWM0T1p4LEN6vzV9PZ7yCqPl20bY","lore_tm_v1_eu8m1-10YS69dTcPNEsyov3iBYzz8jOFxd1YPlza3tE","lore_tm_v1_uoarbMgMNN4F2AoDurVMG6_PDlkweVOODfTjwWCrReY","lore_tm_v1_wiJBHGvN-sUifl8ikLvTNNCuW_ArzhBH5DmkJxdEYNo","lore_tm_v1_5eTn2nhd8yqn3hdDwtIO2vx420hFz5dbBhQMtBcyk80","lore_tm_v1_aq85NVD8LnjuEaclIs9Mn_b1ZW_aVzi9JxDg-JJ8428","lore_tm_v1_B7Wpi_FVqNhLiVFQioln3dgurE-CMUR3BOjLcArbt-4","lore_tm_v1_y3QLD9SsG3kbPyh4pyvfva75XxGHxC2n2KdEyTHTCdY","lore_tm_v1_-nQPfenkZzq_92S0sITZTHv5IJPxNx-e-CdZq5ySf9g","lore_tm_v1_LdwNx7hv97dfPYZHLdeZ07zLeqh-surblT7CiUka0b8","lore_tm_v1_NmYmrOthGw-j1HrwrZIq6hiErOOu3YiUeEM12vBWZlM"]
https://github.com/getsentry/publish/pull/9339, feat: accept workspace publish requests, OPEN, non-draft, branch feat/workspace-acceptance, base main.
33de3f1 feat: accept workspace publish requests (Aug 26, 14:16) and b658ffa fix: validate publish workspace JSON (Aug 27, 09:16).b658ffa0299fedf78c9dd9a2121cd740691ca157; base 83d210b29553ea6f4d97508821724a834c43856e./home/byk/Code/getsentry/publish-workspace-acceptance now has uncommitted compact-controller implementation. Tracked modifications: .github/workflows/publish.yml, package.json, src/modules/details-from-context.js. Untracked: pnpm-lock.yaml, scripts/, src/modules/__tests__/publish-location.js, src/modules/__tests__/release-revision.js, src/modules/publish-issue-title.js, src/modules/publish-issue-title.peggy, src/modules/publish-location.js, src/modules/release-revision.js, src/publish/resolve-location.js, src/publish/resolve-release-revision.js.pnpm-lock.yaml; Publish requires Yarn Classic for intended lockfile updates.https://github.com/getsentry/craft/pull/872, feat: propagate release workspaces, OPEN, draft, branch feat/workspace-action-propagation, base master.
6dae341 feat: propagate release workspaces (Aug 26, 14:18), head 6dae341f9bc1378abde7a9022108caded2d22226, base 21270a1d12a60b461c51fba93bd076b90d9cf4af.craft workspace list.
ghcr.io/getsentry/craft:2.31.0 was determined not yet published on Aug 29, 02:13 and cannot currently be used in production/testing.getsentry/craft:2.31.0, rejecting mutable latest; Craft release/image publication is a hard deployment prerequisite.npm → gcs → registry → docker → github → gh-pages; a GCS failure prevents Docker Hub getsentry/craft:latest publication, while master image workflow still pushes ghcr.io/getsentry/craft:latest and immutable SHA tags. Recovery options are manually mirroring a ghcr.io/getsentry/craft:<sha> image to Docker Hub or retrying after GCS is repaired. Reordering requires separate runs because npm was already published.mergeStateStatus: BLOCKED, reviewDecision: REVIEW_REQUIRED; listed CI/security checks green.mergeStateStatus: BLOCKED, reviewDecision: REVIEW_REQUIRED, no reviews/comments/threads; listed CI/security checks green.sentry COMMENTED review at Aug 26, 14:25:34 UTC on superseded 33de3f1; its invalid JSON \q finding was fixed in b658ffa and resolved. No newer bot comments were recorded.publish: getsentry/toolkit@1.2.3; workspace publish: getsentry/toolkit/cli@1.2.3.craft workspace list, then classifies one trailing segment workspace-first..craft.yml is path-only. If root .craft.yml exists, workspace discovery failures must fail closed rather than silently fall back to path behavior.workspace plus non-root path is rejected before side effects; nonempty release-workspace configurations cannot use root or workspace-level github.projectPath; special __proto__ keys are rejected.CRAFT_WORKSPACE, and craft publish --rev; state filename parity remains mandatory.inputs.js.View check runs link.getsentry/<repo> into __repo__ at that exact SHA..craft.yml exists, run pinned getsentry/craft:2.31.0 workspace list; otherwise use [].craft publish <version> --rev <approved SHA>.ses_fb83e8505ffeGclFS273c6OjTQ was reported running Aug 28, 09:46; instructions prohibit sleeping, polling, requesting status, duplicating work, or overlapping work.ses_fb7953815fferhgAYqqquyoEu9 was reported running Aug 28, 12:51, likewise non-overlapping/no-poll./home/byk/Code/getsentry/craft-workspace-action-propagation, branch feat/workspace-action-propagation, based on 21270a1; original feature head 6dae341./home/byk/Code/getsentry/publish-workspace-acceptance, branch feat/workspace-acceptance, based on 83d210b; pushed feature head b658ffa.getsentry/publish default branch is main, not master.feat/workspaces-schema) was admin-squash-merged Aug 25, 10:04:15Z as 21270a1d12a60b461c51fba93bd076b90d9cf4af.ci-ready after passing CI; waiting-for-ci removes it first to emit a fresh labeled event (reiterated through Aug 29, 00:08).workflow_dispatch must always remain enabled in ci-poller.yml for manual recovery (reaffirmed Aug 28, 18:18).default must throw, e.g. new Error(\Unknown status: '${status}'`)` (reaffirmed Aug 28, 20:58).--workspace --dry-run must never be treated as a workspace name.minVersion.latest; this now directly affects Publish’s former docker://getsentry/craft:latest.renderTemplateSafe() must restore mustache.Context.prototype.lookup = originalLookup in finally.@typescript-eslint/no-unused-vars; existing lint warning attribution should not imply their usage.Object.hasOwn(workspaces, workspaceName) is required for selection, rejecting inherited constructor, toString, and __proto__ selectors while permitting explicitly configured own keys where valid.__proto__ at entry because Zod z.record silently dropped that key: otherwise YAML workspaces: { __proto__: {} } could validate but become invisible to Object.keys, bypassing selection and root github.projectPath guards./^[A-Za-z0-9_.-]+$/, excluding __proto__; the Action now uses Node’s regex rather than locale-sensitive Bash ranges.github.projectPath; when the workspace map is nonempty, base/root github.projectPath is also forbidden. This root-only release-workspace invariant eliminates compact suffix ambiguity.Cc, Cf, Zl, Zp, unsafe/non-ASCII compact names, and non-root path with a nonempty workspace.[A-Za-z] ranges are locale-sensitive: under en_US.utf8, it accepted é, unlike schema validation. Node-based ASCII regex closes this pre-side-effect injection/contract gap.--workspace=$WORKSPACE, preventing separate-token option injection.src/utils/workspaces.ts handles package-manager workspaces and must not be used for named Craft release workspaces.craft workspace list, not craft workspaces --json.Object.keys(parsed.workspaces || {}) as exact raw keys in JSON from raw validated .craft.yml, without applying active workspace selection and without normalizing.checkWorkspacesMinVersion(config).resolvePublishLocation.View check runs link, not the mutable branch/default/allowlisted branch.ci-ready; Publish must consume the precise linked commit.craft publish <version> --rev <revision> so Craft checks out and validates the same revision.getsentry/craft:2.31.0 for controller discovery and publishing; no fallback to latest.ghcr.io/getsentry/craft:2.31.0 was unavailable. Registry/API constraints mean image publication is a prerequisite, not something to evade with mutable tags.read:packages (403 You need at least read:packages scope to get a package's versions.); direct manifest lookup was used instead..peggy; generated CommonJS parser is committed/generated source; Peggy stays development-only.main, last pushed 2026-03-19; Nearley latest 2.20.1 dated 2020-12-06, last pushed 2024-11-14; PEG.js latest 0.10.0 dated 2016-08-19, last pushed 2021-11-08.CRAFT_PUBLISH_STATE_GITHUB_REPO=getsentry/<title-repo> governs only Craft state filename identity through getPublishStateGitHubConfig, not publication target identity.CRAFT_STATE_FILE_PATH on cancellation/failure; no repo-file fallback.workspace-${Buffer.from(workspace).toString("base64url")}-; ordinary sanitization was rejected because it collapses legal names.CHANGELOG.md keeps original mentions.3566840 fix: replace extract-zip with node-stream-zip to fix Node 24.16.0 hang; 8484cd8 security(commit-repo): replace execSync tar with node-tar.feat/workspaces-schema)
086a633 fix(config): address workspace review feedback, pushed Aug 25, 09:31.ab63572 fix(publish): isolate workspace release state, pushed Aug 25, 09:44.21270a1d12a60b461c51fba93bd076b90d9cf4af.src/config.ts, src/utils/helpers.ts, src/utils/publishState.ts, associated config/helper/publishState tests.6dae341
.github/workflows/release.yml, action.yml, src/__tests__/action.test.ts, src/commands/__tests__/publish.test.ts, src/commands/publish.ts.release.yml forwards optional workspace through workflow_dispatch and typed workflow_call; call supports version, force, merge target, blocker label, publish repo, git identity, path default ., config-from-merge-target.publish: ${GITHUB_REPOSITORY}${SUBDIRECTORY} [workspace: ${workspace_json}] @${RESOLVED_VERSION}.PUBLISH_REPO=="self" to $GITHUB_REPOSITORY, requires nonempty RESOLVED_VERSION, reads optional changelog, truncates at MAX_CHANGELOG_CHARS=60000, adding ---\n*Changelog truncated for issue body.*.gh -R "$PUBLISH_REPO" issue list --json title,url,number,body/jq, preserves checked target states only within ### Targets through Checked targets will be skipped, edits if authorized, otherwise uses existing issue; creates otherwise.action.ymlsrc/__tests__/action.test.tssrc/__tests__/config.test.tssrc/config.tssrc/index.tssrc/schemas/project_config.tsdocs/src/content/docs/targets/github.mdsrc/commands/workspace.ts — Manage release workspaces.src/commands/workspace_cmds/list.ts — command ['list'], prints formatJson(getWorkspaceNames()), description List defined release workspaces as a JSON array.src/commands/workspace_cmds/__tests__/list.test.ts.src/commands/workspaces.tssrc/commands/__tests__/workspaces.test.ts.src/index.ts continues to call setActiveWorkspace(extractWorkspaceSelection(argv)) before yargs command builders because builders can read config; it registers the new workspace command alongside prepare, publish, targets, config, artifacts, and changelog.src/config.ts adds getWorkspaceNames():
.craft.yml;validateConfiguration(rawConfig);checkMinimalConfigVersion(parsed) and centralized workspace min-version gating for nonempty workspace maps;Object.keys(parsed.workspaces || {});src/config.ts now centralizes checkWorkspacesMinVersion(config). Normal applyWorkspaceSelection() still:
minVersion >= WORKSPACES_MIN_VERSION;src/schemas/project_config.ts:
github.projectPath rejects with Workspace github.projectPath is not supported.;workspaces with root GitHub project path rejects with Workspace configurations cannot use github.projectPath.;__proto__ workspace key now rejects at schema entry after adversarial review found Zod dropped it;owner and repo are present; otherwise it remains unset so getGlobalGitHubConfig() fallback applies.action.yml:
PATH_INPUT: ${{ inputs.path }} and WORKSPACE: ${{ inputs.workspace }} into first validation step;PATH_INPUT != '.' as The path and workspace inputs cannot be used together.;^[A-Za-z0-9_.-]+$ to avoid en_US.utf8 range behavior;Craft Prepare and Read Craft Targets retain inline --workspace=$WORKSPACE;publish: ${GITHUB_REPOSITORY}${SUBDIRECTORY}${WORKSPACE:+/$WORKSPACE}@${RESOLVED_VERSION}
with SUBDIRECTORY=/${inputs.path} unless path is ..src/__tests__/action.test.ts now has executable shell-path coverage for:
cli-é, and cli-é under LC_ALL=en_US.utf8, all rejected before mock Git/Craft invocations;cli-v2 workspace inputs;packages/cli path rejected before side effects;cli/v2 rejected as outside compact grammar;publish: getsentry/toolkit@1.2.3; workspace publish: getsentry/toolkit/cli@1.2.3.docs/src/content/docs/targets/github.md was updated Aug 28, 11:02–11:04 to replace stale “Coming soon” text with implemented release-workspace configuration and compact-title/root-only constraints.__proto__/locale fixes; typecheck passed.node build.mjs passed._abortError in src/commands/publish.ts lines 482, 499, 527; _statusError line 515; _diffError line 521; _err in src/utils/git.ts lines 241, 249. Reported rule is @typescript-eslint/no-unused-vars; user specifically says they never used that rule.SENTRY_AUTH_TOKEN, so source-map upload is skipped. Existing non-failing diagnostics include release-state/cleanup cases, release-body truncation above GitHub 125,000 chars, floating-tag warning, local-ref fallback, and Vite SSR imported-binding warnings in src/targets/__tests__/symbolCollector.test.ts.docs/node_modules was missing (astro: not found). Locked docs dependencies installed successfully 12:49 with pnpm 10.28.0: 370 packages, 369 reused, 0 downloaded. It warned esbuild@0.28.1 build script was ignored unless approved. astro build then passed: 29 pages / 29 HTML files, output docs/dist/, Pagefind and sitemap created; output included Entry docs → 404 was not found.src/commands/publish.ts loads workspace-resolved config before checkout.argv.rev, it runs git name-rev --name-only --no-undefined <rev>, checks out resolved branch/revision, resolves HEAD, checks status/artifacts, expands targets, then derives state.argv.rev, it checks out ${releaseBranchPrefix || DEFAULT_RELEASE_BRANCH_NAME}/${newVersion}; failure invokes findReleaseBranches and throws detailed ConfigurationError with remediation/match detail.getPublishStatePath(newVersion, getPublishStateGitHubConfig(...), process.cwd(), getActiveWorkspace()).CRAFT_PUBLISH_STATE_GITHUB_REPO throws ConfigurationError("CRAFT_PUBLISH_STATE_GITHUB_REPO must be a GitHub owner/repository pair.")..craft-publish-${version}.json read occurs.package.json has local exact devDependency "peggy": "5.1.0". pnpm-lock.yaml is untracked and must not be committed; use Yarn Classic for lock updates.scripts/generate-publish-issue-title-parser.js.src/modules/publish-issue-title.peggy, canonical PEG:
PublishIssueTitle: "publish: ", optional "getsentry/", repository, optional syntactic path, optional legacy [workspace: <JsonString>], @, version, end-of-input.{ repo, path: path || "", version, ...(workspace ? { workspace } : {}) }.[A-Za-z0-9_.-];[A-Za-z0-9_.+-]+;src/modules/publish-issue-title.js using:
node_modules/.bin/peggy --format commonjs --output src/modules/publish-issue-title.js src/modules/publish-issue-title.peggy
It is generated by Peggy 5.1.0, 861 lines, exporting StartRules, SyntaxError, and parse.src/modules/details-from-context.js to use parsePublishIssueTitle() rather than title regex. It retains:
Issue context is not defined;Invalid publish issue title: '<title>';Invalid publish workspace JSON in title: '<title>';path = "." + parsedTitleDetails.path;Invalid publish issue path: '${path}';src/modules/publish-location.js and src/publish/resolve-location.js.
resolvePublishLocation({ path, workspace, workspaceNames }) returns explicit legacy workspace unchanged as { path, workspace }.isWorkspaceName: string, not __proto__, /^[A-Za-z0-9_.-]+$/; invalid lists throw Craft workspace discovery returned an invalid workspace list.../<segment> whose exact spelling appears in discovered names, resolves to { path: ".", workspace: <segment> }; otherwise returns { path }.resolve-location.js reads JSON PUBLISH_ARGS; reads CRAFT_WORKSPACE_NAMES, default "[]"; rejects non-array discovery JSON with the same error; outputs result.src/modules/release-revision.js, src/publish/resolve-release-revision.js, tests.
CHECK_RUNS_LINK:
/^- \[View check runs\]\(https:\/\/github\.com\/getsentry\/(?<repo>[A-Za-z0-9_.-]+)\/commit\/(?<revision>[0-9a-f]{40})\/checks\/?\)$/m
getReleaseRevision({ issueBody, repo }) requires exact matching repository and throws:
Expected a View check runs link for getsentry/${repo} in the publish issue body.PUBLISH_ARGS and PUBLISH_ISSUE_BODY, outputs revision..github/workflows/publish.yml now:
node .__publish__/src/publish/inputs.js;resolve-release-revision.js with parsed args and issue body;getsentry/<parsed repo> to __repo__ at ${{ steps.release-revision.outputs.revision }}, fetch-depth: 0;__repo__/.craft.yml exists, Docker-runs getsentry/craft:2.31.0 workspace list with checkout mounted at /github/workspace/__repo__; otherwise passes [];resolve-location.js;docker://getsentry/craft:2.31.0, changes to __repo__/<resolved path>, and executes craft publish <version> --rev <resolved CI SHA>;update-issue.js, and posts cancellation/failure/success through post-result.js.Set targets preserves state parity:
realpath -m "/github/workspace/__repo__/$CRAFT_PUBLISH_PATH";[a-z0-9._-];= padding;$GITHUB_WORKSPACE/.craft-state/craft/publish-state-...json;[{($source[]): true }] | add | {"published": (. // {}) }.XDG_STATE_HOME=/github/workspace/.craft-state, resolved workspace, and CRAFT_PUBLISH_STATE_GITHUB_REPO=getsentry/<parsed repo> to ensure state identity follows title checkout identity, not workspace GitHub override./^publish: (?:getsentry\/)?(?<repo>[A-Za-z0-9_.-]+)(?<path>\/[\w./-]+)?(?: \[workspace: (?<workspace>"(?:[^"\\]|\\.)*")\] )?@(?<version>[\w.+-]+)$/
sentry-migr8/tmp-merge-target; sentry-javascript/v10, v9, v8, v7, master; sentry-python/alpha; sentry-wizard/1.x./github/workspace/__repo__ → c232c383e26f, expected .craft-state/craft/publish-state-getsentry-sentry-c232c383e26f-21.3.1.json;/github/workspace/__repo__/cli → 21cf7beaeda4, expected .craft-state/craft/publish-state-getsentry-toolkit-21cf7beaeda4-workspace-Y2xp-1.2.3.json.src/modules/__tests__/publish-workflow.js extracts/runs actual Set targets shell between the step and uses: docker://getsentry/craft:latest; update this extraction boundary and tests for pinned image/post-checkout resolved location..github/workflows/ci-poller.yml: cron */5 * * * *; workflow_dispatch with optional attempt default "0"; ci-status-poller concurrency; 60 attempts; up to 200 open ci-pending + accepted issues.https://github.com/{owner}/{repo}/commit/{SHA}/checks/ issue-body link.head_branch, resolves branch head where possible, updates every issue-body SHA occurrence when branch moved; fallback remains original linked SHA.success, neutral, skipped count as passing; no statuses/checks means not started. Failures remove pending/accepted, add ci-failed; retry requires accepted.ci-pending, adds ci-ready, comments CI checks passed for ${repo}@${version}. Publishing is starting now.b658ffa Aug 27, 08:57: 26 tests passed; lint 09:07, Prettier/diff-check 09:21 passed.ses_fc1a82a13ffeaFWq7hymm7uL2z returned MERGE Aug 26, 14:05.__proto__ and locale validation; both findings were fixed with regressions and full verification.24.0.0, Yarn Classic 1.22.22 via Volta; source CommonJS, tests ESM Vitest; files kebab-case, code camelCase, constants UPPER_SNAKE_CASE; double quotes/semicolons; mock before module import; descriptive guard-clause errors; external state files must use fs.existsSync(CRAFT_STATE_FILE_PATH) before reading.yarn install, yarn test, focused yarn test <file>, yarn test -t <pattern>, yarn lint, yarn prettier.@sentry/craft 2.31.0-dev.0, TypeScript/Node, pnpm frozen lockfile. Docker build/runtime Node 24.18.0.CRAFT_BUILD_SHA=$SOURCE_COMMIT; image workflow pushes ghcr.io/getsentry/craft:${GITHUB_SHA} and latest on non-PR master/release/test pushes..lore.md on Aug 26, 14:15 and Aug 27, 09:14, no index change.33de3f1 and Craft 6dae341; opened Publish #9339 and dependent draft Craft #872.b658ffa; confirmed PRs green but review-blocked.package.json modified and pnpm-lock.yaml untracked; no complete parser implementation yet at that point.craft workspace list; corrected raw discovery so it bypasses active workspace selection.__proto__, and locale-sensitive Bash ASCII matching accepting é.__proto__ schema keys and replaced Bash regex with Node ASCII validation; added actual YAML and en_US.utf8 Action regressions.ci-ready/manual dispatch constraints and observed controller’s old pre-checkout state logic.latest fallback.--rev checkout semantics.read:packages.ghcr.io/getsentry/craft:2.31.0 is not published. Immutable image availability is now an explicit deployment blocker.2.31.0, resolves canonical location, uses resolved state/CWD, and invokes Craft with --rev.