From 2aba70c138c4ec702dfc4b93239615fa45b420d4 Mon Sep 17 00:00:00 2001 From: Stephen Crowe <6042774+crowecawcaw@users.noreply.github.com> Date: Thu, 8 Oct 2026 09:21:56 -0700 Subject: [PATCH 1/2] feat(claude-review): set a pending status while the review runs The "Claude review" commit status was only set when a review finished, so while it ran the PR showed only the collect check, which goes green in seconds. Authors couldn't tell a running review from one that never started. PR resolution moves into its own read-only resolve job, so a new start job, which runs no model, can set the status to pending before the review job starts. The review job's token stays read-only. post now also runs when the review job fails before preparing its context, and sets the status to error, so pending doesn't stay on the PR head. Supersedes #95, which used a check run from the model's job. Signed-off-by: Stephen Crowe <6042774+crowecawcaw@users.noreply.github.com> --- .../claude_pr_review.cpython-314.pyc | Bin 0 -> 60428 bytes .../workflows/reusable_claude_pr_review.yml | 122 ++++++++++++------ ...ude_pr_review.cpython-314-pytest-9.0.2.pyc | Bin 0 -> 73118 bytes 3 files changed, 86 insertions(+), 36 deletions(-) create mode 100644 .github/scripts/__pycache__/claude_pr_review.cpython-314.pyc create mode 100644 test/__pycache__/test_claude_pr_review.cpython-314-pytest-9.0.2.pyc diff --git a/.github/scripts/__pycache__/claude_pr_review.cpython-314.pyc b/.github/scripts/__pycache__/claude_pr_review.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..821757b27fc355fa2a35f53ec37ee9b15320a04f GIT binary patch literal 60428 zcmd44d2}1uc`sOnomdEP*G_O1DRGe~YNNKMxQG%(iYh`-t3`?e36MmKBB27P1-+Pw zotWzGJW+0UgwAWn=yCfr6}zYD7w1@cSu8t?Z$`bXmu7 zQ=GtsxHFuhO2{D?ge<`*m<5wysn>>b1Y;;yunM*Q#HnkS~oOQu=-#5DQIH0y+d(0ZXT zwBdcCE#B{5Y=}P)b`^(s0d4EOCnp7*dX`cKmR4J@JV-(h$F$rtWWC`oe zn1%IcEW(B}R-yQet=<^gC^(Bap`?f#bA+mdQpC$xyjmznyn@9y36+R%Wbw^H72?$_ zUeljdz@d*f;mPJkja;KfrDCC4p$5-uS;{)04)J;xuNSr;zLmwd2n~pDWAUv*BjVdx zyg}H3_)Zqzrj)V^Pj;^;rBQj?gtvQEyxlJB#q)hEpB=(}#1F9ePT{%!T_v1a*Lq%P z#=C>`ZcG!}EwtcQD@)lVv?1Qk;(LUbghTk%!P4=ey~1JPWqf-C&pMTF_X$S@jnE}@ z*K34hc;2Ht-_M@$!f`wklxGKo-q3T(a~GbUP@Xpn?$ANuB%VA^PeLuiDa2o3@mAq9 z;(aXMCiEkIhQ-^Jei*=$vn%@Hkl?}dL6)*Z7((33;)ewv;=?R{L>NJQl*Ky*KjJU4 z_)*~;;$tk{C7efmoW;9^3B&^|eoVL!>Jdcz4zl0Jg%IMCEG`Ha5x>OZz5OoX@~-DO z&Rf87>$v{j60YCa^GB(G3=YxRYE;(7nLKN#{4IRj&p=Lh}c zBhKLo(HR=`Ia|g&lU|>*M{tV1i+%5)j&WTkYCkZIX_liXEwX= znUdHu;u{Y+C&tIF;EBf@bPi1*GtameKSPt^c+lw&1)anGaWBdYIz2&WFeFY6;g!$p zoR|y+CPU^bxtv=1wAM2e@=uI!3_5FTUkpx+*9M11edj&Zdz`+DKJiLul&T&Y^@N-u z&)B)3Gc@5mk0Y1Xt0xV3V1}H(|OQ`j`OjeliMy%jt6U;{&Dt* z`k+?n4c3`2P7KyL1=cgDdk{G#ufd5Bni&xN7zm{|L!)vhQU$5sf|KXZd&Dc~)br=j z&oxf3Z^-XOGY5U4OFrLtdUhV?@Z{JS>w3>P>N6zz=o`YVKY3fXj`<#QG5M~5TFY4c#^sGc*aAJ%mf!d9fhdf9xPI^c1k;m&rqM*-< z*)ZxGcTNUqgjdvQS+}!3qP%DrFhi(!Cea<{HqX$gI&{hqIep_;1eg4wQK!c_>i2q4 z3Wo5UkNS6SNo}oDne57l4+r+`4R}JM`Pj$qkcX~o0(LXpzZJZcp z!=?0RjT4ImZ88Tv=UHa7KAl(mzA;pv+A2Q}pwH!%$J!ah(yVj3==IW>=^XNiqTfgJ zdu1bQ)x>g}eO|O^)FU@W^bJjjtZXWD%!BDQipi#SHCySIF!VIH3B=H#`@DNt6~}#- zL&<8P{bu!b`s~M7o)M3K92xsV7_(-4N{fu;kTyB664c4z9Pwf8d7N0F$UcA^M*J6L zxI=Ky1F%#>Yg!LH8cg~ag|$NZ%bkqj%-qSr$$(Ep0Vslc zS)S3D2*F7oEeF;fTIZ$Ex9xyo*N#UxU>fksdN3~RoEA+`GmzYj=jS}TUfBWT9e2^7kRMa zgTaJ;m=+h(=z6f;@lM-3ekEZ#jA~K-3De-%#Lzj+smJEv=)~lhw|3ZnIiVf*hZ3fP z%B!%sm%YO3$E$9CD4acl{+b+Aw#{HTZ|U#Tn8W>HTZ_EM%j?4*wS#J@0g@j+kYVNm zB2^ve**hHA-`Bgjy6Qj^gF*BNU}*noPi?rie{*&90qXMb!Ic@TTzEcnw~YIl2T zhx=b@-15rH&qkbI!7esf=KfB2b8EL^g(CIC|D^CP_d z%yZ8xAx*u@%ZKmhgaF#uP?z!*>gFdf_p{ex*{I%zNS87iutGBs+ z-vD~!<&n|Tfr-hW*gueZ*Z($*cXyzIMjB$XA)cxmgFnpgVjp80HZg7+l&!2};l@Z$;oVuBw|@Zu0rbP83+ z84%av=c95&rZ_iuMziZnz%TJ^9e11`Oe&;o%= z7=RDa95l#S9;R$abiVBD#-QHhFvkr*lFoZVK`OH}(NvFp>LM0kedv6keq?m__Ij-E ziTXOZbLxXbqCXG{*2`OC8on90lCTa8C~L|$Fd%L~erNC(tVA%yeaaQ^E&M|k&a^yW z_h_DcpIswAe}t6WkV0xvoU`B$jnzLoh>$vauW}r6tdes)!wXqF*O#THR0**&oY)f3 zxOHiHB+J>Ai(&mGeSfk%o!}L;jG*{Smb2~*U!!J<`xEndU(RP~>Lt1A&=}6UpXI9U zpT{^Eo;)>{x-YLodRzKHY{}QtQmJ)OYg(6_Gd1b;(xRrCB~Nsn364A2;MS#=3A%U1 zCFs>MmV8e+@=KoR+W1Z#wZ3QdicB~`55|yjr?Li~G@sqc+N<-~i=L#}oHi$tX#^9` zfy^`kJeb3O<-#6LXe{PlM{r_DxWZPAs7Hz1VU$M6lBK`Hq@ZA ziuQc$F}2OTEr$;i(h_t|j$<3AeO~m{v0SLe`-VMZK_7PS1fP}QOA~xw!n9>;!?wol zJ9a+SPlkqTcO{I3ji5FJ*nFZmAqKmD{_nV|Z3!!=tO?K@lfwiK0R}x{C`gq`n1~W! zG3}UdJdrhcCFBE=?75OKcme^uOlX0-C-n3@n8<1wXzOih?rG~yXn}qvw7`l{*f`-z z2?NMJ+^h9sAqH1mg&?6DobX;rXhqMZ1n&#5-nYGLn;nWf8)D9e?*?x* z{_&ODTmR&h#iF&5=E&eo_`TiV*fYn^Y@OCEX4}77HsgJ>`i=98_PpP_6e)k>3(>97 z3*X%S?QOH6Z|z(%$ImtYiC!w( zaf^=?H{EjGD{fxMKe(7*5XpI~{VUBM=NG-R{k`hvT?S0Ivle%q7@|-?-##YJXaVm*>$&M*L34owKMH+T4t=0Wxb?3c*~1G zEJiOb*+j9{{Yupo$=F4E3wAI4qYx&^6xXLb<~Rp; zf}hmXbCa5Oyt$B5&kbrikvfapzy&k`paB6b{=l5x!;9``?ST%iP1C*;P}t};X59U> zDkMun7wl#0z!XRBjdB^CWq@Frzt*kz8vOv+q#MSPSh9l}1${bH6$~nL4rn`jpP0XK zMgAw1{PE3G^H1(mdw8{FBk1pSTrua;26S$n4{Ubikk;?*XlH;wS(0AQp5)G+Oo-O? zC3jJEzgJsR%ym}CW7Ua$yz}-GTb8w=Wv5tutZF$u$^BA&LV2lQ1x#*}+Ai;Q_GONm z&TY!HuL@@MTlL=etS>BTO7*@?)5Qxpm#|}rZtQIJsF7|MYi=DdqRt)orB~}Tf_7jY z7?Qu$REM9~BUZH(^&2lx59FZ{Z0RGiYj9vehqF z)WQBM)**=@pbq+Fb@|M0{*IF{F8MD4qO#W%lMZ)k+yq#Y~zGDFKWolWxmU$U~W z-K|(z8SpA~H30@@oiI;o85G1UWi##%+-7xD{h3F;FVEn;1?ZjYft;uj7(O1D`PbozHV~*E(65^Z$_GTW|gG_A|V?cow3nuy4Bx6^3zz>_iu&CLwF+vIw z26)V@!{mXeGj}I=^J5ED9e6HbuwfnWU1!tJv3R)d?y$yFAJ!4}8`ccgKh`|=9B{cY zAbS|11iv|Pz&Tc5 z`@+>PL_%?U`LuS?l6`Ie)%}s$xTWf@rD}0Qsbnpk?pQ1>ldNUa9oH`}+8o!;Ts;$M zkK4-b+RA2ie`LL1M$kmdA?fU+c(}ByU}$H=6sklTmLhZ*x3vrYhT`_pyY|vWN5Rau?p4Pu^K?mj(er$0}9sTSVZ9KQC@v}z)4Yhl_NhH2{wGy#5;Uge= z`bWRdCVU+>9)`x25z_nwrc#nM19X{h2cjR)yY(5FODoak(+v3{D8sHEqZ&)y-AQC1 zU`U}v3fh)LFx`es%o!nxVykFDirMspFOsFHUof;Sn{A?HZi8Srf}ZI5{U@|AiDIgo zt(T!6)O%eoyLHK@lMFf23#N3$NU#%7^p0eFm$mDX%FlEWB54Itviy51#{SKUUzX5$2l+oas}R<0r0@?!2}#j=`Z?Lw`VFlRI;w=YX$UXex%R1Glp33W&- z59vUS5*i|CGNSHD77Ykbho=XSZEhDGcM83`Gk96u*xA2KJG?Ym6oJm`URk+23P zha=doA{D?pT##XtXoWWap^1Qu1t@ZGCL?w>2hSldQZ9f%nlPQT9Kgbn#qAJbd6az@ zj1};VSnVL~B6Mbg#BH+lnZ6|%`9#o9A{F8;QOPVdWe)LM5L^{({{n?7A|>kwOiTa^ zU}7!^e<)|BL4ayASvpk@;$^mXK{h&EXKok4y5z)W3Jy}xf}mSGfUv3i=jcZKXr<@v z6m%d+aAD2<9U>?Vu3Ee7UA0L(O6k}JevD#06woFu9;cuVK|=T9gnzs`OWvWiz)?hK zdT=5rG%jKEj}Oo=v5i=Kfu1L;6{N+S+>YhV*d{mM=N+K_5q(I(;MxXM9gLrB&SINt zQFq3w~_q+6YW?KH}CDX^V?1nxUJ@2N5p4cM!idL7A02gf68h3bq^_+0iOpq5^vx(JH&2tL+qX004+XKFGAPwn}4)`$P{;y zcWbt3LG5TKHFd=CX~Wi|O;Ju6w;--hr)HP&Jr8cPQB9G$tF)EMsZj4L`6Gg+Thn<+ z24(>rxJ}y3To848Nm5u^P*u8w3EDlx?)9=2nJ{9lj89w|4{Ms5s`ZJi-nJH@%|!^Z zHaIz$Ft_&%^fU|Xfga*2e?S~WrNNtH;{}+_iK7%?p9LNb4VF+);j3by$xF<5-gC}3 zFdPssAPpNON<77Vd}dG@56$;a#;g|+O3$Bqj>~ zcgYV@YYS=FMU#q6&D)5iGbA%jG8dSS8`)wDYyO+Hc_%hl<^~xt{x0Lt| z;8ybtVSUHW2xJ1RK~zzp8bj2S2)rB)gc z0!=gr)Q6BfNGm!y`RtgI zL7II7vO;V?*wVhXY&NRNhFPisl^Fm2Oq)f7ONV<-NT^({n9yMf}ylB*L@sHj?IK}mI zAzt7@nlnEMY0JUH?bit!Vu!GpHW||;V|o@dAf1uLOo(MAW9H;r3yV>HR*LoOq3>uA zY&#Xm95M>ocxPv+93hiH`Q)%)xuGl}4=HEqB{4)J67#JY6HUH2+N+k?w*HQvn z#j>Q~Wr|Vo6Z{1UYxy$wvB~nqL)bwPWaoUbYtd}`;^9SeeoUADaZW)@SFk9Dh0d7H z$zJ}fy!ux8LivHILz1l|raJ(_d98D*Yo;--E0)Wm5`JSqme7wwCKi0WO4XoA>u+e* z^!GFP_SnjXLY@%)&xC6KMD3L2|*;La3B zl%N~p6$nKBH*B*Sx8~^z1}h<4eP)$}B=xxR3zVsK(+01b)NG**9<0g>tr^QrLb-FA zPB68ZxJM6)HFGVKRN=}pf2~>?PVJCu$&#t9gzZ+{`VZ^Qhg`@-0utBajn5|3H z2B;5~?iQVYjW1wlkxn~i?3E;i^|{-bWd8So{+BPRsZ7O!N<+LaxetA=Iv9ndFiAyu zNSu}we1Mj48yR(dHBBU+dEAm>pJYzv)XuesKdw8%dCO>5gTA=A2z?}2()-Af)bwu$ z3bL$Efn0+6w05mxRH&^h9~KQy%_CU{i;K_1dq^pUK^ zJ_xA@Go24oGX;NrJmiO(C&@6_C&K|n`MVCJpv-p&iZiHA!c2;x#A-PVH4oBF4Thi> zG8uxb2R! zHQ5uXo>TGaC&2S0KPe5)q2Sc_ULXq8^C@ysfiKm{i16E>Q3z`mQwpn2!J=)N&jD++ zT^ksz(RHmU0e=5^^HWFtGB>4%!2CbS<1XmSxb0d$4|@Fu8X`szEa_K*+N@tmab|C- zUrR|%qBk?VeM-LyJkbzJ9m=i2z1T4_z~Y{O6U>teh5KMN9x^Tl)^CuF>mc`Wo(1%W@YsF_u9VGcB>}V zc<4@OzOnb~7a|vKR?cs5-OF=Ln?AA^{mh#Gz{F)2&Uk+B^tFMj1Ci%rw#vAzMzYn+ zmd34H=dD}kHpZ+?f8DfT=>l8vevUJ`YPRH?Yi0ehTe-24y|J8qDASVj+J53Y=B~PG zoYvf5vmp}t`sKGT&st-}+hc2XOxr)oFM6}(Ax&mbM}-?AgTLSR$cSGzT5hy_CDV&X zoUXt;o%O)XWjU^8U(LR6%_ZGB-CIqIc?FBB*DV&TzVZC^=Oe?hf{J*-W~pHFY;O9q z#dVwG>vl=&cFkV7zs?!We}C1xt7dCrB|Bs5b}g1vCtI;DRu&l{C(k&iU>+_de2V3kn~akl#bf8LaE#s`!Qj(uMU|I@g(gxW$0*$9d~J zOPoL6x(eannb%NQVMq8IQ>5biDDSZ&Nsqc17eb*!!F^!NfM?U7c|4Yk%2_io&KiZ% zx|#;hzu3DnN%<=d8-|vt1-zxcj?O)Ws(K_9Ht@Vx8w>Qo+&f8~qEgeBKKKY%B zW{vJc2ZAN@kx)Gh?XP0AAqykeMnen=u(yD2$^r+mi9gRa?bsd`Vmx@Eq) zC05-g>Dp3D7JbXEWFI;4la}lgjB%E*@YziK5Ff~+`4x&iYc!oSnkr|@!5bcO2&7e2 z59mJI$9|@&haA~uM93h@|G?)S9^87h;;5>MU6VlpcsfufW{?ID0FWkqA}E51|(L~xVhe8vr_*NaE zWj*>l$My1PO4%Bv6GsQ*f zjV5Z(rRKwTPX+XYq-pSHL&q5&X%Gc4;2^4$`7 zLZ|Y}{3Vw4Q}R;?W-u4nG>5ej5zIGv*wr#%%s@84IZ>AhenQ@wwfIr#l!;}LQJCvf zR-hSZfE`0x$zj!5uVNA73mad-x4Y412d*_Vj!`csOzslcg{(jeAblu=*__udXbx8Ij zpsI7%e4^J`4gZw0db*i}gpF4lXBw~W{Y1}Yng7*U_6_X<>z`Pe?|tq2+W#f>Gw$?# zN{OcVpXIE6NO^!z*Bd_jg`Tr^^PeT`M?U+722XsE=JYYchLu+2kZru;d%@o$>Bm67FS_&%-2$!Hm{{h?QDdqd7#LCG}2m(#~+|@{)JB_U(#9DZ@Uq49WxP zJDJ;)lvbly<=Ug!v&8?=Qlo)MsE82O*9km_79Md)Z}PHsvOb}s&PtfbOdi_WL6JB! z@+>E2238}@?Sw&gC6K-(6?EA`Knx;O@-!gcL0Z*F^s_a0sw>su7#()~T2tez z_*A@3!D!3E4$M zi>ac2v<2T!0k>6#9uVb;!o&>t^E24GDWOCX1~c&$N?ykiVwIYNnY4VKAYgflxG-hQ znn6q#0FtL&sw7DwNx_iL{&z!pfLSiHItqLj@6v4pdeV63w|B+CKVq$bxGR|riR z!hX#Bb}&JJ;sOQ}2?&j5zJ;GA zxf1Xa0p~C0SoRE8TIuqK&?ivXL9P$LvXi}jVA0amy-3i?!2vx?GPYFR7+mslXuuK5|ffR3uCoM)15ZAd28aJoX z)NYJ~j(Wz%uoKgwhWib`9Iwpwgc=t)5ehJlnHeurCi$%Nq1qE-3@_O-{t_b4 zqRi!NIa6)_Xe$6@vSnX8arMN^j@SF+Hm78BMh4^7ig{}V%ucO!-wiKVn!!=LpIa8s z-8`SWdA9k(wwrBpmEY=$*Bp>)4%`xAxz9}-KeFUr-MN^%I#T-9W~e_F6wZX+IvE|B zb-#E1ZSSo-DSzKq}OyKZ!hKmDVYW zF@829q(K96VjBf63TU_Nt~QF(^y4Z8uTk(i1rSy#sfcUElCn0k(Gc&^GYY8CUY*(04=lOJ2#YBI^GsT}928RhQtDQ81wS#)MfQ z5!@u{A^T4ydw^O?UNFchkkU-Ulbe~Tg>mE{Qb3u?`hJSejn)3;PPrlU`ZvaV61t_9 z$KhIecUz{b#B^tBK#DUqWhU+2z0U{k+M-Ca-F3Xz8)t!zU|FJML4tX(c`CVc^y z4y-dxiggAF=TVMx8Bn)&pbEyc5{yr7ofkSa>o}JtQwjB)%h|_Z%N95Q4T=w zQ|hE!Ql}1ibME{D`F^U5^d_BLN)~M3ynw;P0a*`Zr;PJ+d$j90lFx=??U0SbE`aTF zs;fB6%B3Czu`6MxQ~3`>nkx)q+{wKd`D&99f}re(f)V-P2!OH%1^_33vcp57`@xBT z*EA<~4rdkd3}oX5ub;e0gvg%I9~@0_6d-XO!+uAbeaMGTO4%->Zn~wiJE>CTYhn+S zVt)%~%catGPRlHzgWD%>xCp*5LU8uSYJ_)SLkzy?8v=6@&Z108>w*ckv0=}~Lknvr z14($Uv>Da}6PSfCEdWR&T>|jO6K43|oAkAj?+TJilGy~9-#+ngkW$`9fn3UhL>Mk4 z*!QHNK)JFW6lpOew7~hr`;@YmC1D1JCPY;f(j4*0`nQuBC)@Sj#J6 zvao6m2!nznSF>O#=*Yiex^9Z(y=jX($|MKGztj5r_SKP!_wwWR%DeVT&;SKPH%EW(s8`+BxiyggcuVAe3Fn=jt}Q^$^v z9ff4$2jfD$RIyjuuw8(&A)w8g8F{K@%sFPJ@0`Q z_s0wv{Fu@M8}b49qK&QD*Q@;X}pt zlew%6Gf5MpWQm3mzd!+j<)`ub!vwo&_a{mvi+6$7Pa*kKqI=XN-)CQtpUYr8NjKm- zrTY3uQ~2RQHoYJmiR~$ijC#SnNpXYRVAiUvPI5K1Q`wh^y76sbfLwV3szB4r)g(c4 zN|7f;o$P8-OCcL<0e{uH@He}GixNh!pzh2YBFTgZCq7G&vryO>W|%4#92rKzxTvf7 z`GKQ{yW0kOyPJCeG`b)R8iVIIpspeRc~~hAVaBsni;QFgBA5;lPcAs-9~mXH=<|LU z?!s3L*-kUd?Li;>V42}TED#_}n_!Bvmg~%H2B4GJr9+rUGk}njy*zjX$$ioder={s zKsTbf;-BFIs3B`TgF*1dNV80wLLf^rWL{Xpw0F#Ne$eaLpI93l_XL=UZyG;LdHLHk z4|4G>I85*L&gRUzK3MgQ{<-G)@*QlPL9 zU}=Nla9+{fys~d=XItkQKj@5A?fUbsg{s5TjgqeSP6&aFGW{iTTC%{h@c^@me?+Lm z6i|UDNm^uYN${9tf-`M1{w#vE-bg60yx<6cF&;reN4{efOCLDNrCAje_u_TJj`in* zUrTu5VNaoau80Xm;{S+LJH}!NZ%sqO+GPQ0zk+=UNrY2-qk<)p^?fZ1P6ac{FzeISVh_bStP7!)3$#LXo}fw&SdyOPUuu* zC}4406rW{($e;t2$gU@R3m~a}tBOD}@i3D0v8E~NX0DClSIp7owyNl(;$6g+{9R6M zfS(((;ahg4{Jos~2f^4!y~-{gp0;)>@K$Y6G1pZH4=fpS5whIoCXHaWrO8!+wEb7` zbe`37mS3@*+0V?;`YYyWe`bz0wFgovh$^p3NcvTI+IVL&n@!FI$1}^f|B5ZjS<9t) zz{xznl8VV{+XA`pSgu^|XZLc>$~rx>9l0yNX~Y_)D`0h7L0sgyvk~UIa}gFa7y@~2 zN8c(r1;;UN;W{>#GtNSH9=pl*B-SWN!# zv%Xrr>??4gPyRK-pq};Rnq^=9uPBcf)-p~h6D_;#!aDZrSvjp=mJ_&N$(&kPtL?%D zW;l;s4t?MdidnwE&+w}t*+YzQ@5;fr=5Nus3)1~JCevW_pW2H~w;l7Rq#;R0W8P>x zF*0tm=@kg7Iq<58v>{wKN@7@2${&GlU@ROYb1|IC<03QB%~*YLaauz$sItDXVUrC*=&;my4o~BY*ki zl@zY};j>lEFtMZ9oIp;>w1*4^Q-+955SHXion?a2Mg!o59PT{G z$2zS%ngn&uW2!SRstK}DwNaFzQWq1INu!%2Q?Mc+l9l;YwA@e^{3PO;nvaawxHCss zX+6Li&TLtiwHa%a34NBVHxe2nCn{G_$Q*;-jm%H_KLC})k0~IIIvt4VpM0xW5tCP25`=|Inq=^S5g~O}@V=D!#tv1X z&I~)C9Hh)s*(E*XMkC=#1ZJj5!EW>!!_2F2LCPEIzJ z)hJK8umLslA-NM3VC)FYAV3lob~3=qU>{SC4Chp*DoV56=Y@^TNh)}X0@k5yG+1A< zuC2n0>Rhp#-ZOz5VXceb)+s*g;u1JT1ADV`arIi*NEEDk^Tbr^eO3Ko^6KP_ zJ8~*!-w4wQi+yJIf@R(Pocx*NH%?qX5owI(zBv%fsfg!np3m7F%c-3{hzue*UoUvO zAaZ#&H@3PaR!|!+*fw9VEmp97y8R=2&W+(k$J)4~bly?=UejEz)Z$ubbxC_qER?zL zIZl48a6?ND-rjn9)9ujhO;T~!f}@+HnfBb7tv9w`-ySK9=Em~MWA=);ee=A1bIe{l zt-GIBICJ5~f$!X0M6c8|Li|@WmUq zH_h9dV)nhr>8a&B&}g#?Q-!(Td?l7wG2IH5adyFs>z!?p3tyjndoudMTyCtmF}7Cr z#J2rUx8GiMry;hdJGS#!%+@olf#t+Z`OIJ>KVpb@qPob%=yA!haaxZ){^}(9c+r}7 zt@~A_E>3i zEcf8FaWS_fT7EBgqayrm{chPGSHyC6;e{pd9T<>QeCSHcUn*~x)*gym;khpVwSgrs z+N8DZaVvc3*xxv_JE@4@NIXUzE0-kk-26){`IG z3(37R%y-aPlaUdrqV4v`?Nd_Wu?0uZV$p^f9b7C!Yb>t-F7;H?sqz_cFYKG99^{Myb)IT@6pm|epHy%MK8`CpAF3p zOO0((ar=VfP{OeaZhfvDyL#-ML$mpFt+#hcr}`!D=)yXG-1_3f5uOx*Mqvh$AKfTf zswG|ZzkPC;=W^D(({%zKpV@AzSjCsd4=zp@FN4SJr z2;^7h7CI4`dNQ|giPyOV(#nGI)f9Uc)BV2z4g@!_{6FO^dwGrSeEDhW3fpq}(O%hX_Hh=lVte9AHD4(&x|I3KKXT&7Qx?+_BL|{cW%UoXm>62|tQGa&QDSmMY54P4 zQ54RMJYe@|nfyCdLzKZTVxnR*<{$kLB3Mys%}M(}VJ*oC4O zgY$gCdRi9y9_#459bj}cpbQ;OWD{a`@L2091ue6yzK8~nHXm#|+M7c8fQPdYA>?SO z0hFRUrp#C|7n!qhAoLJQotB)Lk{gxRD_`Fqsefm`WZ47>j?Mm6dz63Q{I2<)W3yzh zfhZ?`&LHjRk&X-T<0s~ipOAXolKZsO*B|d2p6?r$PLD_<=OoLRq#H|(o;pg@Lu~X2 z8GYLPQbao@=B+JD7U%p3--tg%kT59%>vPPsHes3^mvLZO!--~L*uKnL)-z%J1Jp5C z$Ex)yXXYm{BPpDD^#Qxj<;(Zmfcf1yp%TTAMHnuXybCfSGn+erP-(? z_vRA|O5j}@HpetLOy-g*Bo)ZpC25Z68=yRiuefDOmYiTrpQSa)Du68v|0-uV#`4?E zm|PG`q^C`mU&6|Vm}lvGlxkl7EMwg)4SK32yi?%xS~qIjprN`7*@As}eUYaF&z95~ z&vKTRLuEG@DVOTJ@WGb!qx{H)1LV4!p@b+OMFg_F&WYo-NH3K3A!1j^bSn~05*x`| zm(a7LKpvY^058%$%qUk-XY&3)@H}bWxJPB1U{?Ux7q7@99f2N30gC?vv9OM)z_5WC zdsKt+m>e2{abb94_e6?+K-*mMh%mKyupyvY4fPO@e+;K65HI1IBuht)F~kBNiZlOcYEr z=xL(!mV3{m(^1fS1K6m<^+?Os#vL?ziu+ef-lDx*GIf7sv@ZhH+!fgr?U?Jh&40J+ zX76oLsyQMZnUGcmBzr(I1z=x2v+15?ebf+r`JS`!o~02m#b}wn@TDt@t{0@!XX7r< zg3B|LJJTN7{#Mt_foS>c@Z55Pp^Y$KT#1ERvzDioxa=Z2R z4r$F1SVBmqBa0Ry3NA)pyjQ$c+R!k!`PT65zI*!xX$NS;G%)v|6_f=d>ni3~iovbH`|@(jgHAY^dy!eq~oJPS7bW#cF=yWkLV1YNxa z6F8TFE;@WhJ`Zt#SdD9td%{FsTiH*xVG?Z)Adh1CaLoOnfMSK5-T9!1 zVyieq*2C3^$&eH+W*6tygZ z>Fvr3J_I1XT%H-K^h?@=Tr6$_LaW<|(8lsA5OgkTLAHzD*y#X^v|Yjh_?v_0xeZ2$ z-}ORXI-JMv{Pf@HH73zvvKMr$Rs{iDS3#=(yjE8CWM7TQsS1%wBjf~ZLQY0Hr3hZC zvQl=DDh?LN7FM|}sOjqEwZyYE%WH~fYw>JddhPLSz1xO8#{4v)v9KY%mG10h8zF*$ zxQ7I##SQG(lJs%os zCWA4=LH;n#_SvxREZC0N@=zmeQD$s3G6<>*=O8sZ)mR2}NG7fVKuPVi3BE41i%wRf zgn$0p8_s6=Bv*OUViGD@WJDVzT0#PYVBKT^rGDpkpb<*CUn9wFvW@|7ykr+~`nC~e zKzLWu!_u3;g#b5Fly_!R#$~gNPZP;!v}ji6G-e0+C?%Y4*@ZV+yvaZ<2s#EA0NDTs z2z#PcZA_IYm@;W8Bd_dbMc`*9UEoF~nOaBnE@UlhrMbbPm~Or$3nB$h650-`#YV_%uye-uA~=Db5siGE2ZU1a-E$Q06TU($5qR8LDAuulZPjE~8A60H2z z8Q_~Fcg=M313hQ4zwrgI8^dph@7Xs=*_&~2gkkQ&_bz_t;vZ*A^#^WUxSjK(!XFgg zHr?T+fwS=e-~512@=q)bOw1oSElpmM4quiohlxlkWBzQmetpN=JHEd6?Y;kbe=K)X z%(8j5^`2#`WNw%%{iT-A+VL+rt3L~p(D%0wu06P(pCsw`rcF!EcSYy^@Oxl*K>P$> zq-JmdU~kQE!A+Yc$?7yY)8&-%vowSfU&|s1EJ=V7=VOi8%sM{&?|b1%d4IeA@{*;+ z1b*_e%5X3Qu)^K)VZ^(SoQ^+IZl$@zxco!zbkpUp0M{mGg1- zsz^b^7`gObaCX->UWrbCRb2Vk+iqX}t9|#HdZgXQ;r>J5*DtOwj~tdN&VjXR1HVPf zW#s^wGiT4NU&z|<{_e$s;;24yNvhm+YxV7hzgU0Eemiuh{mw3__muR)pmb_T8aglK zjbAl=tR~!f%P@EO*5x}FrBg5b{YyXAN@oY9LrCV8@_f^#OsM}yM$4jO&s9At{q?Fv z$HuGrj~&niU(7GOap?LX*yAb-_E8pMk2rmSVX6x#WmXMX@za~ojDozyyw#CS_wp*F z+)6Zb_*UP&9Y>_?op%mMr#;f($i35}(hGj9TPZLpOn zX3e76@k^sNE9X-aSH5-n{PaNN;Jl@HZt#~`x~!%LX04?j$nKWC@%lEYzU|gUsjmID z_kmGsIm-XiV#+$oKhT=>GOh~!d^(SMKvv&p3&ypCoKQFc&-6{tG{r$m=oq)dB$Es} zk2n&PdDP@IP$Wt#=SSRCyX!z7;$T3a8LJ%!(8Fn z>Ywm^LhqeCAAr>kkoiebJ_FV&KtBUE2(k^2A&9fUM40nXYWe}CEKx_x_@D8FY-1_T z*7bJ8aLO0TVBRIl%QwmT_aeDeX8~K!di)}8ZNatuukByVvQ1A)rgbwR1an93HXezt zo^6?TZjpL~d#2vSs)oB&``_?hd-1gwBWo72%Wt>hNG}K?KgrTt4O6X5eV-1Mjg%}H z*M4Mi+|S(*Et<`r^?Xn?n>DxkR^#{g{OO+fo}=@7jzS(A-{X_;UvS5T{&}H4E)2~J zLovZ8H4RI}BeC33$vS%9WRo1FI5(F6=FVvK?Cv?&_fCK3bbNdJ{PyN-?)o{Lge&Pu1-tP zmYL`%sQ?#KQ11l>1+|%MEfqLnp(D9^Lx7Pj7TTX#`bvPdq(E>jKuc%rKT69wdZ2lW0GlX zar^G?4SZ+d4!^J+b~)GfT-_75te>~6kBmgG#6ZpHj^7axut}PzY8>3vu-!Yfqp@LV zaEEVjw`a?aExzrIgTuSLJ9anh+BH1r^EK|?()ep3K}*)8*hanbESBYQT5?sa$4D#> zmL-CjZ6uU85N?CpY$Lnf+Q#0kTx>Lb*<#zvvPokoG9-o;RLWGDgd4Ol1VbI%mLKD{ z5`>o3I zO)|YIM7Hzfj$3#49yoNed3j>a-8Vn6PtQLTaAyD)RYrAP5lapO^3%r zcsv9$a6(O1{Swp+DItyx0|{IuXCdcQL+5BTv20i}Czw@ZV}cK*1w&P`x@1#%KvZ5* zKEy+F$y}onHxo=^0biRVh z$rn4og6gVX;PRzheIt5I@g9skq3NlpbgGFJfoo8yQ^S_(m!LoZ5!Or2lyh;WqNsQb zd5N?PAj^4${-u>lnxnx`6VvvD7DTX${Czb2y7{R&%XbQ2F~728?GiH181Ut6x;#}L zvc%Mt%|@X1TtX9&bq9Y12Z#Y$)+MY&TGsWnbn7EpTFCWus1|OsIB5$vc|9u|9zIAD z84O}#l7N|J{PIiS&hYAHBp-oT2ZBX(tpzekgvzoN4<`a{h-b0(wY2527`8J~2x!pM zW#ItFNHCZ7&N5Vd~QPtr-P_7ohi5UXa~W%qcVz}$%Frgtowvlkt!p#!?(+qJXBQpxUHjkkB)skl=lH6NFHPeK$bd3@5@Vd>O} z!x{oY5P{o^ZLBY`-?U2^i!WH*DYaLm~=fLyZl}O<|yED4( zp1p4Nm3#JmwFPb`g^7gV6uRfbmX4BIBJXA>lW;F_w&F`isfyTtQ&DK z(9DbXa!R6`@8#6JrU>F_-KcBlH-`fv^>|7>L;O4H^k?nwuM!|AW&Qdo)PnYqPS73# z1h^3(z)h-dXHQo`0z#u1>{3+k)V3)5x*LYD#Gps0YtSdH=`<-ZpP+{rEA7aG6v+v9 z7v@^**UIFQP~M4zHwCuM1N0zpyJyS|9`zqsc3clhtP-sZpI`-~y5zg@VB2PVQu z(-;z~D2TkWsG&i*aMg%hSvN|#;)|#v8{e(?804%qd-~Q%m^mdTSC_jZNg{H;4e~N?qoG0r6ORc2xfXog@|FOxXo^3zi!D7 z@5sLZ5m-{Wo$0!uMA@)*zQ}S-A*=#6J4|MrvxjYm+6an}ZB=OTvJDOGhunFI!!{)) zPJUrAC^hU#%*0lfHq9 zLQWb2KhqZ?J%xSkptgu6B9jrCK#A;LSF`Ix??B73Zdcp$E_ecCBas{gaSW+g=c}43 zm5Sygowd%+OPdUeA`-CDW=pJGp7+TvJi!JtBR`VG$}NfByB=Ik?bEaRNq=A_%J5sb$=&aWYN zNX6_Qm7%yqGA3+?4!b%|92_`y!qs!a#TW=n06#5jw48sm1Cb=)2L{P-(pK?7eyB zU03w@%!QeuNKRxc4)+z_I{K|M${tX(nir|h7@OoKpD;14W{`gn{3bLLaCM|;S<41T zgOs!vK|;qg;Pk96@a+fpqzbFTCybyw>m#W8a=PSCVwUpsX5(0tzBS@(y1H~YSQ2FI4ftb3>0J~Eo&#&o7^ zCKx>#x7FUW)z0NoYO;1X@y4-FwOn@HysZ{cB+E)?630!e=1mZ^{nS+asS)q+jby8R z%>2Oppgi|riT;NrmV*shRQcouNKF_2D1`7SZtOm{$G@bvKXQD>PT=g<3)UiN3c(w> zLtSq01elHUH|>Dij)b;t{G$I4Fsw4TVUV>R)say$Cweepq5}s=?F@%sk=&Pf)HFL2 z76qzXJzIFO<)d0Hlp*8C>T z$~;!er<_f1en`O#+_K`9!Ugc2UCJJr_2^4z+_OL)T(&OLE5mO-ozxK<(&SSFPM2LN zppyh>=#V8+txR7f-7KhIDa2S3j0#C!>nP-C2Fk270wz+2PFeo zBPNzg0`~#r$k!9nrtxl*IcLrlZg|vO1tP{m42ZS# zLBgWo4D2Zc>%;=8Rc39%D4ggXI3XOBnYYFi?I#QUf0uyGmnoR0fTa8&5MQDAs|XSX zR1(IJ>^yiJ2z&+lROj0+`$IAv(||r>s{{vJYlp^y3Er2`QJrLSLmgfd;V6SG9eH<4 zm}p*8>^+*#pr0{2|4+ai9Gea=rSK>keycy)9DVVdUDMwCaA;<|ZjHEL{dX7Ee;40> z`Q4Z2TH_mc-`%+Te(pMH{q9(9lVolBnLT$gCwFGYTdSEZ-puK@_Q&j{I8uoHFJz{N z`)7Bur(hsDLw`KCzn|<_DZ9OI}rM zk#?g`rm3x0DR_;7*C`;p4gdlys34qfjZS#Q2=&~5qIZPJuyx5=Fa8d_pn$+oa2H;x zzClx`)iMX6ERc_>wK=|c^kco_6AhO5BQ0mhVKF&V%4!KD`n&`xW8acbwwuZc@ND#n zQ6*#i1fXR3`m=DcKcSXXB01q=JpToVdnk1*DM4jNs_`+FdULp$B zA9}?l9>Hrs>ZKBnn;LnA5H7ytz!ft%Fzke7tcS1TOV%N@0VQRVOn70M+jPr&J9yi7 zXOGl+Qd;voxEl+W@wny6yyc4Y%B%C1S0&x6DHx8N*!8Q7sD^pj)608IrV)MCVE$?P zU}||U29rWUt?3@^mG85?^7AJSrvA|)>wsqtCM0zjOorsT`8p#IRiiqP%yBpYk7bu4 z^#Vo#Z3+`furi_IaP|!@!SXB9Nv?31W>H~vrX51XB~*w{P&~Z1otOts592^XQU=Ey zfRSV`LE>*GzK8d0-23q*z_2V&SLW=- zTf1+MNO8kgkrFIZlL*+Nc1Qsy?@AnAr?w|%(l=B~Nc?{$8sGv3%f-`IZplGJl5 z*7!oa@$7u#*;wOXZ1WHj{$`U~Pm^1G2eo|~$|RC?>i20Hm$2p#eON&hVMU~c=);QW z5WCHK*~67Hm}VU27XQe_zEANLP9|C9DxM-ciWJCEq=MhV0a7v*P8UU8KV%TypQ*+K{N*dQ;az?RdJ*9uF(l4flo}FK4)gtg02{P z5Hq7V(@D~muk2@93an98ERW0xDwbiADZ~`8R%{L5#n<8usyW*qo&`;QOv6yeO8gWu z{!2^~;1b&!=vNd2LigFAe4h)FCcq_Si%9k;z9$Y0e(RZ^N#L=lfqVgWFj+sW2xv2q z#S_{_f|4a0vAaUieFvq~5fd>&k^dMnUO9}A;PDB9F$&X5K zlpN$jIh^m=8-{>?1+hwT(XnRzB3Vov?x>S)OcZ%Y0r? zDp<<`ee%GGOF|3bRyeD+7RZ_pDxt(ng~)SgVr)VTSJc+R=m?g|`;=-|bX1Htv(t8) zoE4t&3i@~Ov8JvLX0Rj%Ro8rSjFdI6@`vPX22iB@QOQBSkbV&r9~=9`5a>vk1=aB`NU!I?;2f zjs)UonMpNSF@V!9`!Zr)c@+0Kuy;_uSelwm@VanTG9y{D!-Ez9D!q(GCXBFZAi-@| z&q@MwG9lZ&4=``+K1!;UhmVPjXwa5THkmg;C5zv|TQ*L>z|gf1Ou%5_8)UbXS8-2Y z5!Y><*KM6Ezg;8=E=jj_L3d(N@4)-*GyCu9OX9lPd0p+d&);f|)ivKaB=rwSy4s)W z&aRw_I^@nEoRbyvL z!c&Dgo?ca&$2)0Z<9ZrG70{${A;HgEex+81+TxKm#!mSEYP%NTrmi!sYwP`%EX(rS z25d|KoA5NoPGW3~c^C^JWJ3(bV4Dyi2pRKGAW`}>v{URP9m})LL}|N=vTY|$n_1kQ z?#6Ah8@JQlULiSB9cPl=W_D+1cV{7>VUwBN+3!DB_eyq@N7LCmnxp$T_uO;OIrp6Z z`TZpSU>kEb&(czCDacwkTv4u7WJp}0LIN2H>lG6BuM!K!zew&qMnaLS=Lx$REMXrm z`n5nWJ3g?Qxb`-m7oD8J(_Y0l0;d8@zry*=R^g4&tnf??a%NxrxWNu zMxM^)oIWaiydsCL2QDyuxxMr}-%YxKhWsy43R^1*mxk8eXnd)0GVf-|t0i&AL$@3c zjV*a|H^0{%-+L&s_YmKEG~RnM(t9%6dMdDMUZWq`cfIFoPp~nZ_e#mjC6hxpFTZ+u zWSK$$_bs*LVMX_tZoD zjzM03{Jn>F@|M-%li@?WX$#y;fc$$mH`fG~Jy)ZB-|1R>3e%3>7}$~iGVxk$qtWxn z&Ks;1GvbPD|kZFkszx`smiWHQn~vKp?!D#a{0#48#9 zSz%O|hF4^#K#r!qNg3%VQY2DF5ptL3UR>LoKKg{68@3i-9eAyCQj91Z|hy(+JSs_9j`6kbi&nr!dF3_ei`<}9UG(^2h7yVJt23ZhmRg9;no4s+Y$%_Fsh z)E5|ALTN4)kgYW?C3^<+F@y*z zoXsB zi)p>)hTsrNz&4=feg&a# z!CVfwR>;}}co2y^p|gzjZt`nH@64u;1t^jx_+^WDu}vU-sJe3+RtD4XX{1tClrwH- zPI3AqsrSf|Eki>><^qfi@(~Lt2-X;dMVt*hS>OfJ#_5G;7fy1<7$9GW;yp>QRT??(dO^$44n&X z`@mch+!r-h26oIF?W05Em&Y!LHK8XbmrU-v+4E}8qJ+^QQbC9-LG~tLo!b4@asVj#V|s?9ND4bI|>p_0xUNp8fUuv9mb5Wp_qRdjsw7 z>nsGbq9^@POjVLFm0Xp-r!hX?6w13%@={57IG(rRR^A4jhl!xs8rVUQELV{8h64m> zera&ui#-!P;el}1mSjiE2;}0h{-o46zXsG zKGQpTWmd5)E?*OouX(LVAYf-!#P|0__V+~}Jj$Pj^Uj)>d>DR~8WZ3M)%K7rTpFv~ zIH8zoO{lHUw|(!S@bYN!+NfH-1#)!P}7w*>&{`J8b1@GyKHFfjH9_QtaG5N`PxhA2- zn~aZVznN21G{ z`Rc9H5Bzo?zt_We_08@*8tpj7@9ro3!$Iy|E)4AjS!e%^lcAGg-_(J)eEUatJ2+Xv zUhbn0t5IR57k{JBx?87xtH!q5Vx8fdEAjWG6l6?f#ndS&DJc8?n5^Jkd^vsti#GSi zAog8aA<}RXO5netg9lQ;K*iYrY zaRt=y;ti{*YOMmc6tWv_E-Wd44^ zsLrnj5;ZNpLvxyxjQB)9kiyPm>77%xbar%X+v8>dN!uVGTuX}x5eOe^B#T}cji%Rl z_7p4SVivK?$i_v7%)Tbq54Zt^u$IwhBmne1PkS#QNf|X_NfH(#9mzI(h3fgDD207N zL~W$-w=5%?-w&LQnx2RZoaT@8joJYsY@e`)>|x6*_LuFG_9@Hj_Mh9Q?Y}MKyAMQn z9E_SDMOKO){=~crla+ZiZ`?8F7}W-s!*#6srRtC)?BLaF6Snfy8gXGtGu<$Akqzsw&HxL`q4A4j7h!d& z3g^C}d|4T~7{0_CH%~vwySw7J*TY=>(N@dJesT zqI}O%@*Wbuna!pQEQ7@cJd~nVG4_S%Q%pX~jI};bKD&`7S>ixQ&Qi;n?@&V42>1(K zW`F!vm+;?rLim5;EXyU#y11Wh7;a=QN^h*V+btJnUCb%+)C>!`%-Pm#v+Kf{d6yku zKh2bo8MB#E;g#1R))dXwZ6`2G%RTaJbFo;8pkyS@5BX4w#haKu+!-@ja0w-F3@rEn8+1nCVRw*;2JsKxT z`xk9#&JBP?Wc9~3NSY9m7$)PXekzs?V)P(3IqV=js)a%8y#PsbW|356?>+H(V zn@oK{A3P`Y!LGj&{xf7B68DOByqp?)*~W^RjTOk*Ap`m%qYiS1|K}dj_AJS0<(#ao zjIs9xTIVUDRXh|B7Zz9x#u8$Qx%55D7CcEoaGu$|D9J$})q<(j9!y)0_)!9?F5PqJ zJH+IpIe`8d&z|Fz(~95c2C3&7Alxqs>&TXVAv{DT)Q}LSM3|{r7C~A4_;5dkV3**c zQ<`js6iqNiR4RquNRbE-1rYr}cx9wmz!i#fSTQgNbu%!GfNaE~V`z^s+d<@R5Omy7 zI09ChJy!@JOE7MNqC52{Ar6EXP#wq+gx&@OO$wL8aLnMyxm^gM0|rxEohUla8N{F` z*Hl(IQ^(`#AR^qJN;L&4h+DJ_3Q2g{Dnt>}U`$R<{v(4Y*``Un$|pqNyAnG?|B&o3>kb#3!ph6;0~2A=&eP_8#qTHWD2@dtQED? zu~R^pLJw0D0g$5~rVA7khXvy?}r4}6*C0|X-YxR(Hr?z;*OLaYZJSeQ8So23Gb9DPi!Ih43eM;WN1HPq-cHn z>Cs*E=-dH&mnh0XU(e9?js=4-Tfg^~_Rm`sMGoxVLt=5oDfyo(7}J-r8+ zv-!SHiHnkHN`8Q3&g|N@uXDF&TW`mHce8s(=N=}xfp(73IyWdEQ8>O?DuourIdnTn zT80-mr#O14chC!ucTn+jN}<;zbL9L6M9QrUlP%ifvkJN9a;RtF&%fm}wseZXS?3gT?YK}MV zi8Suvw{(KCHg`jK0q3J1+b6l3>Q~j#6`T2*hN)$-hdcR)oVmJ<+@CPQ<3U!AMPI2-2oss&T z{H9%i0@EWBhMBi@#P;;^9Y=U;U&2~|D(bbUqScNn>g}kap&+g=jp$2*Xt|0z7MZc~ zt`(IS;qaJ|6G2P6mv83F8>U*PTV}Z5$$u@MK0mz*IN~u~PfXW8ueaRJ;Vc^= z|1i+&8?1=*5!iLdgkpdPrZ)$6ee@v={H&YVfcbh}`*QgUN+b*DcH*}|hj4dEd>{CH zx?PMTt79&K`o*-njfV0wG?evh+7oevK%%CE!oQ*%L^TO^VqZudrvSyBZ z48}a{k3hQEPDq~GnS|jOJ2N$u+L`gEcKE|bQ@1Ttq{>lnN`%7Q{Xj*{khUTtkHKst zILN_IF?=9GPh8kPDWb2FWwS_4dog_BJ0#BtucFK8%%YrS$X*~Kq4*B3zB1>Mp zje=b9T`+(U>rUzf!c)&Ck^v67R3^wIApd?AUd{5<)B88E+DN2*I*?yBA|1*arIW_Z zqKyPTBtM`{tm{HZ0P$>xCN27r*bG$$`JT0B@y0YF7Hy*72myd4#co;=@iynTF`8f+00z`1*7`VRa2#hfQ|YjJio|>=^OB-Zn3t%$#XTFO+7)Ln z37%rGCiWD1@;wgZfPj1P=CQf*M6YmfNyc;0r)bsG7{V9*>FbKkQ?wXu5u$^9m)%tW zMSBSw!6|bc1kGOgg~}|<-m;kSiy*X4my557HYl2j%V!(jmdiHgMFR->LcOKlvJ6%B zr;V5_E03qtQiFu$rY9>jE&= zU=q+7jQ|lNO@}j-FrEE_l#ew-Ded`?K-16oGS*=4(OK4rM6WUpI`gDtK|cn7Q39Tl`eIHg zaQ;G+M(U?Iqtu&1Hr8){Nl*S4N@yZVhja8PsQBE|L&sTv2z_*evJgKg^cL&9zo&d^ zfw6^20nI#2SIZJf0<26iSq zN8+C25zq0s=fo|~iEj@*zka;o*@ocb@v^m%vb9s&5ws*))*8**HvRZ)-rktW6+7dL zo;eq2hbkTx1?yg{pQsP*yWx4s6E&;~w9V@ZgVj-8WuWx~Qz5QCJn?Y&&}?x-yr?Zw z)D|sjj~8`DiaL2`SG1@*YC3>$mHCeG-mzYO`Ig!IErC7r_6pv4IPM&XI0xd+Yw6ZZ?*%GP5E5#~z^QX^5?cPA=zdpD*W+)HoV}{jJ=K^gBmEkK-ffKeB z0^-?f8$CMe7*QtdCC_xiZlP*@LTw6l^9TCw<>pi?Bl0DI_K}mpO~?nueX|w2k(L87(?K9-t4z-~1dqq_s&D00&s)nwxi{1= zsRgDyYJG4-HE(bP3!;X~KwCDe4!}fL)ZA3V9^>-0%fIWIx-fnAZ~gqi!>FSU9=4^_ z-6dlsfK*LbixZZ@gejkX*fHmg>&A50yO*yctkwGtnc6h3){b~aTgKbR+D9As(%SHa z$+JK4hfndkEmQ94O*5^$8*tl)`2)SY>&UFS?}Nj={|CWo1c2F59E zqxHdtA07+W{NQw`cXH>{#i_?F zkxRGfFX(1R3wdEwOGc|StK<|`_Do(lZFCFe-UUn{n4^g1T1ZQ|jGHmNq^NzABW!67 z7pTqD3~bBB3yXXZFb5Ww%rWy*7{-E<(uievB*g{RcqRPpBqdcg&NUkkL_Vex&7bon z?w5GxPjc@t#Rc~E0F1j)XR}ymC-{!V8_aLfZnV)7L7SkEVTz z?)`#-N%48l1MjFO1P7RYNc19ejxq_NDKb^_FNeC|I08o>JJmPbkJa0kvKy%NUZNnK zWYcz;7REVwM`!Cc-!E_vp(^a?bP)u@9>0OfvdFIwWYU1&A{|0s&MXo$$h$(^%&0fO z>}4S(U?)LUVoNZBD=;eMc{=fRN*Fi*yMBcZ31C4$g?WzlNTDqFR?!0P`)5l2K*bBt`m>gXsQe|qfcaQSRO{fItcFC0HJb_TVXwQm{G&8zhZ zptR;!#`9|;`8Cn}2jcms`217h%ZO1BsoOSl0f7plbzSkgLy@{e(Yjv#*r`a}sYGjM zywwwF^~77dZ?$#@i{pj0k;2+36<=5zD}01Md;}iN5Ha7^DN|?7$8=1sFlsZlnF}l)Om^vq$jEsd{_+&m8ORozwRA4h}PT^rb@f~h%qknP z<9mjVbOd>d(K<8)>XznEA5EELuY2yXQzwoJxHHOgmq^Vc1U*nuri+wVsFX{z7oy}W z9hxcOD7lMs2>gv8u<$qaou?fCNC_KYPte}?Dfs~XR2I3Cvw~! zdR9hi3+Ot2WP{T1@sgrWaqOx`SSj# zZGe|q5*pq0qH9IGttzUi4p5Lfqxt&5YX^D9>ZtJG4JavL+eCQ@8tU2ue11n%yCn-Ngn13xuRr!E?1J& zE4UpT%FfZ<&oOcpw`EA~=Hl=+9VVC5ae2vpPKiuOE625QNwt|%CaV>kHEFhRmfJP# zP9^6cuW?7}PCB%*3pt#b05Q#}3)o9)9b9p8qlR;Hw;gVdd*F^yW-ov4(fcMkNIsE6 zA*+)m6n6K%mO`4|E?YTC7l)@C z>jT=`N?>hIE@LR%w@Zu`MZl0;0)SpBeoGRiE0aYkytIwgwSa@e8j@69v6oy=ASp>T zp=~7ffGbGa$R$2$CBNmQ8P282W#lfF9OPg$ing$w;?T88C9Ip0M>(byNw(*J^t-)A eCfASnW4VRDm#atet~;(ezOe@!hP;T4>i+|7V$g#C literal 0 HcmV?d00001 diff --git a/.github/workflows/reusable_claude_pr_review.yml b/.github/workflows/reusable_claude_pr_review.yml index 8fb1734..6f204ab 100644 --- a/.github/workflows/reusable_claude_pr_review.yml +++ b/.github/workflows/reusable_claude_pr_review.yml @@ -28,9 +28,10 @@ # only on the full review. # - A sticky summary comment and a "Claude review" commit status report # what is still open, so authors know when the review has settled. The -# status is set when a review finishes, so a head commit with no status -# has not been reviewed yet. It needs `statuses: write` from the caller -# (see below); without it the summary comment alone carries the signal. +# status is "pending" while a review runs and is set to the result when +# it finishes, so a head commit with no status has not been picked up for +# review. It needs `statuses: write` from the caller (see below); without +# it the summary comment alone carries the signal. name: Claude PR Review on: @@ -84,8 +85,11 @@ on: description: "ARN of the OIDC role that can mint a Bedrock bearer token. Kept in a secret so the account id is configured in one place." required: true -# Permissions are split across two jobs so the job that runs the model never +# Permissions are split across jobs so the job that runs the model never # holds a token that can write anything: +# resolve finds the PR for the head SHA. It declares a read-only token. +# start sets the pending commit status. Like post, it declares no +# permissions and runs no model. # review runs the agent on the untrusted PR. It declares a read-only token # (plus id-token: write for Bedrock) and hands its results to the # post job as an artifact. @@ -101,6 +105,7 @@ on: # issues: write post/update the summary comment # id-token: write mint the OIDC token for Bedrock # statuses: write optional: set the "Claude review" commit status +# (start and post jobs) # contents: write optional, instead of contents: read: resolve review # threads the review judges addressed (GitHub requires # it for resolveReviewThread). Only the post job, which @@ -108,22 +113,20 @@ on: # No admin scopes. jobs: - review: + # Resolve the PR, then set the pending status before the review starts. + # These are separate jobs so the status is written by a job that runs no + # model; the review job's token stays read-only. + resolve: runs-on: ubuntu-latest - timeout-minutes: ${{ inputs.timeout_minutes }} - # Read-only: everything this job writes goes through the post job. + timeout-minutes: 10 permissions: contents: read pull-requests: read - issues: read - id-token: write outputs: - prepared: ${{ steps.prepare.outcome == 'success' }} + resolved: ${{ steps.meta.outputs.resolved }} pr_number: ${{ steps.meta.outputs.pr_number }} head_sha: ${{ steps.meta.outputs.head_sha }} base_sha: ${{ steps.meta.outputs.base_sha }} - mode: ${{ steps.prepare.outputs.mode }} - prior_sha: ${{ steps.prepare.outputs.prior_sha }} steps: # Resolve the PR from the trusted head SHA in the workflow_run payload -- # never from anything Stage 1 produced. Stage 1 runs a fork's copy of the @@ -223,21 +226,56 @@ jobs: echo "head_sha=$HEAD_SHA" >> "$GITHUB_OUTPUT" echo "base_sha=$BASE_SHA" >> "$GITHUB_OUTPUT" - # All steps below run only when a unique open PR was resolved above. If - # the step skipped (no unique open PR, bot actor, superseded head), - # `resolved` is false and every remaining step (including the credential - # and agent steps) is skipped, so the job finishes green without touching - # AWS or posting anything. + # Mark the head commit "pending" so the PR shows a review is running. Without + # it the PR shows only the collect check, which finishes in seconds, and + # nothing more until the review posts. The post job overwrites this status. + # A run cancelled by a newer push leaves it pending on a commit that is no + # longer the head, which the PR does not show. No permissions block, like + # post: needs `statuses: write` from the caller, and is best effort without it. + start: + needs: resolve + if: needs.resolve.outputs.resolved == 'true' + runs-on: ubuntu-latest + timeout-minutes: 5 + steps: + - name: Set pending review status + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + REPO: ${{ github.repository }} + HEAD_SHA: ${{ needs.resolve.outputs.head_sha }} + RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} + # The context must match STATUS_CONTEXT in claude_pr_review.py so post + # replaces this status rather than adding a second one. + run: | + gh api "repos/$REPO/statuses/$HEAD_SHA" --silent \ + -f state=pending -f "context=Claude review" \ + -f "description=Review in progress" -f "target_url=$RUN_URL" \ + || echo "::warning::Could not set the pending status; does the caller grant statuses: write?" + review: + needs: resolve + if: needs.resolve.outputs.resolved == 'true' + runs-on: ubuntu-latest + timeout-minutes: ${{ inputs.timeout_minutes }} + # Read-only: everything this job writes goes through the post job. + permissions: + contents: read + pull-requests: read + issues: read + id-token: write + outputs: + prepared: ${{ steps.prepare.outcome == 'success' }} + mode: ${{ steps.prepare.outputs.mode }} + prior_sha: ${{ steps.prepare.outputs.prior_sha }} + steps: # Check out the PR head read-only into a subdirectory. persist-credentials # is false so no token is left on disk, submodules are not fetched, and the # repo root is left untouched. The agent reads pr-head/ but never runs it. - name: Checkout PR head (read-only) - if: steps.meta.outputs.resolved == 'true' uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.0 with: repository: ${{ inputs.head_repository }} - ref: ${{ steps.meta.outputs.head_sha }} + ref: ${{ needs.resolve.outputs.head_sha }} path: pr-head persist-credentials: false submodules: false @@ -246,7 +284,6 @@ jobs: # Remove any symlinks from the checkout so the agent's read tools can only # see files inside pr-head/. - name: Strip symlinks from PR head - if: steps.meta.outputs.resolved == 'true' run: find pr-head -type l -delete # A reusable workflow does not check out its own repository -- the only @@ -256,7 +293,6 @@ jobs: # see tooling_repository / tooling_ref inputs) into workflow-tooling/. # persist-credentials is false so no token is left on disk. - name: Check out workflow tooling (requirements, review script) - if: steps.meta.outputs.resolved == 'true' uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.0 with: repository: ${{ inputs.tooling_repository }} @@ -278,13 +314,12 @@ jobs: # rather than diffing from the wrong commit. - name: Prepare review context id: prepare - if: steps.meta.outputs.resolved == 'true' env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} REPO: ${{ github.repository }} - PR_NUMBER: ${{ steps.meta.outputs.pr_number }} - HEAD_SHA: ${{ steps.meta.outputs.head_sha }} - BASE_SHA: ${{ steps.meta.outputs.base_sha }} + PR_NUMBER: ${{ needs.resolve.outputs.pr_number }} + HEAD_SHA: ${{ needs.resolve.outputs.head_sha }} + BASE_SHA: ${{ needs.resolve.outputs.base_sha }} RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} run: python3 workflow-tooling/.github/scripts/claude_pr_review.py prepare @@ -294,7 +329,6 @@ jobs: # present means a compromised release has no role credentials to exfiltrate # at install time. --only-binary blocks arbitrary setup.py execution. - name: Install Bedrock token generator (no AWS creds in env) - if: steps.meta.outputs.resolved == 'true' run: | set -euo pipefail python3 -m pip install --quiet --only-binary :all: \ @@ -304,7 +338,6 @@ jobs: # the IAM credentials, then unset those credentials before the agent runs. # role-duration-seconds bounds the token's lifetime to about an hour. - name: Configure AWS credentials (OIDC, mint scope only) - if: steps.meta.outputs.resolved == 'true' uses: aws-actions/configure-aws-credentials@e1253824e5c10ff9df46874f81ed3ec929e19cfd # v6.0.0 with: role-to-assume: ${{ secrets.bedrock_role_arn }} @@ -312,7 +345,6 @@ jobs: role-duration-seconds: 3600 - name: Mint Bedrock bearer token and drop IAM credentials - if: steps.meta.outputs.resolved == 'true' env: AWS_REGION: ${{ inputs.aws_region }} run: | @@ -341,7 +373,6 @@ jobs: # re-reviews the same changes. - name: Claude PR review id: agent - if: steps.meta.outputs.resolved == 'true' timeout-minutes: ${{ inputs.review_timeout_minutes }} uses: anthropics/claude-code-action@58985842b834ed26087302ba27d07bc24ca8697a # v1.0.244 env: @@ -368,8 +399,8 @@ jobs: instruct maintainers. Repository: ${{ github.repository }} - PR number: ${{ steps.meta.outputs.pr_number }} - Head SHA: ${{ steps.meta.outputs.head_sha }} + PR number: ${{ needs.resolve.outputs.pr_number }} + Head SHA: ${{ needs.resolve.outputs.head_sha }} Review mode: ${{ steps.prepare.outputs.mode }} The PR head working tree is checked out (read-only) under `pr-head/`. @@ -506,18 +537,36 @@ jobs: # superseded this run. No permissions block: inherits the caller's grants # (see the top of this file). Runs no model and no PR code. post: - needs: review - if: ${{ !cancelled() && needs.review.outputs.prepared == 'true' }} + needs: [resolve, start, review] + if: ${{ !cancelled() && needs.resolve.outputs.resolved == 'true' }} runs-on: ubuntu-latest timeout-minutes: 10 steps: + # The review job failed before it produced anything to post (a checkout + # or context step failed). Replace the pending status so it does not + # stay pending on the PR head. + - name: Report unfinished review + if: needs.review.outputs.prepared != 'true' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + REPO: ${{ github.repository }} + HEAD_SHA: ${{ needs.resolve.outputs.head_sha }} + RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} + run: | + gh api "repos/$REPO/statuses/$HEAD_SHA" --silent \ + -f state=error -f "context=Claude review" \ + -f "description=Review did not finish; push again or re-run to retry" -f "target_url=$RUN_URL" \ + || echo "::warning::Could not set the review status; does the caller grant statuses: write?" + - name: Download review results + if: needs.review.outputs.prepared == 'true' uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 with: name: claude-review-${{ github.run_id }} path: review-context - name: Check out workflow tooling (review script) + if: needs.review.outputs.prepared == 'true' uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.0 with: repository: ${{ inputs.tooling_repository }} @@ -527,12 +576,13 @@ jobs: submodules: false - name: Post review + if: needs.review.outputs.prepared == 'true' env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} REPO: ${{ github.repository }} - PR_NUMBER: ${{ needs.review.outputs.pr_number }} - HEAD_SHA: ${{ needs.review.outputs.head_sha }} - BASE_SHA: ${{ needs.review.outputs.base_sha }} + PR_NUMBER: ${{ needs.resolve.outputs.pr_number }} + HEAD_SHA: ${{ needs.resolve.outputs.head_sha }} + BASE_SHA: ${{ needs.resolve.outputs.base_sha }} MODE: ${{ needs.review.outputs.mode }} PRIOR_SHA: ${{ needs.review.outputs.prior_sha }} RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} diff --git a/test/__pycache__/test_claude_pr_review.cpython-314-pytest-9.0.2.pyc b/test/__pycache__/test_claude_pr_review.cpython-314-pytest-9.0.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..84a3b49fc1aa28df5532ec33495d3eec52e89a2c GIT binary patch literal 73118 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 Date: Thu, 8 Oct 2026 09:38:17 -0700 Subject: [PATCH 2/2] fix(claude-review): don't leave the status pending when post fails If a step in post failed before Post review set the status (an artifact download, or a GitHub API error in the script), the head stayed at the pending status that start set. Report unfinished review now runs last and also covers that case. Also drop the __pycache__ files committed by mistake, and ignore them. Signed-off-by: Stephen Crowe <6042774+crowecawcaw@users.noreply.github.com> --- .../claude_pr_review.cpython-314.pyc | Bin 60428 -> 0 bytes .../workflows/reusable_claude_pr_review.yml | 34 +++++++++--------- .gitignore | 2 ++ ...ude_pr_review.cpython-314-pytest-9.0.2.pyc | Bin 73118 -> 0 bytes 4 files changed, 20 insertions(+), 16 deletions(-) delete mode 100644 .github/scripts/__pycache__/claude_pr_review.cpython-314.pyc create mode 100644 .gitignore delete mode 100644 test/__pycache__/test_claude_pr_review.cpython-314-pytest-9.0.2.pyc diff --git a/.github/scripts/__pycache__/claude_pr_review.cpython-314.pyc b/.github/scripts/__pycache__/claude_pr_review.cpython-314.pyc deleted file mode 100644 index 821757b27fc355fa2a35f53ec37ee9b15320a04f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60428 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 diff --git a/.github/workflows/reusable_claude_pr_review.yml b/.github/workflows/reusable_claude_pr_review.yml index 6f204ab..a6f4cd5 100644 --- a/.github/workflows/reusable_claude_pr_review.yml +++ b/.github/workflows/reusable_claude_pr_review.yml @@ -542,22 +542,6 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 10 steps: - # The review job failed before it produced anything to post (a checkout - # or context step failed). Replace the pending status so it does not - # stay pending on the PR head. - - name: Report unfinished review - if: needs.review.outputs.prepared != 'true' - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - REPO: ${{ github.repository }} - HEAD_SHA: ${{ needs.resolve.outputs.head_sha }} - RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} - run: | - gh api "repos/$REPO/statuses/$HEAD_SHA" --silent \ - -f state=error -f "context=Claude review" \ - -f "description=Review did not finish; push again or re-run to retry" -f "target_url=$RUN_URL" \ - || echo "::warning::Could not set the review status; does the caller grant statuses: write?" - - name: Download review results if: needs.review.outputs.prepared == 'true' uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 @@ -587,3 +571,21 @@ jobs: PRIOR_SHA: ${{ needs.review.outputs.prior_sha }} RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} run: python3 workflow-tooling/.github/scripts/claude_pr_review.py post + + # Replace the pending status that start set when nothing else will: the + # review job failed before it produced anything to post (a checkout or + # context step failed), or a step above failed before Post review set + # the status (an artifact download or a GitHub API error). Without this + # the PR head would show "Review in progress" with nothing running. + - name: Report unfinished review + if: ${{ !cancelled() && (needs.review.outputs.prepared != 'true' || failure()) }} + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + REPO: ${{ github.repository }} + HEAD_SHA: ${{ needs.resolve.outputs.head_sha }} + RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} + run: | + gh api "repos/$REPO/statuses/$HEAD_SHA" --silent \ + -f state=error -f "context=Claude review" \ + -f "description=Review did not finish; push again or re-run to retry" -f "target_url=$RUN_URL" \ + || echo "::warning::Could not set the review status; does the caller grant statuses: write?" diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7a60b85 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +__pycache__/ +*.pyc diff --git a/test/__pycache__/test_claude_pr_review.cpython-314-pytest-9.0.2.pyc b/test/__pycache__/test_claude_pr_review.cpython-314-pytest-9.0.2.pyc deleted file mode 100644 index 84a3b49fc1aa28df5532ec33495d3eec52e89a2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73118 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