From bfd453b67913f7acd62d320d276e5d638c5655b7 Mon Sep 17 00:00:00 2001 From: Stephen Waits Date: Thu, 29 Oct 2026 07:04:22 -0600 Subject: [PATCH] test: the tests P6's gate never reached, under one-record dedup P6's branch paused with its gate interrupted, so five tests that predate plan P6 step 4 (the same bytes filed twice are one attachment, linked to each subject) still encoded the invariant it replaced, and one golden carried counts from before extraction records existed. - store: `blob_dedup_and_hash_verification` expects one attachment row under the first filing's name, not two. The `attach_receipt` spec block's INVARIANT 2/3 now say what P6 built; the stale "each filing is its own attachment" was the one wording left. - store: the power-loss replay copies the blob store too. The books on disk were always journal, database and blobs; verify now reads an extraction's text blob (P6 step 2), so a copy without `blobs/` cannot verify. - store: the refusals property allows `AttachReceipt` and `FileDocument` to journal nothing when the bytes are already on file: the record they return is the record they were. - viewer: each statement the reconciliation helper files has its own bytes (a wrong statement is voided and a new one comes); identical bytes would be one record, and a record is one statement. - viewer: the tall sidebar's shapes golden is re-blessed. The fixture books now carry extraction records, so the Overview attention count, the event count and the verified-file count the sidebar prints moved; no layout changed. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01HS8WZziDnyxunC23MUxrLp --- crates/ledger-gui/tests/attachments.rs | 6 ++- .../tests/goldens/sidenav-1440x920.png | Bin 46172 -> 46380 bytes .../tests/goldens/sidenav-1440x920.shapes | 2 +- crates/ledger-store/src/store.rs | 8 ++-- crates/ledger-store/tests/store.rs | 43 +++++++++++------- 5 files changed, 38 insertions(+), 21 deletions(-) diff --git a/crates/ledger-gui/tests/attachments.rs b/crates/ledger-gui/tests/attachments.rs index cb9ac3b..82d3148 100644 --- a/crates/ledger-gui/tests/attachments.rs +++ b/crates/ledger-gui/tests/attachments.rs @@ -224,12 +224,16 @@ fn reconcile( }; let opening = report(s, month_start.pred_opt().unwrap()); let closing = report(s, through); + // Each call files a new statement (a wrong one is voided and another + // comes), so each has its own bytes: identical bytes would be one + // record (plan P6 step 4), and a record is one statement. + let filing = s.statements(None).unwrap().len() + 1; let (att, _, _) = s .file_document( "statement", &format!("statement-{through}.pdf"), "application/pdf", - format!("statement {through}").as_bytes(), + format!("statement {filing}: {through} for account {account}").as_bytes(), None, ) .unwrap(); diff --git a/crates/ledger-gui/tests/goldens/sidenav-1440x920.png b/crates/ledger-gui/tests/goldens/sidenav-1440x920.png index ae05c578d7ce4d9743f9c02bfabb930102e216d3..dad4a45058273c7702392f072ad24a4a72dadecf 100644 GIT binary patch literal 46380 zcmdSB30PC-x-T9?MWq;(Dpr*2I+R+gsZ~G)l3H!4vTbUuW!E8T)k+m5Ahjf9SSVFg zl&DmxBE;5h*_LW*Ee0gX0+~dHI06b}AV5HbOk`eJ>we#|XWz5WJ;S}{f6o7T&hvCo z60)+^`o8!5P47DT(T8zC6J|`HP$)rbK3M%R_`i-q@&A6@Sn#K&--&w^%I~%{t5<%) z^Bb!4zc}}^vvn3CefY$krs93^+pq2IxcSFFyN(x~T`Mbkd&%r!_c!w089!x5Cq0%i zp3P%F-Ln7jMxr-aHSqqyl54k~p@CH!6Sms5hjc%eT=SUTO?kXA!I%DO*|VQZ@QO*~ zo41Yw@B5ipG&*7H{>Mnj|Ld=Pf*0O$ACFT#Td>cN6MJlX8@pO4$U#m##{Ke#m6B*& ze>BETCB927?E}Y@z9Y#vnjcBLFUdHO(05t;Jg7e;5TEl><2=L{h}H!oCP_K?GK1s^ zAeZuy!KmJ;T72OEc-N(ooG~(&gWJ%E+6$~dKC8&(;HPB0^{6eLm&~+@I8}6?xy_6; zkpIim`Yvy=BcrO&s!MFc8Gh5CVg>P8m~Dlu1^yi##V`&(1HOB{_(qhD*%6OE3BA{x z2(Ah7#V7cgFw4)f5757urB^v`@_I^Cvk7wnT9162-MPOHizWf?-tQRKrrsL(~PM(*cgtznR&;@uo<+{eE!k6>))&Y za;;UUmEg0P?m%=*rJATrSo~oy>ghmk7bvSr7Oy*@_MGPG7fXcWOx8&52lEdxT@O)x zj;gPsTpKQI7npyRnWr=vmn<5ZWuB@X@yDKUVkc&Pd{E}PAnBV-RgT#%?kN_ZKpHv} z14*_IxxTS8JDzMKbSJf*EVQRUHCPWmN9+=q-=GulbH1Su*+fi7Jk~8E{3u$_RO#J? zQCsU1#1E;~A531y*QM4=Oxqyl*2d(jJuYWrQc_-VjPDzUEeAc+74H?^@hW1u_BvSu z7uQHFZ`0jh<(l?fmm_x)L^i6m9CkG_n)(1sC0|M_Sv==*%kg!8*F*b-bk0 zwN28^d|Dm$^&CltE33@;{Jq?vJ(dF|_stKw#Wz%jAx-!GGNZ=!_14}KY~vaJ(R#+r zOe$Y0H*VzU=j~d^f4XFNN93S8)5%LpR^T&+qYCVbswCxXrzX9~{flu4W7x-&%LUtq zRi>E9-KA{%m;9Pl+_Ab#%>J!BWt(u!rq@{L(4uc{M!7GrJbwza+$->N{m3Fx!hA;p zE=@{QZ|&Kt9X@fgCeS)VhCLAK1gfBV$=7#KpW^Z{ z@de_ML~&udCzGXL#k9n`y!Fg6YZNUd%9+l}cQ_v~zqs}!55Lcq@RjI31 zXh_GGo#si?#ere{A;=KbRVnelD>kGP$B*cqyK@xUID{b`;d7{!B?>Iw{7yhXoT6DE z8f6;sliqz;lp0?8vIYy{%*v#Bu5k1nDpN6EMkV&ZBTKTX=jFJM2iM;$=ghC_P&vb` z44Qj+jPGW}>+^U+34+hWmNw#K>*?&6{;`y`okozPHEU>T9VQ+e;f2BJx zpW*^rHz+flIrI%Bm)6nObS3!Frtj^uq|OFflTl<1utjn`Pbo3azMyvBO8Ri}8cLLXdz;^6<0Ly8jN5tK+DHoGDnLK zhq-PmOAq@*`_nCy6s$ec`7h7Ey>C7XE!;FghV7%b6eu($lcykdC##zn_Xg1zWcc7I z*f?{)2+gb&zOUW5DL(A=CFRn+MFq__cDzO%Ddo5y=lNkTAN4BkjZ<8v{w7;lV>t-u6ru%a1u+2^>ttDSS+<%<+!haliRl^F$a-o-JrqQ z*|w>!qbAQ3cuvXXmKD1fV$Zm~#T112w%B@FA{xy!FO;g4&O#$tnU>q27yD*Qu~Vj6 zvbj#=x;>p=S4WI&t>@rf!4%h3EfJ{Em9kHn+_%)-ErJ%SZgX;Fq}Eo=RHOB+eFvqU zBKr2}W52m6|9+Ff2-eT~ahY)pY^AU|UpPC8jRciW!%M@Qe=W9w#WDS~tBdJbfKy*} zF?Dh=L3f>&dD-xCf(r0N^Rx%vzjGX{85`i>{=|9}7K%#2ootTU5?Cq2TWL0vnHH5B1pBjV2z-d&P%9$<#m?4qqtje{y*oZEo91b8g&qT@x6 zcQ=Ejk?)x3x-Ii8YAHhRh!W|b8er&tTxqfCJ#1yoH zVfHEXz4%m(AxU+TEL4tAG=jqQS!lJ5=s;*H%EXRJ`$ACtWxIS={bWRZnnvN~$E?r(+q3V+Gt>r|trTOLf#rE&7;edg>@$ zwAh^JVjk8pR}KkgkIL-8@zj`mLxh<}`SE3dd=D*8-BXaCaXs#%wdPRNn~2q!@K=cX zkKC+%-JZc^h;b|C;}T&qOAA+hZgX;_#gkZ|8hJ}r5 zZK2gd1evF(jT61D_0E^p{<_H$Ve+j6__cc9_;;?Hk-Pe-28f0)S*1OCI`NzEPLwE! z=@`SgJFIjrzV_*eZFzWdS#CPs#L_n{jIz;s3sk)&<(!??5pZ~!>o-|#B=ISSIKioE zLx$w$Z^L7b0({SUx0iX}PDNg)xwmSYkV9&`iLTQK)YjkV-j5Y(uQHr#kL0$nh#qw+ zpb1&)-3gn9Xm4pX-RSMzL?&_-#TrrlI?eO2Fif|(3^cQ*Y|D{2#_^^eI?>H_T{B^f zVds6C?TeW1Q`9+2+>NL!R5cilN{o*6G~W-M){6zMM=X5i9@}{7$ofv6A?Uc_j?DLr zYq2q%@c>$*exOlZ7MKj^UHD(l;A4(qW10T&pt}UcLMfU-rS?n!vuCBSIROdQx`(ul zjY=%u_8Ql7n4)MCpbMztJ6W#tGW<1_tpm-^7r68L)@eq9_!rZ~`EsLP!h4-#c5~`7 zlzr>8*oiX7(U0#uE2L&Ht;TIAzdJ}Z{VoL)5Xufc<*qtvv5gu!4 zpkM=1Y`JXYuB?*o>z0i&ACryjQ#@FJj^bE)IrWEZA%4qN#EkkpNsy!Ub}@ULVkZ?a z5M&O(OyNGg^zAqEvBc1`@kLlRayRGM4W=#7b&~4&ieXAqeYuTjwj+8s$W4l+c=M!ac^Cx z>8Aqj4lY8=?A_Op74~(ovtpnx^ht--C}uh?F>7($kLI<|s(f$fncUZCx@zW#!F7T| z>}8wmoPtp9tpi|LM*YbZ#p^ct7E6e$S|hX3fDAhM@bAPlD*sLvfXT>ShtuKb@}h#7 zTr?1SKX=NrL#rBnXB7t6F=>0Q+cVs~5Wvqx(*`dQksndyimy)O`T z-B_O1w=_{*Kzj_HhPpFr5!6 zzcy^->QZ`OiL=xDlz9`1)DoW>UKqtV^XmR52kbH#nl z%>?*oO!r34sRH)%^)o9RGayz=`o%#l``RSxbW>S9YXH1CUJ?P$gs5tc>N-N!RFc2% zi_(5Q=f9im|0gwqfA!byq8nEKs#G=$BQLeSyBY`+M97z~J$&?+t8LFsro3}l^m=!C z`xDI+POd^fUj6Hh8?~3S=IluWUyAdj??Kh%=;+O>M-yX56KgvAblcXnV(^zAJZv*Q-9KcQRdWYzlNFeXvUQ8O`*DYdyetjTfi;U4Mo+JEimot_Y+5p4w= zQ-udI&ktT(-f$>K&`Z?ai%F?|Y0~W#1O#+6knSD0tW=N;llF9O(V;aP5Lwn5gx!8l5+V2;a_DG7pp=(!>w96_|YYIep^vPSM$l;pO$sQS9m@^l78ni&*8tt`Ol;aP>63s~Fi{U%y;D z(e{~IAgl@bHEb+{$kRx(HT(Q0cMp3Pndfs{3!k%B=&GVP^=)E2F4bG;TwJh!OPXgi zXJo%tT`a7rNaOw9y_M0ER;HDR2aRCGE9&EfejHZ=tr8wL9I29<%fh?v3N<#jbOetX zIU9OpQo1(%0Ly)w`-Ss?9~0jzjc?ni8TK)=cI_74FBVUtJN_161L|8i;K9UF(CH+) zG^Sp(Tp-SOdfVyxpF{Sr13BhTWtG27+hglg>8`R5e73N?uUvFD6kWRcMlQ{BquBg* zl(aj7mKw_{OV8(sItzdKsfRhK3i+)~x}yP}M#y35jyu`r3YBKM$rvpdin3^l?ljjocT_+rl~gG+bM9&j@lwP#`SbdR!sr@?eLPB z+9%y>SQUkU)lPI!CGDNxr*%aXQ+Tc{?heKvJl%LfK#W|5cS>}p0Kv-1cYwX~UUHe^ zW$j2UEqiXV(hxS+vKz>Alo(gvAcc25jxjp3jaQpLTE`7@esV2C@0o#VHVo^l#V+Tr zNcE7jXdjj4s76^g_{pr;ih2p=-r(*<$_lxzp?W`a`ylIHn~pjC46%ddDr9z#M{RL2 zO!AM~!P+qUB+BqD<4pCCn(&MVqLFe%ThVgAN~zBt%}T zyu0a*9jbvO^9il*p~7CE7)t@)18GhZ^k*gO4kxkFz(TZaWmo_$dD&x>6PkdayLHdwL7=nfBlXzOI- zmuW$j%0&7oz=M1Ris2IFn=JG3@+zez{zEw-KFAiPG|dr0(mcW`E_g1&U=_?{@UIKxqiI9m(!& zN>V+D_cMne-qmc&mtoacf}^(x`bGn(xTjcKwUKaZhNjY58a2Z69OQOkj9V3tg#2`9=q(aQqxOZ`fXYGPJwZzKcG{Rq5s)mjp0g%@-F`-YY?=PLr28o9EXI;zhS$iq z6%<|#@?3lSc(7COBm|jDAX}@o=b^f34H-A;D!Cwt$?XgXu`@RBr z(4*({Oy%?~R=7hIZ*08^Ibr!TPV1hZYtY96#e+G#toqIxTI>*8<&;QAzjMP)ecy~; z*gG66n7jt6a*M%U^epL2>Dsl&)`6H4I!zM1n|89MUVJaw4~X$ZJ_WlkCHyI1EvanT z$SD&BjyUXXdAR=!EU$rJXuzJ$zVn8hu+02&_fmR#gHeL!}@?#P9a&Z3GtS;>mCsk?#tK}?{a7B5n@ zK-IK;nRrhQ$34Uxqic;G)`KGVN+!p1m8t(3d9r)AuxU^^+8M2kFkWIi=eY*Z@-tGb zq}aAt=A6=L8fm>C$>_@06%&1*imkGumcbb7SW5Ep^4f6a{dj-#ahq4zF2P^p`a~`+3E5_tHf-+yxwL-AUe+DE=(XKs@6_;~u;(1j$2ky5a+bw~gXCf5$6{ zAI>srZiE1F4GR_zx8WxPZk1K2%LDV5iLBG*T0X6MSt?2;ewXzHGJE~`_tv%TYYb{j zX;T{AH%-KHu;$s{=TvwvRHPhz7%m}O=<#6soowW3g6)vhdLX9%r=;@U!%1a>8XHua zX2vx}P!KFcGH1!rapGP%{&FT0&#AY-HiGLX136`joxXWpL$t`teXFF(W-HSAHY@&Q zvd5y$X`5LMyVv4bKg20(;tP;NP^S>6hxP${`S9_i;;6)LUFp~L&-Lf$HwW$;8ZdN< z>kF}@PT|8706N=|N8jyCUw*Pr`({u`zW;{v#Ax!T?Yq|k0QMQH0d377|Fo_Fg1@!r z)~r5x4%%2_H=MV{`P*hRCH){ZJU6#Vkjj)-~0eE_e2sw0{DZspF_bm$T$Ghg(cnt#Qu>!B)msbC9$=>xzdI00mE2Syc z_Gu;dN(~-Hy#EP)Vi8+W+2WW8-T^>05b;xY?|2QK{rc7S9^d}O^u2n8!!fbFLu=3; zxQkYU-wMbM0NDG+V(I#%S7$>!p7VCzuHC=1CN0{sjJ4BhTHULizoh)@fhqZ<-+AW$ zo6-5Nl9+$6Re!K@o`1=4T;@rf!VrqeBtVXkf(lf6ezbCSBqkP6eZNw5X9K#Lr1$`b zV#aAMO{e2{hr5pJigY*}Zs#(7Q&U!$FmP)dytESE9hSw2;0c&O)SoS)P(|&l zTrP?46F@7Nlg<#MxW1d*s!&DMU+3UF-*I-P(WUMIsd`W`oMgSpb)Hq+Em6$YIu>ecHxyZy;t>qbcE)#4 z_S6+4&y2rS2*!iWa*5fyfnhiBY;xXq@n95^4^|NE$X(<|iMxy%KAXa;PtVw_u@q{~ zhU^5_3jWks&FIynZ>6UkxK=;18SM^D1SJ-<@je_`}wF=k{^-4`W&s~G*4{9dRr|LPB)uVS1i&2JuyR9c2_kUkmVF}V)Qh);3c6c$hk@4PL7DtfOC!6NZh4=M% z(zV!XhhrKAkYNgTn~qJ8@Sk6DgO7MSS!s_H>y6@b;W7F(o!s&*`%+TI0jB+F(oTS7l+JHU*F^wLk>dJ^>)t)=T&J}@ z?lh6osWwW~m;f$>U4Y%85~GP3>7C+mQm|9|p40aYJP30N} z&I+^a=+iej_S0NCrj6tvb~S5l>UYyl}@3P`a;qas?&)-Nk`_>syC}17i=qF zdcdCC$nKq5u9X8(&J0ysMeko&st}f-k?q{Zr_8QgQmv zCPx0_Li%5sPx<3$Zx8{(p*G}|t!=4j@4i|o@q}Z|Vwx{u0!1sReNY=+clC_SbC;_- zq3yBr?`0+T85n&VU`~Yc30@%bMTy5;et8&{aGgZY8EjyQ-(Y$lqLnQzk=&6wnL0_) zSMr-&UauxP={Bgdd(UoBlr^$^HEQc$!x`r~ic+IP3j!&(t{IY0ywTOi^-RRU&dmk) z6ey%zho0t172XLDErpBz=-#;&ZtB;(8nT*N>BM2W=eA6D+a0Lzl%NxcFp<`hjhO4P z#~j~6O3CA6fkry);Vb`!QOzr4-t&s;Xce#&fJPgwde~v5>36Y^v2@=9x?g3sxIMsp zF+kfiTpQmhY+Q$Rs_`kXZr&|XdKTEua_u`oUrqh`>lzt;muoFSt)U99K($2X*bRaR zo0awg8?3qHccpp0pjED-IVP#xp=hDR`>kZOE{oaYEBktvgoW3rp<;Jt93H6jBq=7y z@ENk({>qj?)oUhmF1K1jw6koRQFjFvSMKf${cKTwCpR%MTij~fs&)IYDibkT!mFv~ zfsGm7B1J2mVl_3jV@a~{sGruF(cwPd97af}^ z1(uS20g4R*1c3OzLA=K%g4o$|QH6Z;=aB`LP!#V_{NvXtKrPXf-&dbQO{pp;mEeDukBOb1Kg<_~fIge>EFsr$Eohb#?y6oD%D6voOmi&&& z)mp-5;H~dU16nmOg7_EX7*_q3vXoO`fz#hLOZ%^CJk72Ksp~Vbp$#b@z|Bh(pK5Ln zV(9Z2=Sii%n$hjQT;zEfHK(CXIooE&)ur}Cunil_EkA{lckm#wnr8Werj`*;xfbUA zJn6{GVx1TH_F*v#q=0ey|GRP#Ghf&W z(*9W*%U;(*rZ2E4b#Si&n0zlq*MGxX3DHzOVrj#Y;C>$}ZKIec$XxpreM!n09LtxS zMju=j!10i~ewN|e!klH{fSP)`C{4z+$jFc_%aBtgIJX>hgezd3ooEwoq>u*~0;tCJ z|D_CJIifCtrMHX5?eR84|6?hXOE(E2>Sz&m;PP=82}wm z%?wR0E284}oQ9Es4Z!=<5?uz@O|CDQ!X7xoDRO3*(haa|^DEMM3)aq$!Bbfvh-c|& z_%lUgy{b9hhGez<)Oxozr$R_L@wX%h7F_-e)c~vK12a*xK>1*S8Gw&s(8`3tn>QB- zbpcB1puLhx=p;Y^G1n_x@iAxH1irRDaYx7I7#9$EFEOooo#~F5T-W=u`fc0&D#@+? zw>aiOV32C{^~m#LXpzydA57H$5U&Dk@QTdwOmg{x^B~5 z`#>NG0zcvX5aAg0UWOFl7~c|tyop){(V)z^D$wMPWo50xbxz`l%;%vS z_j8=3u0vAd%a#kvo8Ni~gYNZBK4vKTVCN`v8{$hBR<|Jw5F%aTuLB;q%za+w{g~bN zCFdA)r;Vi?V+8MZa8XS<(nh72^AUHH;$bv8tDqpXlV87eS>C1UImxJRVo^s4T37N` zfnC^=D0;P`BA?Q~yLT#Qpx0ew!dDJEAr!}2xCDbD5rT%-n;?2m>`W&zL%E8uOq%Ne zO@G^+gV{l^hba0cSQBG_6fCoxmrbZ#lB_%-BkE)qzq=jy_PP@i*RK*#q4SDHUJm=p z*}ceQXPD}mqqKJ%j!2M`s@>M&1Lkf(KsM#i8@88jNwqacjWP$K<^?f**Cl-rnv~gF zJHR#Zepv*91%4;beOm*A0IAKTiR~KAsLut0f+L?Zq?QD5vYlN1?>!Z$&C6dO^K89D z*WZ7nt1BKVb^U7InFP_i4=*fh@rh08#7S=#pb*!}9WzKL{h(anm3P}v-IDUbmI^ln z$1f-$-T}Ie;}i`a|3~AK>iP<}-5VG~hGj7^-SYwLl6QR*Aaie$)%ibByrV9&M=}7+ zIVa~=$aVAB-Ly;fz_}n^iCnw{L@VB83A^+7Pd7+gqS3|<|4FY> z-p)e;*R;okhf)refp`Vh-WLpLCawz1E)oc=T92LZADJH;c}$Z56fceO!{Kd18>@-xO$*p@Tw zTxbhFk-EnKAnv0ewl*YgH3j&U_T9~pDW;)-FnbjyK}vT`Dn1W>+4jy(UHkP}!_KuJ zNcDSbSqeUzIK3SdZ-@rOgK}{`9mD8G2xOM=t)t~J{X5~8>}5WQRv0?W#lY&0F@W1C z?Y;t_h|HTIs}(4n71px)*i&u%t~L;E<*!$|H>(y)M9;Uoz<1;C;WdD4!$d08ugqEG z1%Js%)wtGaGQm>TJYT3e65uJ+x^s&pbExG zgpcO%03K=b2b3G1%ysl}n~KGrdXN`3muyMzDpfoyQB6TS;YdqP_jS5sy2hr|9Ma-f zwFa1Uh~htts*Ft6?x!aBUSUWR{nIwGMVN`#S%f9(3ONg zli_C*gqQP;XV~tkWww@zWe7fs{xg?oHR*#H1DAM>@{F{#;}@|zdy`bpLj7ED_b~=G zFb>OwB~i7J$VeOlbd0+T_MuYziWCH#b6~_oe}>aLb$R-546K+{Z@ompnpnP3CZEbw zS1){?ZCN8VzY=qAcWF1=#%>)|#MBHFYI9R(lBpJzw?dp5QcD9l5A*l+jAIG>#|b@< zoqe`2LFko>sD@?0Z4CS$%&|b&Nm&)Dn#i@?KTxNX3n+ugfq`T;NRP!>a73~ZUMNeqInu@q2^oSLyrA1rzrr0sR3uD zQ>u_T9l}oli+Pja%E*1L;UaVB3pkgpTN%1cU6zm}HPF3ZJktBDDyX94P0nJ;`|Ozqe! zPXll&#WOM=j0nKy(+sz18v1_$51e8Xm2Xc#ra~wc(_bZ@G+FVyQMpv>YUb2ti_P^Z zQ2uZjm2ibx;FH=~yzX zgZPTv;KR;sV8^YUPwFA*ovGn)d)CA&AH`GNlB(U`vOHhyyzvStEYJuGjPrvG8H`{# z^J*HEosH%VOm`XpMfh7B*BDMqMl6{^qk9g@D7ra}XRDTpvFRlLguBo3G2J&sp$}Dt zCHTy?|3#-G|%>GE<~FYIe<=^M(J1} z)9bd%uu+q-1x7 zhv!jlZQ=uEhp#eLASb;d@ZBfD8eH$Y&~RTrS*{faPyndvOs(IFwQ})A6vP{as0)E| zxRKzlchmowxbq4~Cvgsv%UH}pJWIe>3cz^RKxF6UO*yGPh4nvbI0}2-^05Ba&0ND5 zRKe>MNyei&%T}z|mhPP5^j>0mmauy_a*hUv=cb`3$X^={xvy%mtq=)*MJ1lTiM)%|)vJa>UJZNwnG-V;5PL%3RFHCW9i@49O`JHf+@!hz zHyM06*GqE!kfM}R-ooW+=L2p5fS!hT@+n2Gns7^dh+t`b?obL4-zc(?H)QW5od7Dv z?K!+tiXITX1NS2w3d&>Q^qnFqMLY}`=B5QwuUp!Zq;!{ z!X<$UJqN$c@z;TXo@Dyr11#T�X0@zc^hS&9;M^#UyT^J%^U3<1tW&=k;6)^Q){- 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

jVTN06Q41%gu&U^PQN3$+L_>%sd% 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 diff --git a/crates/ledger-gui/tests/goldens/sidenav-1440x920.shapes b/crates/ledger-gui/tests/goldens/sidenav-1440x920.shapes index cb1dc9c..c5220a6 100644 --- a/crates/ledger-gui/tests/goldens/sidenav-1440x920.shapes +++ b/crates/ledger-gui/tests/goldens/sidenav-1440x920.shapes @@ -1 +1 @@ -5ccd68030ec4a54b +b4c03adfe9dc03e6 diff --git a/crates/ledger-store/src/store.rs b/crates/ledger-store/src/store.rs index e7e1565..f618bfa 100644 --- a/crates/ledger-store/src/store.rs +++ b/crates/ledger-store/src/store.rs @@ -4488,9 +4488,11 @@ impl Store { /// INVARIANTS: /// 1. The bytes MUST be stored under their SHA-256 and read back /// identical, verified against it. - /// 2. The same bytes filed twice MUST share one stored file, and the - /// second filing MUST say deduplicated. - /// 3. Each filing MUST be its own attachment, journaled + /// 2. The same bytes filed twice MUST be one record (plan P6 step 4): + /// the second filing returns the first's id, says deduplicated, + /// and links that record to the new subject (`attachment.linked`) + /// when it isn't linked there yet. + /// 3. The first filing of bytes MUST be journaled /// (`receipt.attached`), with its name, type, and description. /// SCENARIOS: /// 1. IF `entry_id` names no entry: SHOULD refuse diff --git a/crates/ledger-store/tests/store.rs b/crates/ledger-store/tests/store.rs index d89f8ae..20e2bff 100644 --- a/crates/ledger-store/tests/store.rs +++ b/crates/ledger-store/tests/store.rs @@ -235,6 +235,19 @@ fn damage_before_the_last_newline_still_refuses_to_open() { assert_eq!(std::fs::read(&journal).unwrap(), raw); } +/// Every file and directory under `from`, under `to`. +fn copy_tree(from: &std::path::Path, to: &std::path::Path) { + std::fs::create_dir_all(to).unwrap(); + for e in std::fs::read_dir(from).unwrap() { + let e = e.unwrap(); + if e.file_type().unwrap().is_dir() { + copy_tree(&e.path(), &to.join(e.file_name())); + } else { + std::fs::copy(e.path(), to.join(e.file_name())).unwrap(); + } + } +} + /// Power loss at any byte of the last append: whatever prefix reached the /// disk, the books open with exactly what was acknowledged before it. #[test] @@ -246,14 +259,11 @@ fn power_loss_at_any_byte_of_the_last_append_is_recovered() { let before = ledger_core::reports::snapshot(store.ledger()).unwrap(); drop(store); // The books as they were on disk before the last append (the database - // is never ahead of the journal: the line is written first). + // is never ahead of the journal: the line is written first), blobs + // included: verify reads the receipt's extracted text from them (plan + // P6 step 2). let pre = test_dir("tornevery-pre"); - for e in std::fs::read_dir(&dir).unwrap() { - let e = e.unwrap(); - if e.file_type().unwrap().is_file() { - std::fs::copy(e.path(), pre.join(e.file_name())).unwrap(); - } - } + copy_tree(&dir, &pre); let mut store = Store::open(&dir).unwrap(); store.add_customer("Acme").unwrap(); drop(store); @@ -262,12 +272,7 @@ fn power_loss_at_any_byte_of_the_last_append_is_recovered() { assert_eq!(last.last(), Some(&b'\n')); for cut in 1..last.len() { let case = test_dir(&format!("tornevery-{cut}")); - for e in std::fs::read_dir(&pre).unwrap() { - let e = e.unwrap(); - if e.file_type().unwrap().is_file() { - std::fs::copy(e.path(), case.join(e.file_name())).unwrap(); - } - } + copy_tree(&pre, &case); let mut torn = before_bytes.clone(); torn.extend_from_slice(&last[..cut]); std::fs::write(case.join(ledger_store::JOURNAL_FILE), &torn).unwrap(); @@ -326,9 +331,12 @@ fn blob_dedup_and_hash_verification() { assert!(!dedup1); assert!(dedup2); assert_eq!(sha1, sha2); - // Only one blob row; two attachment rows. + // One blob row and one attachment row: the same bytes filed twice are + // one record (plan P6 step 4), under the first filing's name. assert_eq!(store.verify_blobs().unwrap(), 1); - assert_eq!(store.list_attachments(None).unwrap().len(), 2); + let records = store.list_attachments(None).unwrap(); + assert_eq!(records.len(), 1); + assert_eq!(records[0].file_name, "w2.pdf"); // Corrupt the blob file on disk → the next read detects it. let shard = dir @@ -1691,7 +1699,8 @@ mod refusals { // The converse law: an accepted command is on the record, or // changed nothing at all (a batch run with nothing due; a // setting changed to the value it has; a 1099 decision, W-9 - // flag or payment method already so). + // flag or payment method already so; bytes already on file, + // which are the record they were, plan P6 step 4). if result.is_ok() { let after = std::fs::read_to_string(&journal).unwrap(); if after.len() == before.len() { @@ -1711,6 +1720,8 @@ mod refusals { | Op::SetVendor1099(..) | Op::SetW9Flag(..) | Op::SetEntryInstrument(..) + | Op::AttachReceipt(..) + | Op::FileDocument(..) ), "accepted {:?} but journaled nothing", op