From d9c7638b3cc30bf54d08dfaf9a3bfebe5d0a0756 Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Sat, 6 Jun 2026 18:20:58 +0000 Subject: [PATCH] test(modelling): ASHP from a system gas boiler with an existing cylinder Pins the cylinder-OVERWRITE path the earlier ASHP pins did not exercise: boiler-1/boiler-2 added a cylinder where none existed, whereas boiler-3's before is a mains-gas regular boiler (SAP code 101) that already heats its own cylinder (size 2 / insulation type 2 / 80 mm). The fixed _ASHP_OVERLAY overwrites it to the heat-pump cylinder (size 4 / insulation type 1 / 50 mm) and switches the dwelling off mains gas (fuel 26->30, code 101->index 101413 + category 4). The existing overlay reproduces the re-lodged after at delta 0 on SAP / CO2 / primary energy -- no overlay change needed; immersion_heating_ type is None in both, so that field (the electric-with-cylinder case) is untouched here. Co-Authored-By: Claude Opus 4.8 --- ...stem_boiler_with_cylinder_001431_after.pdf | Bin 0 -> 79441 bytes ...tem_boiler_with_cylinder_001431_before.pdf | Bin 0 -> 79416 bytes .../modelling/test_elmhurst_cascade_pins.py | 26 ++++++++++++++++++ 3 files changed, 26 insertions(+) create mode 100644 tests/domain/modelling/fixtures/ashp_from_system_boiler_with_cylinder_001431_after.pdf create mode 100644 tests/domain/modelling/fixtures/ashp_from_system_boiler_with_cylinder_001431_before.pdf diff --git a/tests/domain/modelling/fixtures/ashp_from_system_boiler_with_cylinder_001431_after.pdf b/tests/domain/modelling/fixtures/ashp_from_system_boiler_with_cylinder_001431_after.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6c820b5268f34c3d5c99ed90d462dd83e0f0df49 GIT binary patch literal 79441 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 literal 0 HcmV?d00001 diff --git a/tests/domain/modelling/fixtures/ashp_from_system_boiler_with_cylinder_001431_before.pdf b/tests/domain/modelling/fixtures/ashp_from_system_boiler_with_cylinder_001431_before.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9d5906c2376461d72e4551b54d383eefe2b1f6a5 GIT binary patch literal 79416 zcmeF)1ymegx+wYx65JsWoZ!JdxVr@FV2!&&;}$%)1qe z$eAx1{m9ul|MZOePcz0z%Hl!3jI0jlGkagQ2l0i-f7GrLn21v>1z+CB#|9)Jfdl*1_J+6n09y zEJ}v9uyR;gq%3V9rcNwUHii&W2~%Tx6H^uiQ#*55!Cc(zyh1|G5GPYZTjaOF`+7*u z>eBIdpV7|y%eX7|+(TS2Z7^3I_aaI9JKOi%yWSdzh>2C8n~)G2K^}?WhrUE1$$m<* z)ujF8)5N${;do;fSbJSnV`A6S=MnpvWbjkr@uJeN7aE#oBq=?)fq(O8Tkcd6xbs*) zGgsrVuct(BCXNhE7TaWgQ|Arkij!&BC*mWvdnZP4`0bf$7%n)hVgD;1v1WfWIIb3Q zn${$D`s$Sh}Kq!tp%X(;YlY^;;&#EnGV%cG7eP#yH<2Sos z$Y$FLboTf%i@|!md0}VAC!)%Q7q?)4FNyEhm{wQjEVp%2o*s{4lR#@|AyX$kdyw9cvGQP*^ zvecJJyECsFuHVLV+^MM3I6rmPEyJ#^X2s~GhD1kg=9Z#|!j%NJv6BfgmCESM{B#ja zjJR?hkFr%_bH40YZTW?jf^^pCLx}&qp_=(cd>4!UfSe!+Izf<<%ie5jV$?wKhZGqa z`E!CM6&uZ72(RwX97(;b` z9QRTXJiPuNe2GDPj|Mxfd}?RI%!H$^953SVplP3|5y$;$1G2Q{3(sr*u1>Z5%&@|{ z?b_p`(N;MVYjfI&Gd4p9SM=s<8>#gU$^BWy!Z}(b$#WkzXqgpOwDI`g~cNn?ZLcJm}7()cPllSlg zB~YHx(|(rU^h9z{IDD;TJZkT&Z#tV8M>{-=UmF6Rop|ImePM~B;k-cng+(&Iz>Vi3 zoXt;vv;*2c2_IeDC30Qyr*&&78V%k5=t=n^jj_p+t)kA^;gMa}YD63tA4V_XEXL>u zJ}BL~m;?N}26(mc+wOf&;wXuA%Q!!u?W-?koWnN{>m{G`%C<0G|D>pu^KC5O&f?Q) z5KHx~A}+8jycT!{WtjEtFS{GwVPbTxt{(hCOeg$!<|8$jqC{ts%;NP{bQR{IVrh#4mQls+{@UxT1P7k_V}=%Ze)k0`RKmdXJtt?)uppbp>~slS zLoAMzzfW@hfwMLEll=6RH>CVo-Pq`kHfMDsVZ<^S>-6b4DW6*pSki-+bLHMgxJli_ zzPP;M>d4!7cI)l^>8m}7xH?)I{w|uY{B?KxMxVC7%u0c$TuZs^T+URNSz05Y6BFxM zZTD9V-6y^Jc!)03t|awuKZYHb{)h)T_c7X-o(Fgl$%W|R%~MO|P~SoJMMR1cKz+>x znjj9dVvQ$BppOza{Kvlc&ec6-pDL#A;YQxvXX;b>MORsbzm*q&ss<;eaViM@f`Tf> zDdoXjr|e%_7wsm#yduL#`)OlRO~CTpt`{T2-pZF#;HyATh52mfH}}Ljo#{05Yd;7@ z`p&pPEMhihH}_-6=qlckhF-$m%I8lbHs8!Jk{XN#e*DH`^z3qTd)mP}Hb7T^=w1r? zp*pUR2KvDhHE?yPS>-mv(}jQxRZ7&YoU4>c0~Ocmjg6S@{RL%~2wm1=N5W5L#Wg`h2X zz+u1cs_pX!7BSh*wY+x!oKslDO|%$(ZQz2I?yif-*Vr@(W}h=QKdFD`sg-ODtBR*S zq#!|8j`bRsRmv+~u!E0~ze;91jcp`iYp1F@?i%0Md|*}0mv9oP@qvIvg(vkfhz|P^ z>hj-QWk=oRstu}|nYA)5U9J~h9h$jSg=%L^P7$AWeDmliC7SmhHSUcOx~b@N-9+EM zt{%K+xCMI@{OXlZm&fbFE~|{TY{kL8{*q6f5c{oH|2p4X4gdP!7jggrjRO%&{s5yZ z%MaWMOp@T~=}dJBdqU|j!+{e9qXjjKD)7ES7@rbvAJJYEtzfUdt<7lhP$0RV>!#>d z<93N&ZdXy`aUat#(+hC1d-}FeL>NfKuuojg_mpEzYJ=o<-WQHDu9vK;k8rAxH7_+8 z37W6ZyxaT?g)&gn3}^dTjx3YHp3#3mp!T#kltJapizXkzZ1c5L*L_VX1sd44Yn2{p z`tqBwEftoNEQ`uC2E4dXlX~u&Z0(~=B_ygEkue|H$p}x~h!%kMF>5KOi z#NS-_p7a&Af zq@qB#V2+#a`@IPLNT&0Z<3oMyGZpQN3qmro8QG|F4gDN zekBt%)d45r4p95yidI(VoY_KisbLL2H}5z;^Z}*dJK9^+>p}RTe6vmhee}V>2u^`! zR#pzg7h1yNjH-twuMs~v2NfS#u~qcq50<{6npTkF;lpF5hQ@pCmL9K6bR}_-r7Jp8 zVkOj{^u`4yW&34NxcivM;1Bgoo%W|mgfv_g=gdfxMR$Irs{bPAeg+mb;YgJ|^w+DY z&zj*}hFwInobF0fu!X!F_O#1~$a^WF3;l}tUM8)KV^)ceigdMRUhRFuhNz2a{+PNc z`Q87VdWsV&w#%xvTAxoSYa+x<($% zyCkaZE*-Ufii2GTVHd%}yN-R4-Tl2p<$|vKRz$PS)0-jl&9PD)&EiZ4lf>Jr-XNo9 zlQ?#NhCODTkn6!i_9w^T^S)>)%KVk)-wuRclodX&mx^PuPHi-T>YfG6r!s+q&ksnB z00{)Gf=}h4AFV!YR;q%f$Z&XgSB+s@-}0Y>o(POzBx3ms{(fyD8mob~c|*x=8*! zmJ2CWqVmylju_~d3yD|nlKZqnJdUoP;*J;7MgL15x_Hh;38zpY7SAD1F#*p2U&{58d%@P-F4Axai_ZH?V-SaL)XNT5&P|0SlTohUyR0OP;GPF{e11|M*i`Us)pAW zdfL9Cb(gc8g3M@NXF`2B;n7#Lzn@*8yER=1NAv~yT33(v?i8&iqMv*7pA!4%P{d8N za$RO;A-!?$$owu()gy)IRmTHtujWOvTt*V36g7oDj(+LDyJ9CYNzUZh?|ZhVPM3vmb{lcW?hb3qpz))xW{ggr zxeb2Mn9kbt520#SqR!s+F69lTD)Ot>8uGQi`DT;cG7;Dm)&D^WKQWo4K`-wq0(_*< zxl^MIL29ZZBB~XCy>hbV1{e4J&!mw0;VGs(9+Zzs1(93Ckw!;a5c^i0H+(uewCvt* ze2U7}4QGTmA8FM**MfI8;4x%>l3~-Z2**H%jmo`IS(tJVMvqE%Ns!wUK6_xdz=)9N>Rto28q0xU0|))C7Kr{|I(m+>OL;W zmKf2>fjFPqZ}fv5(f=Y9lnD*X#@ZyYS#mceLz)pKCz`b*BV@Gm@oud2vP(J6={Z5R zYH%P%yft?BUEaZnfmJCOL!o#sCU1Gj-3&?J`u zgsQXSXmmyqKI7(cJRE%K)}qK2dI%ShE#Y%9w8JyBosFl3ervBdo9e9(r(e}Ij`4AW zN3Xua+Pt_f{YV5EL!i? z+%d6ZwoBcwx6~G|j>8*b#G>A?lkvGB4J7}{Dw(hMF}`Xl5YWTNx%~EBtnkaxng6}7 zo?jP)1<7yxGqtaK6L}s{Ox^au2XXDPcX%uiTuVD2U2>#}+rejUv^Bc*AhAh`gaums z3vbgyx}{vz?ywtdRM`_V5f6shb7GW_3NBX;bu0vq^rUTa?){ip>Fdy*lN|+*ap~l6 z-{-{09-_tBi#cs?oSpas9YgQ)a_}`Nkq$YKgncW1=In?{jp+B0R(%#;J?0G$xIwjS z5$Pd_#efb+og}DHPYOYcsn4!0z(P_5?_Z0ypx6m)i*C|3Tw6d~-h9W$b-THLGx^Ma zj{Af%562g)3NZ*P5jT2cZCSa2C_UrzuvhG6+yEU{I&bb=%3cU^i9YwX{tl*{k1=Z^-ToA9v?G7=X zMz%7>?o8DLXW=F>j4;y`W4BkSimhY|P|}-|c|`~O+Tq~RV~|+yz*!kTM3Emknl{yN z8*e7kJ2n#^ixT&^t>P66SLeOFF?B;0^^p9fAbt@#S8>?%-y##?bg#>TqY87K%P1jx4JT(sQtNeOvi@6uw74C4DC7 zBiDlm7F%{Ai{}vc5u#k5{yFp=QPFc*o%y zjS3CyB{jPZS6^yY+NDA%hQ5Wz8TBwe8Ca@-mDZs!_U*}NzfbF6FZssDm!Dc0R|0#C zW6*J+GL$J|v8tQ78mb9=FESg9O1wxUY~+Vn{b4tNphxYTI~X|7_@*_#JrC~d`NYFh;g)Qn)Z`c? ziZ3EU5pC+q-2M1cp~WO|6rVq~*++m(Y|sao==gNb8_nngN7@-rQD^cl&}+}Hra_73 zD0>49_@xd04V`8QPXf0!CeUE*?;r$JW=%v9p5B=c7|?dl?-g(q6M}ESai5pG?X~*- z2uMjJnIkC9KS`=6=g{DCAz6iN>0C*AL&pack6Edqt*#Boh--;c(G+jek6aln*&e5i zWJ#k>^tKlf+WT)QXpPUEAj{I8a>xpFj8f2iZuE+aQ7uOyk*RhCuL{!j{M0iDa9Dcv z(oh9VO|ATHi+M$%RjtDkPyIZ4x2-7m+Z_h~lO(LGs0nI=Vo}FY5MF%d4zzg%FE?O~mxDwEY*1%ns36xmOI$1ll& zEIFGW8qe}ig+lG43RPHsOZbM((cU$*3grDl{y{e^kM6OoYwFdK1(Ia}N3MiK+u&$( znd-w*3r50yw1O?q#6S1*J3ZX8a0ZI^gdS4{*oo&35sJMxT8arxc25{cn5v*v{YGLu z{Y}jJicyF;7rB#u2X!KBo3yI+(Ff-P!DA$sR2dPhlI^Vk1bD_C>Gg%Mt~WSzM@f&V zN02bdA+b-t{d98`32d3>8>3|K9NL7UFveXi2z@|JAgda!_Z+Gv=IPsQt{{p!*xx@8 zZV_-%s6<4NTv!fAbtsN?27^w?Nmcv0*;)tf<< zJG|$nJj{OmXd&RkuNY>0JkA=i8eBG?BVEn$?55W0U>9-xQeV%O7Ey%$#~%&Kl!MtW zO$V6fk#YFH46jYkga5996FRqi|5ygS{t+@P#r@|r@Sl_254r1qBRvhvRR3$~X|{io zp621?V*PLFX++42$;9zY+vyLA6bJTrFOj^N>7s#4r zZf|hwkqgDjdCL47abCXtfq)IiFIx6KcdEWD`8m?#$EeRn@gq1dZUV*8@A~gKobSCZ zZV}?%KY>TarBlfk@&Ct#*1)ioJe`Ol4t_lpWDFwS+i5L9O%%peemyK?40O$8iKkD+ z%WbV>=V|L{|Wi|+My<|8Ht82OE%=8Q3!mVhiD;rD9DcfXYXJ;3rTsg&` z+q$fiS^DrpIAz?LyJ@&;>@24&w7jg0m6wV)ClEl&+@bJf7^p`-&3KN>ldz`!ibJR|vYxQ%CCReLZWW zF5kt>vd~oRgqg~Jajs3Ajt(n%xzzsgLd8dFSBZO#&=kfEZ z>n^#QwE5Q3#>|=IOGw)!?g~Z2wQ;*0p`nH(W?d2kKBfm%P}b`b>K(msZBD70mQ?Zd z&%~7Q9kEy-IH?f(ftav>9ihmzCJ^^lkFI^iv!cX_lH}1mw(8;9F*gyzNkbPG4Jq9c z=U`m|+H>P|F&08q*@DEGyu=Y>-b&7fu?tZ{H_^IHIRuWHgCj(uJuT&2h&2Jy7IGmx zLCRcVh;R~U)9p%=ZjZ8mV4&wkQT>}wQ+QXCO{B71P--8*MoBz`~Cn=n~F)dD?hT>ZU6lP5ezKQqam zRCQbP2-H+o=CC>F!;?Im^Xu0yd3pJZ`s~K&_4W0njSX$?`liz8q0PlQ7nJhls{#jz zqb}}SulL|<+)FBDhN<#^$I_Fj`eO`PtW4L1Pj?Ha*KIS}P*sBwLfz}UBBLW04lBOv zmR99yi0R(kGFw26UCj_8t=1f3cdV>+bhNXp48BWAN#*JpQV6$}?PYOz^_yHR#4&_= zx20jEB;N;sZz-qpw7wrAU$na}JaLCt)zW&KvvE=XN`M-T>x?m(dGRoyNg5V6B4YNH zQSiY_aA`y@!r-DEiHJNqoKUJGhJQH(`?R9}s*rBg5qjsDeA>8qs@)Pm?PjF|64?3S z*;#u9|5AFQawhnCs*R^+AOAaz74@4?f zvUAi_4pV$8%dgXJEy~ZQIYJJJm|Q?F;iAF+6~u^Y&1uZ0f>^}gvV74+JHs2YvB;v?5KMT0J|3&!VuzQlai zF68*Uv@G{mh15tBTocVtei?Yz7FT$#CZ_XuELgde@$v&uF649S6UFLHd^#{aB5H6` zDJd0`4?oKO_CeBl;3$$1R$+Y+ikz?Aic)i|y~bUEew(#vYZY5YFGch2zP`?f`_{rM zK1dcw088gub1+9~Y zot>Rt0~6h-@FrXjwvDSOT^hB!;)8>O$Wv5rhT7@#>hu0ch2?A&r`*6ve?|;sgfKr^ zT3UH|In3~r8IO2@XGKoVA18C5IfDg!-D5MO48L8yZBR!*hNAv?wUToKQzLP4O$!T3 zLi)VC1-UefC^NG&KZx1Evfh-TV`Z$bjLsHS7#G|=-%5?SAhcdzUlnG(;b7xDIX*{l-m|e8N`Gx@E?)#KN*yEzWfoN z&!eiL0hMyw!s-)lY89GNkk*exy=~^3XqR7>V`HPjuOYm8g&iVAzfV8M^!4>pON-no z3*8hn6x)={CE=SR(neKUk&(WBwY@H4_ClVqio@Ktq*zdQe$UcXdxxmtNAM5wZZi{^ z_sW-hpOs1WiHAQNah|%IMxsSF-CpHFlZQ6Ioiycjbu%-gPt3ohgD|zx&dzMn^aOm1 z)CPW$xqr(zb)AwMWq;}_}KTZPJ52?$|E^1FVAJ%9xfzsUViS9y}h!1)tLEllA%?nU6f*^@{zj$ zZn%|~hkFigj}~iM0f$iHoRg<^YE!hGo^8h3vwni^m~;5BqLNRRwwA#k(I*OvoNdpa z)rZ(-7lqa%92@kin0x2Yl%;p0l2T&4(h;>Iz1&_~a$g@^53e{`Y0cT|e^vc+te)(x z7MORGRr6?rBBh{qlJ>C7IOujTkO-+qp5OKMvVwAn7h3Qvse><);GaURU|L$k+hLfTI&#(E%i^qo9yXwmtYE)mEJyPG0S#(~-IiLON zm8~*^T4h~WdTj6{4gIDCFRGXPK)fW^)WFjU>5oK>s@&n@1KRJI)%pQjM7Ti z^HlLg=HOsR2*DTDryQY3Lb-YQa?$TV7T2ss)f3$8gGvDcX3PtpAz3#`9_to|n9nh{ zwl{>>n(UrE?HnHJ!iYjyZiu(WE-)*vP65dqfeS65v6qSgR!VW=XKLr;$~G3o-m_#p zW)0^7orwBZ=^Bl44d<@Uiz2Y%a#nDBpiDzpP-q&z4Hj;&3_VmKDl+kuqfL^st)p9}0#%oJ^5+y> zxHjx;0s^JBgIG16z2|gRt7J@u%0%0wfXG?Zv%H_Z!k$&tvn3ILtB|5-IoQNILFXKz zo~V5ex{YW(fDbD_*%Y*kz3RF(qeXvB=A*fJA)2zxph-{72j58+mt9}P4<^%U?UQ`c zA|ZE6zF;rUv3=@wgxvZZ8uLn=Kk`dhAu7~Cky`!bpjc*s;z@X1Ci4&@l}}q5k5RXh ztdhd$*aX|~Sg5%4OUjbM-16&Na#hfn3_b05$eDcC&X*qdbJjXI)ahax?r7a0rzkrT-8 zUk2Rl5F;z`fQMRxm95PxmkVOqVwK4)Vqy7?y8{1R6pwb;(==`4a>kU~5W z*c)24G!hf#1}Ps6y&!uLDwXTIQOr0G?<;vVyT6I|&CyFIZO8X0lQBK2=yMC+YeuKw zgLHG98PjGXCK<^I& zo($=vYSFFWS?azDJU(_TLy3Ojl5~FezSwY>y*dsg;_U3)=$@NjTPQ1Ob;cQm$JMS? zPU`s8S2M1{Q-NyZQRKMj)g~Mi76Klcn;4&_lhq5Aee^QQKfQ6ccrH;NUQ>qXuA%ZM zg#0B1fAH83|BIS0(>?@XtnQ%!4sKRtH1s&)!otFlv617t)2`vSMr3la;%tzkh zV8<68B~klAT!_V5_tb5SF`ZvTOD-~^ZwAig1JorvrQ zni|D;?eCI8Xmp=y*F}n_fBg6kPS9l~_mq`6K;r$vw-4&u>Gh!?_l~9oAyy*H%~7e< zi7g8g_xA0C#TCod^1iM>lZF6>5Q)&22`N-;9@pG^@zo(_J6F`jH|{ZhUfcV( zPMyfxE=3nY7XoZGyfu!&2cNzdOpVTo-4>^&MOg0*r14Gj5k{gOb&dAl>=lkZZt}JG z7~fy;HKiQM=E*`vyFUT~+=`*An@a*-i;S_i^B(V%WYXhTqr9I<3GpfPVrL3Dk|`4{ zB?Z`+xT1zpC`J)?cXmX$Wu)yfhJwCduH~+k4YNMg^RY!^3gDxcrKgSYQ`75+PmfRk zcym_1n%9Bs${$)1UFQTJ^`sSPPfk{;Mek)Nt;i?KfjZVjGK4s=Xh16^Z%y>qQHi$B_jpW&lw79{C0LU*tVR}@py zJ|-@{IBFzx9vf>@BPS<0V`ieyn;w0u3ROkW%g|$n5HxW0V3Edb?yW^?(-(3NIypNg zfYjVWV#gdj%G_npUC&{yPxMm^%td@$+^Mm>w7iw?t*v6IQG2=Mmfsv_9pIlKe50pB zbjDF5W3g{&>Ijzn-Jh+=l!nH*bFdSlcEAID*Bc&=iXff}k_Z^5oYK%%6?-+_l2A*) zT`F7LAA-p-5rbsBK6`%2vwV2KBS>Li9D6?N?J%_-QEoYnWdGH`(NL6^Zg2a*U%I}; zLPGq>)Ol?!-}uv>{jQzf8O`UcpBe=l)mB6c4x>}HxBc&Yb#a(191T|o&antvSnS)h z<-cLcyz&6cPQhzn1Zt}4_Lmm==hD8Weob^eozA|+NVMxnc7QVh-+Ws%etbcU`<$^A z?6czP?WuHp$r6l+4f{hs%fdpFhWM9dD1`-Ov0EQ3Hc#qwq{ODAnZEk%&7b^CCJ^E^ zIFAxD4n8$6a*J`#NY~HhM(}uF_U&5`D<-qOxD^GKp|PRpgL5hK4fJ}Os~xH71RS;w z4?);?@h9OuQA{U}%eN}~SN>1UXmL+=1iw6VYfACCIj`zs_xJaoLfqVrUWWv=j%#Rm z?IkBC!99JN;qB|EzZif#QX?}r{r*N~)d}TM&pQJW!+P(2Aug`*vH7v_X)XZ)Z|M=b zwv&^J@VL9L&lx7n-ExY*;rf5tVL&N-ncUHDd|54E{PA{0zoc1}ZvFxm6tTV#8_%&c z0v9*8(2yYPUECX=+byL*nLO%>ght7go}?5)!uCby%E~aLFs1WoW~D(eDVVooVumI# z?o%$gt6~(iCZ_T;j!+!&-rg~N<4wYk(Up~s?(T_+dK6*C-d@3Z!BZDV7_~1P+!Ik5 zhi3zw6Hx~{+Z)Rkhf6C8v?1X%G&Gb{lu{kex>_0<-+zYuw6eCYcM!5jHSxUzKUUY& zmXl*nfYsB;C&+yts|c(XIiQ|vwnb0E*EGq(6uQ}szV?RhHU))?IG_Rp?yA+bY@8LNeUq(B{DKR zJlx;E-e+UH*vb~ILn2ZwN<8`y=)d9y$$sUPN+OUAx#MOAsVVCD?nlZ9uuS%~jSY42aPq2GsFDgG+Tt!Y zKhG|z4YTypsgD=%f_GRaAJ1r>muHDGv0qLM$GNOB z;RXc^O9#Ch{f@iElt6fQaK$w`1t*4bFg~85RD6axpLS0E-F$Zqi;Mt+JKm>$lNEN= zqX4PrYC76Uf=M~D*G+GWHy0{iGc%PN6fePXiAQp4Jmw()5jwxb5OCN=iq%RFa6K^x?%tu@MTt|64L_MXghI< z+FGs&>^24o`iP9>@bWuvaLRJ59^~ ze-zrjC4*h*Ajv<5_m51oZ_|G+punxzb*?b3CmT(cl`y@^voC2VCJslzjUUq0R1M!G zU$r88^rLpw8o2J~=+w5O)!dgwv?|mU^W5&Z`+tGvXhwHuS z_+=i6qK^d~DV|IjE|NDV>J#=#r-DY_j8G5+Q1o=m`JYQUgknD83sX}eZhvbN8NkGh zRU?MO0DaV|6BH^|2w(D@Jo*EDxI?2r;|kgEyyGz(`L`t;o?Lvf*2nTC;3u$uKHl3j#wUd9`U`iD~+!{FFuJR4B{ceRM(4_?9ZNeWg0c8F|NU-9;~ zf*I|jK)lb8U5XdQUhbT%qxgr{PEP8_`Byk^D-{^4>b1UbN6B zb>%zH-LQW$8pxwV+)wp$&unPs2^4dcYHn7Y9u7KXQ+)$6q@Z}wNhByJsDvJUqPcZb z`)f2|xy4kX5bcGFt>E)_a{=^-L=& zhZUPn&S+25&25VzRsSdo`tEM=MKLia2y|TT_<}nWRtZ|mGyaavg(d!W^w@nklY4?{ z=G8mSImyjtzR&Fy7q7KTY5SPV~gQAk3M=C|fc z42EoPShfrq1z9yAK}}87py>c@Yb}|BFD|{!(<7!S`z*=sV@FcN`M~WwvX4LT z-KnwdMHm{H-Nosa6J_T1^BoG_|M7rjI;?${eF?6stL7}!z!l?Q zt~Rh*OCOY+oQC3>_mb9}b+nH|2dYU#sD5M6ykB2MVyn}1xwG>%Bg*z&R#v>g)7#t8 zS#;Ph6jK0}-bz^$A9d3N!O}(e6T7bLV1H~Ps~wXh?pH5yquD86d8>?Ekz*qHoBQee z>Duh&bw~8tuNgjE(_&S+*PR%9`}!(g7*z%oPYb`^yZ=(hJ(}11_0bTaYJ1BdxB^v< zsFqKG$z`B!ra5L#QZFoiflQe~PJZG{A8U!z!J+VIxNMqmx^!@QT5I@6>rdT^;^z$k z1BR1y8+a-jT6u-}j%@5s5^@q}XJ;+=Ev&7ZSHCagOZX$AYLQmpFR!Xz@$zgOk2`>NlUZ7UdlB0z6pEX!rWfDGJzBwVGt1k z0Z~uISJVt0M3H1o(>qJYhNcaDlbU-|w>x%06X60-u2SSq{uz6~KqD;P~~~%hy*_ zw3eC`ofP3?BCVUQKT9vtD(>;xK*v*QEvixiNt>_d`g||XNjzq}-wUNv)x;tpAz8xH zB0w(s+S}9OXy=NfgC<}jbLf<9>fJO}HRaOX+aIt;dyT)qL2=hYjCs?<>Lrb-ZOFz( zT@*xS_KJyVdU|+NmfLly+G#*>pnBPj@8UIYAay`kW=3g8wGpgmr^h~Ctdq)$JZ<>k zUNSS~hVn=1ovivU{$*do9d z0k#ORMSv{=Y!P6K09ypuBES{_wg|9AfGq-S5nzh|TLjo5z!m|v2(U$fEdp#2V2c1- z1lXeg<82Yozt?&DFWVx{f6{pi*do9d0k#Mjw+I-w$Qc;72pG2r7`F%*w+I-w2pG2r z7`F%*x9IP_;s4<&Fm4erZV@nU5io8MFm4erZV@nU5ioAi|LAdxc>lfh^uIiA5!XLS zPXo3Hutk6^0&EdrivU{$*do9d0k#ORMSv{=Y!P6K09ypuBES{_wg|9AfGq-S5nzh| zTLjo5z!m|v2(U$fEdp%O|M9kn@89dZ{g-VK_dn^p1#A&uivU{$*do9d0k$Xyutk6^ z0&EdrivU{$*do9d0k#O~u=l>C6b!jsjUy=D)fV{RwGG%Jz!m|v2(U$fEdp#2V2l1o z+afmBe=k4%FXJMff0CaDa1nru09*v%A^;ZwxCp>S04@S>5rB&TTm;}E02cwc2*5=E zE&^~7fQtZJ1mGe77Xi2kz(oKq0&o$4ivU~%;G+NIaSbP=G7z<@3SbP=G709^#=B0v`bx(Lukz7;=nc0{E{^!rGwJ`1lN^M(fi zx(LukfGz@b5ul3zUGzU&7qS0)`RRXI7xDd*{4}7809^#=B0v`bx(LukfGz@b5ul3z zT?FVNKob-nGG0XdtMU~J}D!Lf;e z%<1S;PfQ(4|8F0vzXfYD1(9({QBiCB#QaGv7nKOd1;)gFnlqY_!t=|_XSS0!WzVi6 z>tcg{@o-Fgc0O43kY`^RzR{B;3p`Qu#;eGN%*OJ={C!>JmTl!zFRIdwR?5{)D!a_n za5gfNr@Uk%1K*f@??b1Xz!74dT`SB<4!=I=L|&6`Ci4mBqNecd*Es6jII6&3(lB?T zxz3uR)lU_qeQEr;=r8}c`201shnl?^7sK3ake4Cjgm`_%R=JFLuXxo@6(Qaj{aveV zN)t3Lf|lE%OXjYz5SKpx67_DPGl&5+eW$H4e{A1CXCMnJfnr=cRvt86kc?Jqa+^Qn zG1P|@@Ckz5Ea>(s_Fc(q&1<+q?OF45vv=2F;^g5YXX4@EBxmE~WF==~W#!fr68g(^f#)BOz@p}21o3b%Wl?u> zF;#z9_~Rf_tSn-N&ZZCLvi!{fCGCvuO)TxqSwNO{qIS-fe|;`x>EsL%w=i^iI2#4S zKQFVfv%|JDfmk@}u=DVeKTI54T;yC_+<#2GynN)`+&tuLd~D<#92|d|V6SoUa{g&s z*lT~;?=SoOzs>);J*7yU$*xf1@PTv#jpp&&~eh$*aQw=sm6N|?fGR#O%QQ#*5r1*}vKuD`i6%+Quq zqw2wH+6AqZ(;Cq^6%7zbSJobjU?5aoFCA0p$jO>oeX{l+IXv#UA7#<_`jr;*D{W4g zh0KZ9qRt6Z%F5=;rT*Koxda7A{LUr1{4^f{rz^gsg;u*>=ctclOi3`KX-v zsRM>&oV>TsgZ2-7sw8DD6Ej{_*B{(-W9^x?Hj+nju7csbmV^nNYvUe$4f2KtRrXBd z1}XGq9-fACe42)^#mTv=hGc`Ed&)VzP51M(sObM-?V7<7&d%YYy4I|4&rzFxfQQS+ z7rg*tx|I_9Z8ItPJK4=Krvs@Gr6J;}Zz~@Gt{9Wo94JAHi15igZDk_;=HA55v)-mM zFSVgjlk(^5Npm<1k*-0C39m^&qT7PQv!gFQ|J2?4^o{;{#zc7UdsbES!ivZ9R?7)( zHj;MS&^E*ADAxKK6rCAwDTomEBen@Ef&RuKtkd)73oXtvt@exwG}E%SMV=9hvh3zX zku&qt?HF~q2NR<`ZHCfeWnW&~%c*=b!^k>(i&Xo8#j;e4lKJgY44)iB6&KFq!*HSk zoCMOg(sokW%~z3I=D3epDs#VPzf<3fQ9j$ANj-_tm(n=8kc|hwqArRMsKHw=J6Tdh zWroHeKaO|MeTM1q>~V(o`$yG}$P5kJf<(f?UWI$^n<=T!Z zJVf5f0qdMyKc6N`?K$;V9koVT=7vZODE@l}&708ci><3ewZo8FR+h+e^n@xkIyOu+;ShS0xU$Pa#F6;)r>Cg`bvOc1s4M-%>TD5$0^%)SKSvJe zA%u{puDs9s`L-$sS?qCeHMRA)X})WnTKg77b5=OqhQCpZS^ld@*42s}Mf zc6{_JrvU{G(WALoQRl}M?>C_;9D8d$wgtc2r?#%j?p_v;M}J*8H{$^h!aEOK zk-@{Lomg|G!`&De-65;~oHlYHh#4hJO3y3F5Z^Y7H7Dwg?&j}C7OQ>sROIS~iEyy~ zrm~_B-O(+Y$ZtbLNrHD)nl#F1EiI4vlo2zYEjvy`6c#3;BR&5dVOd|(O1(IJ7i^pV z6gl)HX61RcFzdNNICh#^cBlBo7i*=?L(2%<%L6x^kXt3xh)z3q66IDy)A3w@H%48#Qh^3J+X!hRA zcE^Zx547EGj;6jLS0E&^;!bG2fSdGxddKL@YLR2uou4?1(ig$KeCgWpN%+?56bm)A zR#kWJ?V73~@pIcVF$ACT9w)9Vk>!GK=i`hCoi0&91oimuU0gi+?ZT}fPI1F*Z7SO& z!Od+MiSyIg=%mD%Z?KNLa6#ISs-SMT%^anNeDIyip9m0`DdIMGxb-JimGSSoI79ja z0+xR}mZfOGp{Ax83oYaXeviTmv0hv~Y@Tqzlb2OSCfO&?BZz$ZS@1(V4qak%DEn(T zi39&@X~bH3@E)Q-&`aWNiXeeO@#pU8p_nJxp>;8iL3WJP23CS$^G#=uSmzV~CBvbd|uz7s0WD6OA&Fq&&3|eE0o>1I}WrD@N}n z!Cc$RF_mmoV&HPd3mfh)zd9Qb?LAu|iT$L`7nH|Le*F;y@yIgWmsJx!MtIHQaunhQ z+s;W*u6qNabb=eRJ(aRA`g}hVg_gZsT`Ha0C(|bRoJkgRhd?oeI5mzJIK=D$W0o`8HVVo0a@em-IjGp#FDS9e-*${5!1<*e$@H zS{)qZe{SyoZL8zIvfclz)xr0-`RF|DS*KZUOrJ^6QeK8Djp?&@OVswR-j=G9F4oj3 zgQvmq6cK2Wbq(!~_XU2_@YHcAeb`C8QykTn>4FjSf++8Xg%gI&HyDouTXKhTBs?6` z+ijXWZ`j;$C_i#XUyjr?}e^&FvSj71Z5|C{#bB+Pk_XWepEtRE{1427bE3 z_I?5$<99-Q`e#y5)5BDf#!cer*WGrQTC7=xVRYDc-zt6J(>4qF!|?2;JkPgZz%nQD zY1{tTraq@rxCOICe%i5+mpY^EF zk#Q=&#DMq8isf+tNy7SAIniDl+JbjzZ*~}#br;!133bqPSQEbm$aVL%zMHJ_8)(0^ zTKY)`s&ad2P5z1LB9Tzxm*QUM$d^+7=x?b;dG<5!RB97FfH&{COPXj!2pj3$XwcQ; z+I25#@Lw)=re+htKg#Lpm)CZ%q9IGjNLEQJUmvx|N{Xrk4w1wIC789PQpsJ@*8&%E zDOsd2P3R&MWZ9(k7Meh6Paqua*A-d67e6fV{J9Z_w%NPv2VavaIxaTo$tQ7zF?mCU z*AiH17WvgKdLzBv-f16Cn#cvjh}06b%OsV;SaL!NN#{2d7@p280A7*7DGc-WJEr+U zD^@CE2#Jt!hOfz0r7fVDlDYLP>M}GVD*A$Fxr^~hmMeSZ?J}*c=Q@^k4~47K?8i|P zd1BMa_Hg&t_W-_XsK+OBB=T6TDy(*8>RMz-3=f1%gppus!Q~Dppu>wQd#{$ZXqh(q*bYh4riq)NF<@jr5Z>kN5IT8!$5i`3}@(@RTwGYC?7sMX*mg-n2uBF z{F*}>`K0{2*=#68#8Dhz;>N5z#y~L?Wk%Zy6T#*~^)D6MS=U-Yr-f||n^7b|%I~pC z#KI`!`QlrXm5+n!$KC+Wy!LlXt_?nUk3H`l4`nnAz5%kzUQ?#52CWz~SK}9-J+sLY zdLO?u{{#hBqJ6ziG2Z^lP~6|)E$(DDk5(vSMvGa!qK~y!(2MOkP}*5F`=nP$Bjr&p z)>q7MU#o85PEe`B+yGTyF9(2K{x*2=mC*cM@Wcn&TU5c!&rJd>Ab4D;cxhY_`LLWH z1S5FM(uHPl9r(E6D?3O?5kqtiF`>EaUBY0~h&+YP!#%)ebV-VlaKD+NE;&JLJb8!u z0cCrZVry^YSD|Z@tDQj{34Yx2tI;8a=XzcmCxg}KJ3+Z}poGCai5ZQhV35TLhy*1H zfEtMcekhEcxwqj_?0qOkhxZKlG87yC{XK5^ArCwiu=U4*9SJ&6~)dlDvl zYvzKU(O$*2bh-bCj&KCpfKN78QBm@4Gd+HbM^0x-(+FcGeB^sLokiP>&3$iL;5$x@ z|FRD@iRVo{5aC8HZheR>lF@9T9eM0=_32 zCrisNBu6&WNg^>f=w4AoSv)kN{h}+sxhZvTtgkeb<9!6?a1UhN<34e!EttOf0oiE> z_>m*u+kv0w^rjx?n{Lv|EhFh&)$r|XL7@f!%hbH!nRb7QO?f)w?UOvVh1fLHpgIq)6*whzhyAp~h#XOv)ZO~7mmD^4t9HUIinlwXFs)vr%g~|AF~e<+x+Nmp z1d-X16FR8DZZ)m$cQqyx&2WV4Q(>~hxD|GXJUVlR3Oczxd=2PlVBTQO7Fy~(vRZeE zMF{NrWZTZ*7PL${y>!95u-uFcHF}UycJs-Gt-J2=0|_UNarOHbJshioSWScXkJl|z zAJe!w$dBJCI(Wm-5_K`|*`!}Z4GVoj@nutUdR3crC^(dHG)L^aFM%4@@j-R_?O^yf zsdzXAT6d$$bi3P9z5H`kU(d?YxQf27UwdiYBedN98V+V4fRA8}jXUdp=CaSx{x`3~ z3tUgqZ;*e%TCS*s{|RgPi+TJztOW-8Ym}k@2mQZM&Ocep-)hhQ!dhTR#6M;w`KaEX ztfgt6^KdBDjhzK|?xK)V(0N07p(sH^?O6pLs#rl1yHH?@;eh9w{O#K3$}Wk@WU-*F zBhw4_La=IcGiHBWKA;;EeXdT`4&>gCVj!R4Tv1zzq8uR)q$OYho=O}^Tj?uR~i&#YDJ8qQJ06@{dth3a;(K8sy`igNMfSz1Cr z+?GaQu$qE?b0rL`9oHY9xeTjAC#RDk;M-FD-5OmRc6iUCzAcK|5=cHsP5BURo$CeW(lbo3}fljhzd{Oj7-GD^l60Sl8J9)R{;-Nf^ zI#wrw$Ky*=TYEgL1-E&C`v8`(;G z%44k2JXxmPtytQea7iGVXA>-@o7b&WZpo(<6;yPc@cQcTy|$mjKSl@e zcA67c-XSPh`IIaj6JR&WqcR#eH|2{9&37(9Xsi?!D}Q8fC#EU?AdhiUD;m%5sxITO zuZnY6^0UUiCT-yTS_5pUo;rn7Il~Yp9YG;rzSFH<@Yz#2l>C^F)}@m?R^+u{cgD&3 zIkO4&7J0*GCOipsu|xkRF%yae&vW$I2_`^-Bg0h9%~#E(85Au^|1>+AC3=8Krim$A zM%@K*L#B!LNiI51x9RTCS}kIzy{U7mYfa&sT;z;HwFpW`a}qDPQ9E=)^UFb>c4>c@ zHVv;1s`-x1y+ae8vV?{wXx7AT#WzZi3a4sRTVo$e@PKdfLTho-TAs|v6{<*@Fp9d#GA-HTMl5yf~W)B)4 zr)?a@q0X2gsGC9Cv1~V9E8N<*R^?BPp6&yj#Qb?^K*6yyBzl}E1gGrc0)_%%t}Kq zWBGbIh2QKDY}Fdl_BtuOlA$Pps^N~4j-#-U*1^~tUVLOGfkNK5BB<=A5#)XziXTD6 zY6fFsV^yLIqdFC_i-CphE=g?kS%)W8%(@mS)v9(w#q8_aWCJATub+m&FeXxIWFfrOYxU zrltBmlha@byicDi{>O>x>IQ+)3v9cZu&oH-z?`3%ij}_2-06E?OeS~Ay=k(BG~qm# zDQe$J7beS(5hN(Ex5}i?Gw1We#Z_ndms!R+Q-m!q>C`?Nqa-|TW`;hx%&}5o+w|I0 z=s3ogX58k8uskK)zWy~CwV!Trwa%{BZhO(Fbz9LZw&YIPk#DlvYj3-XJ|0`9Q6=!B zoR}K%U*W!_2?53#8?zk@uz$CI+e2TbT=mJ9ot%Lwg2wc_yVq9M2O`_PFcofnFtOF7 zgzfAfo8NsEKPOgy9+R}SA5&TrkF^wAKeKq}rzaXV%IH0^<}^|_O;VL2!iV#XeA?@* z-L0g**s%YUf8Et$)ZB-x1;cn~O? ziGAd{sHz8G=3tj+`(k-Cwf0}Msw>jyf6}V{YB&E*t3rVOob`hhE)~n4>cN${{@>#2 z|J)ooB_B4Q?T9hWlJ5igapvM&CveUje5FS_Fg~I}#w53wBpkoM5u~-Oh2|Ec z?vkk~n95=$LO6$@)VEAJA|@^j{MAoArLYhFx-5{ogUC(=%6k zmsHnTG;0T>>X=*+$b7uYZ~8}E*_evcYd+Jk zM#c(FiS4<`Hs9*BO6S>&$gkI8Y2OIT(g`hQkg$8vh6D8zmO9@vnTr%+bcM3q>P9}Wbh$l6UUJg_9UlC>;9@_IAM$+a8Bqe%ub1yxp9Vj`U1x>za{ivB;FOJ z^gl_wzmn(QNjw42pT9!a04oTB`2LcyE`5a{zW=W>U8+!j>P(kzL;g#L;_s>X^VR>S zwy!NSx1K=F>k!;-(f2O(-bP}@lF}yjHHHzIPEk8~-yHvA=s?WGDH}NnLq`VN3 zExo%RfkM7dXG>9~5WjwB`ix_|cxRXT2~9f6{evK5MXXRnA`H(xVd3VFJ?L09;D+MD zmW+UV-wJ>~1$XvMKd%RK4{a=y2j#39q=7XRuPG|HJshQ}EnPZaX9Pe2d!>E(FSe9d z&c2X8C3#Dohe1HVFQgq3F!$<)@n}u-avXKdwA^8|+A`~{1bGPHdBgZRjrk^}*aq$F z(@+APw_%ebP8ajhN{W${bi*Mo`cv6AaU$X!L1HXa^2{{-k3RrNEh-nd?~rFO60A8S zQoTAwuRYriVz4%P<}H!+!bmDAwMmX{VR$p%I;h-?d$(sTPw2Nnt|fQVnx^MQ zn~RWjgM3q}SvBtsW&8+tnjpS!2~jPfQ!p36fo^$F+$Q+l33Ey<>365wL}Fj(0u zNJ$~hve4ABDr2O3_r=3fiA|n?w5}z30jZr_lkc-fH8Ym*^!LO!`E$OE6Z*Wo+#s(zURQlUGN35#L?))TMaO&wo8E;m+ux9f zjgvzd&`~IiFT+I~6}AU#jVx>VM$1;1;)+(emgq0>$TBNgdQ;SG7;SB%-R)|mZ~E*Z zvHF_*^ym9ZmO;%%8Buq*dS&UiwpB6>Vpt4_;P%z(4H_8QFNxC~5{n%MzSOa8v1Nt| z_LLK=9q1x6u{hPFSNR&Z6llp*7BpabetOP(;KNKBmD~F833_!1EPTCm1oSYlaU&q$ zNM3C3YsvTXvHaP7rmBb9#5`GeV&FfCd^f!biP~CrR+P1*3+{x71-4Ahu`5 zQ0GyoCh7RG7vY-dP}n%(#{Plrx{}`~t-esA?aC>>AW$#C3owq2P+pS6J>F_ihbTp7 z%hRbKfz4$4TAI+o73MN_^>R-BP{OD{++N$;}T`z-X?Ij+7Zn!fhVNBzkCn$!jP>jo}{LYQ*B(0EUl z7_oz1d(ZOJAX^(SLhRxJx1Q?!qh6TDE@uzy2XB{ti)Zj1F`4R@>=?n&^p3@0;zA{# zmo*(&1qlkoNKJ6y&RT=gvi~2pWLm%1Ne^dBE8=KWcGq7qxZqFO{1=Q53cqwAT)_mP{FmkLmv#IILFi=_{{@5cBl)k! z0)s$dS7U)8_%3}1zwU)Yk+92F|I2xoJ_6{~^AJcr_|?4#q`*(N#4mdh0*Id_`&Ud5 z3cI8{S1{P6%jha5h`5R&ArSc0_>d5U;P2}MeqYBgaOt=B^&Lnkg#YSyAmI?f-`2tT zfBRk}0x9@gEC@lw)w{g(tNnK8NF;*)ANS_!Y-(d?=}asvObphv@v{7xYhVpW$4g88 d&wfWNDoX6)YU=FzXC@*AE+ZsnW0O&n{V(8+*4Y36 literal 0 HcmV?d00001 diff --git a/tests/domain/modelling/test_elmhurst_cascade_pins.py b/tests/domain/modelling/test_elmhurst_cascade_pins.py index e5841e37..a082537e 100644 --- a/tests/domain/modelling/test_elmhurst_cascade_pins.py +++ b/tests/domain/modelling/test_elmhurst_cascade_pins.py @@ -666,6 +666,32 @@ def test_ashp_overlay_reproduces_the_relodged_after_from_a_gas_boiler_instant_hw _assert_overlay_reproduces_after(before, after, option.overlay) +def test_ashp_overlay_reproduces_the_relodged_after_from_a_system_boiler_with_cylinder() -> None: + # Arrange — a mains-gas *regular/system* boiler (SAP code 101, not a combi) + # that already heats its own hot-water cylinder (size 2 / insulation type 2 / + # 80 mm) re-lodged as an ASHP. This exercises the cylinder OVERWRITE path that + # boiler-1/boiler-2 didn't: those added a cylinder where none existed, whereas + # here the overlay must overwrite the existing cylinder to the fixed heat-pump + # cylinder (size 4 / insulation type 1 / 50 mm). The dwelling also goes off + # mains gas (fuel 26 -> 30, code 101 -> index 101413 + category 4, control + # 2113 -> 2210). + before: EpcPropertyData = parse_recommendation_summary( + "ashp_from_system_boiler_with_cylinder_001431_before.pdf" + ) + after: EpcPropertyData = parse_recommendation_summary( + "ashp_from_system_boiler_with_cylinder_001431_after.pdf" + ) + recommendation: Recommendation | None = recommend_heating(before, _AnyProduct()) + assert recommendation is not None + option = next( + o for o in recommendation.options if o.measure_type == "air_source_heat_pump" + ) + + # Act / Assert — the absolute overlay overwrites the existing cylinder and + # reproduces the after exactly. + _assert_overlay_reproduces_after(before, after, option.overlay) + + _BOILER_INSTANT_HW_FUEL_REASON: Final[str] = ( "Blocked on the Elmhurst mapper deriving main_fuel_type for a gas boiler " "lodged with EES code 'BGB' / Main Heating SAP code 102: it currently maps "